ایجاد فایل های اکسل در C++

قبلاً، یک پست در مورد نحوه پیاده‌سازی ویژگی‌های اتوماسیون اکسل و ایجاد فایل‌های اکسل XLS/XLSX از ابتدا با استفاده از C# نوشته‌ام. امروز، من به شما نشان خواهم داد که چگونه می توانید کتاب های کار اکسل ایجاد کنید، داده ها را در کاربرگ های اکسل وارد کنید، فرمول ها را محاسبه کنید و نمودارها و جداول را در کاربرگ ها با استفاده از C++ ایجاد کنید. همه ویژگی‌های اتوماسیون صفحه‌گسترده توسط C++ Excel API - Aspose.Cells for C++ ارائه می‌شوند.

Aspose.Cells for C++ یک کتابخانه بومی C++ است که به شما امکان می دهد بدون نیاز به Microsoft Excel اسناد صفحه گسترده را ایجاد، بخوانید، تجزیه و تبدیل کنید. این مجموعه کاملی از ویژگی‌های اتوماسیون اکسل را فراهم می‌کند که می‌توان از آنها برای تولید و دستکاری صفحات گسترده XLS/XLSX استفاده کرد. در این مقاله، ویژگی های زیر را برای ایجاد فایل های Excel XLS/XLSX از ابتدا پوشش خواهیم داد.

C++ Excel Spreadsheet API - نصب

بسته کامل فایل های کتابخانه Aspose.Cells برای C++ را می توانید از قسمت Downloads دانلود کنید. این بسته همچنین شامل یک نمونه برنامه کاربردی کنسول آماده اجرا می باشد.

فایل های اکسل (XLS/XLSX) را با استفاده از C++ ایجاد کنید

اجازه دهید ابتدا یک کتاب کار ساده اکسل XLSX از ابتدا ایجاد کنیم. یک کتاب کار از یک یا چند کاربرگ تشکیل شده است و هر کاربرگ شامل داده ها به صورت سطر و ستون است. بنابراین، برای ایجاد یک صفحه گسترده اکسل، ابتدا باید یک کتاب کار ایجاد کنید و سپس کاربرگ ها را در آن اضافه کنید. در زیر مراحل ایجاد یک فایل اکسل با استفاده از Aspose.Cells برای C++ آمده است.

  • یک شی از کلاس IWorkbook ایجاد کنید.
  • اولین کاربرگ (ایجاد شده به طور پیش فرض) کتاب کار را در یک شی IWorksheet از IWorksheetCollection دریافت کنید.
  • با استفاده از روش IWorksheet->GetICells() به سلول های کاربرگ به یک شی ICells دسترسی پیدا کنید.
  • با استفاده از روش ICElls->GetObjectByIndex() با مشخص کردن فهرست سطر و ستون، به سلول مورد نظر کاربرگ در یک شی ICEll دسترسی پیدا کنید.
  • با استفاده از روش ICEll->PutValue() مقدار را به سلول اضافه کنید.
  • با استفاده از روش IWorkbook->Save() کتاب کار را به عنوان فایل xlsx. ذخیره کنید.

نمونه کد زیر نحوه ایجاد یک فایل اکسل XLSX با استفاده از C++ را نشان می دهد.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

کتاب کار اکسل

تصویر زیر اسکرین شات از کتاب کار اکسل است که به تازگی ایجاد کرده ایم.

Excel XLSX را در C++ ایجاد کنید

با استفاده از C++ داده ها را به کاربرگ اکسل اضافه کنید

در مثال قبلی، نحوه ایجاد یک فایل اکسل ساده و درج مقدار در یک سلول خاص با استفاده از فهرست سطر و ستون را دیدیم. با این حال، اغلب سلول‌ها در کاربرگ‌های اکسل با استفاده از حروف ستون و اعداد ردیف مانند A1، A2، B1، و غیره شناسایی می‌شوند. بنابراین بیایید به مثال نحوه درج داده‌ها در کاربرگ با استفاده از نام سلول‌ها نگاه کنیم. این فرآیند فقط در افزودن ارزش به سلول متفاوت است و سایر مراحل ایجاد کتاب کار و کاربرگ اکسل یکسان است.

نمونه کد زیر نحوه ایجاد یک کتاب کار Excel XLSX و درج داده ها را با استفاده از C++ در آن نشان می دهد.

//مسیر خروجی فایل اکسل
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//خواندن فایل اکسل ورودی
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//دسترسی به کاربرگ دوم در فایل اکسل
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//اضافه کردن یک مقدار رشته به سلول
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//اضافه کردن یک مقدار دو برابر به سلول
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//اضافه کردن یک مقدار صحیح به سلول
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//افزودن یک مقدار بولی به سلول
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//تنظیم فرمت نمایش تاریخ
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//کتاب کار را ذخیره کنید
workbook->Save(outputData);

فرمول های کتاب کار را با استفاده از C++ محاسبه کنید

تنظیم فرمول ها در کتاب های کار اکسل یک ویژگی شگفت انگیز برای انجام محاسبات روی داده ها است. انجام محاسبات پیچیده بر روی داده ها را به طور موثر و کارآمد بسیار آسان تر می کند. در زیر مراحل تنظیم و محاسبه فرمول ها در کاربرگ های اکسل آمده است.

  • یک شی از کلاس IWorkbook ایجاد کنید.
  • کاربرگ را در یک شی IWorksheet از IWorksheetCollection دریافت کنید.
  • از کلاس ICell برای دسترسی به سلولی که می‌خواهید فرمول را روی آن اعمال کنید، استفاده کنید.
  • با استفاده از روش ICEll->SetFormula() فرمول را برای سلول تنظیم کنید.
  • فرمول را با استفاده از روش IWorkbook->CalculateFormula() محاسبه کنید.
  • کتاب کار را با استفاده از روش IWorkbook->Save() ذخیره کنید.

نمونه کد زیر نحوه اضافه کردن و محاسبه فرمول ها را در یک کتاب کار Excel XLSX با استفاده از C++ نشان می دهد.

//یک کتاب کار جدید ایجاد کنید
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//اولین کاربرگ را دریافت کنید که به طور پیش فرض ایجاد شده است
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//اضافه کردن یک مقدار به سلول "A1".
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//اضافه کردن یک مقدار به سلول "A2".
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//افزودن یک مقدار به سلول "A3".
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//افزودن فرمول SUM به سلول "A4".
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//محاسبه نتایج فرمول ها
wb->CalculateFormula();

//مقدار محاسبه شده سلول "A4" را دریافت کنید و آن را روی کنسول چاپ کنید
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

جداول را در کاربرگ اکسل با استفاده از C++ ایجاد کنید

جداول در کاربرگ های اکسل برای سازماندهی گروهی از داده های واقع در محدوده ای از سلول ها استفاده می شود. جداول همچنین به شما کمک می کند تا انواع مختلف لیست ها را در کاربرگ ها نگهداری کنید. در زیر مراحل ایجاد جدول در کاربرگ اکسل آمده است.

  • با استفاده از کلاس IWorkbook یک کتاب کار اکسل جدید ایجاد کنید.
  • به کاربرگ پیش‌فرض در شیء IWorksheet دسترسی پیدا کنید یا یک کاربرگ جدید اضافه کنید.
  • مقدار/داده را به همان روشی که در مثال قبلی انجام دادیم در سلول ها وارد کنید.
  • با استفاده از روش IWorksheet->GetIListObjects()->Add()، محدوده سلول ها را به مجموعه Lists از کاربرگ اضافه کنید.
  • لیست را در شیء IListObject دریافت کنید.
  • با استفاده از روش IListObject->SetTableStyleType() استایل را روی جدول اعمال کنید.
  • کتاب کار را به صورت فایل xlsx. ذخیره کنید.

نمونه کد زیر نحوه ایجاد جدول در فایل اکسل XLSX با استفاده از C++ را نشان می دهد.

// نمونه سازی یک شی Workbook
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// به دست آوردن مرجع کاربرگ پیش فرض (اول).
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// به دست آوردن مجموعه سلول های کاربرگ
intrusive_ptr<ICells> cells = worksheet->GetICells();

// تنظیم مقدار سلول ها
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// افزودن یک List Object جدید به کاربرگ
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// افزودن سبک پیش فرض به جدول
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// نمایش مجموع
listObject->SetShowTotals(true);

// ذخیره فایل اکسل
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

کتاب کار اکسل با جدول

ایجاد جدول در اکسل در ++C

ایجاد نمودار در صفحه گسترده اکسل با استفاده از ++C

نمودارها در صفحات گسترده اکسل برای تجسم داده ها با استفاده از انواع مختلف اشیاء گرافیکی استفاده می شوند. آنها به ما بینش و درک سریعی از داده ها می دهند، به ویژه زمانی که داده ها بزرگ هستند. Aspose.Cells برای C++ از انواع نمودارها از جمله Sunburst، Treemap، Histogram، Pyramid، Bubble، Line و [بسیاری دیگر] پشتیبانی می کند25. در زیر مراحل ایجاد نمودار در کتاب کار اکسل با استفاده از Aspose.Cells برای C++ آمده است.

  • یک کتاب کار اکسل جدید ایجاد کنید.
  • به کاربرگ مورد نظر در شیء IWorksheet دسترسی پیدا کنید.
  • با استفاده از روش IWorksheet->GetICharts()->Add() با عبور از نوع نمودار، نمودار جدیدی به کاربرگ اضافه کنید.
  • به نمودار جدید اضافه شده در شیء IChart دسترسی پیدا کنید.
  • منبع داده را برای نمودار با استفاده از روش IChart->GetNISeries()->Add() تنظیم کنید.
  • کتاب کار را به صورت فایل xlsx. ذخیره کنید.

نمونه کد زیر نحوه ایجاد نمودار در فایل اکسل XLSX با استفاده از C++ را نشان می دهد.

// مسیر خروجی فایل اکسل
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// یک کتاب کار جدید ایجاد کنید
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// اولین کاربرگ را دریافت کنید که به طور پیش فرض ایجاد شده است
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// افزودن مقادیر نمونه به سلول ها
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// اضافه کردن نمودار به کاربرگ
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// دسترسی به نمونه نمودار جدید اضافه شده
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// افزودن SeriesCollection (منبع داده نمودار) به نمودار از سلول "A1" تا "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// ذخیره فایل اکسل
workbook->Save(outputChartTypePyramid);

کتاب کار اکسل با نمودار

ایجاد نمودار در اکسل در C++

نتیجه

در این مقاله نحوه ایجاد صفحات گسترده MS Excel از ابتدا با استفاده از C++ را توضیح داده ایم. این مقاله همچنین حاوی دستورالعمل های گام به گام و نمونه کد در مورد نحوه ایجاد جداول، نمودارها و محاسبه فرمول ها در کاربرگ های اکسل است. می‌توانید درباره سایر ویژگی‌های پیشرفته مرتبط با اتوماسیون اکسل از مستندات Aspose.Cells برای C++ اطلاعات بیشتری کسب کنید.

مقاله مرتبط