نحوه بارگذاری یک صفحهگسترده در C++
Aspose.Cells FOSS for C++ به شما امکان میدهد صفحات گسترده XLSX موجود را بدون نیاز به Microsoft Excel بارگذاری و بخوانید. این راهنما قدم به قدم بارگذاری یک کتاب کار، دسترسی به ورقهای کاری، و خواندن مقادیر سلولها را با استفاده از کلاسهای Workbook، Worksheet و Cell شرح میدهد.
راهنمای گام به گام
مرحله ۱: تنظیم ساخت
پکیج Aspose.Cells FOSS for C++ را به پروژه CMake خود اضافه کنید:
cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)مرحله ۲: گنجاندن هدرهای مورد نیاز
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/WorksheetCollection.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;مرحله ۳: بارگذاری کتاب کار
مسیر فایل را به سازنده Workbook بدهید تا یک فایل XLSX موجود را بارگذاری کنید:
int main() {
Workbook workbook("input.xlsx");
// workbook is now loaded and ready to use
return 0;
}مرحله ۴: دسترسی به یک Worksheet
از Workbook::GetWorksheets() برای بازیابی مجموعهٔ worksheets استفاده کنید، سپس با اندیس دسترسی پیدا کنید:
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();مرحله ۵: خواندن مقادیر سلولها
سلولها را با رشتهٔ آدرس دسترسی پیدا کنید و مقادیرشان را بخوانید:
std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();مرحله ۶: ذخیرهٔ هر تغییری
پس از اعمال تغییرات، دوباره به یک فایل ذخیره کنید:
workbook.Save("output.xlsx");
workbook.Dispose();مشکلات رایج و راهحلها
خطای فایل یافت نشد هنگام بارگذاری اطمینان حاصل کنید مسیر فایل صحیح است و فایل موجود میباشد. اگر پوشه کاری نامشخص است از مسیر مطلق استفاده کنید.
رشتهٔ خالی برای یک سلول عددی بازگردانده میشود استفاده کنید GetValue().AsDouble() بهجای GetStringValue() — GetStringValue() رشتهٔ خالی را برای سلولهایی که حاوی عدد هستند نه متن، بازمیگرداند.
دفتر کار بارگذاری میشود اما سلولها خالی به نظر میرسند اطمینان حاصل کنید فایل XLSX رمزگذاری نشده باشد. Aspose.Cells FOSS برای C++ از فایلهای رمزگذاریشده پشتیبانی نمیکند.
سلول فرمول مقدار غیرمنتظرهای را برمیگرداند سلولهای فرمول رشته فرمول را ذخیره میکنند، نه مقدار محاسبهشده. فرمول توسط اکسل زمانی که فایل باز میشود ارزیابی میشود. از GetFormula() برای بازیابی متن فرمول.
حافظه پس از پردازش آزاد نمیشود Call workbook.Dispose() پس از اتمام تمام عملیات برای آزادسازی منابع غیرمدیریتشده.
سوالات متداول
آیا میتوانم چندین برگه کاری را از یک فایل بارگذاری کنم؟
بله. از Workbook::GetWorksheets() برای دسترسی به تمام شیتها و تکرار بر اساس ایندکس استفاده کنید. از sheet.GetName() برای شناسایی هر شیت بر اساس نام فراخوانی کنید.
آیا میتوانم فایلهای XLSX با چندین شیت را بارگذاری کنم و از شیت خاصی بخوانم؟
بله. شیتها را بر اساس ایندکس صفر-مبنا دسترسی کنید: workbook.GetWorksheets()[1] شیت دوم را برمیگرداند.
آیا بارگذاری یک فایل باعث بازمحاسبه فرمولها میشود؟
نه. کتابخانه مقادیر سلولها و رشتههای فرمول را همانطور که در فایل XLSX ذخیره شدهاند، بارگذاری میکند. بازمحاسبه فرمولها در اکسل یا یک خواننده سازگار هنگام باز کردن فایل انجام میشود.
اگر مسیر فایل شامل کاراکترهای یونیکد باشد چه اتفاقی میافتد؟
مسیر را بهعنوان std::string با رمزگذاری صحیح برای پلتفرم خود عبور دهید. مسیرهای UTF-8 در لینوکس و macOS پشتیبانی میشوند. در ویندوز، اطمینان حاصل کنید که رمزگذاری مسیر با تنظیمات محلی سیستم مطابقت داشته باشد.
آیا بارگذاری همزمان چندین بار یک فایل بهصورت همزمان ایمن است؟
کتابخانه برای دسترسی همزمان به همان نمونه Workbook ایمن نیست. برای هر رشته، نمونههای جداگانه Workbook را بارگذاری کنید.