สร้างไฟล์ Excel ใน C++

ก่อนหน้านี้ ฉันได้เขียน โพสต์ เกี่ยวกับวิธีใช้คุณลักษณะการทำงานอัตโนมัติของ Excel และสร้างไฟล์ Excel XLS/XLSX ตั้งแต่เริ่มต้นโดยใช้ C# วันนี้ ฉันจะแสดงวิธีสร้างเวิร์กบุ๊ก Excel แทรกข้อมูลลงในเวิร์กชีต Excel คำนวณสูตร และสร้างแผนภูมิและตารางในเวิร์กชีตโดยใช้ C++ คุณลักษณะการทำงานอัตโนมัติของสเปรดชีตทั้งหมดจะขับเคลื่อนโดย C++ Excel API - Aspose.Cells for C++

Aspose.Cells for C++ เป็นไลบรารี C++ ดั้งเดิมที่ให้คุณสร้าง อ่าน แยกวิเคราะห์ และแปลงเอกสารสเปรดชีตโดยไม่ต้องใช้ Microsoft Excel มีคุณลักษณะการทำงานอัตโนมัติของ Excel ครบชุด ซึ่งสามารถใช้เพื่อสร้างและจัดการสเปรดชีต XLS/XLSX ในบทความนี้ เราจะกล่าวถึงคุณลักษณะต่อไปนี้ของการสร้างไฟล์ Excel XLS/XLSX ตั้งแต่เริ่มต้น

API สเปรดชีต C++ Excel - การติดตั้ง

คุณสามารถดาวน์โหลดแพคเกจไฟล์ไลบรารีทั้งหมดของ Aspose.Cells for C++ ได้จากส่วน ดาวน์โหลด แพ็คเกจยังมีแอปพลิเคชันคอนโซลตัวอย่างที่พร้อมรัน

สร้างไฟล์ Excel (XLS/XLSX) โดยใช้ C++

ก่อนอื่นให้สร้างสมุดงาน Excel XLSX อย่างง่ายตั้งแต่เริ่มต้น เวิร์กบุ๊กประกอบด้วยเวิร์กชีตหนึ่งหรือหลายเวิร์กชีต และแต่ละเวิร์กชีตมีข้อมูลในรูปแบบของแถวและคอลัมน์ ดังนั้นในการสร้างสเปรดชีต Excel คุณต้องสร้างเวิร์กบุ๊กก่อนแล้วจึงเพิ่มเวิร์กชีตในนั้น ต่อไปนี้เป็นขั้นตอนในการสร้างไฟล์ Excel โดยใช้ Aspose.Cells for C++

  • สร้างวัตถุของคลาส IWorkbook
  • รับแผ่นงานแรก (สร้างโดยค่าเริ่มต้น) ของสมุดงานลงในวัตถุ IWorksheet จาก IWorksheetCollection
  • เข้าถึงเซลล์ของแผ่นงานในวัตถุ ICells โดยใช้เมธอด IWorksheet->GetICells()
  • เข้าถึงเซลล์ที่ต้องการของแผ่นงานในวัตถุ ICell โดยใช้เมธอด ICells->GetObjectByIndex() โดยระบุดัชนีแถวและคอลัมน์
  • เพิ่มค่าให้กับเซลล์โดยใช้เมธอด ICell->PutValue()
  • บันทึกสมุดงานเป็นไฟล์ .xlsx โดยใช้วิธี IWorkbook->Save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์ Excel 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

ต่อไปนี้เป็นภาพหน้าจอของสมุดงาน Excel ที่เราเพิ่งสร้างขึ้น

สร้าง Excel XLSX ใน C++

เพิ่มข้อมูลลงในแผ่นงาน Excel โดยใช้ C ++

ในตัวอย่างก่อนหน้านี้ เราได้เห็นวิธีสร้างไฟล์ Excel อย่างง่ายและแทรกค่าลงในเซลล์เฉพาะโดยใช้ดัชนีแถวและคอลัมน์ อย่างไรก็ตาม เซลล์ส่วนใหญ่ในแผ่นงาน Excel จะถูกระบุโดยใช้ตัวอักษรประจำคอลัมน์และหมายเลขแถว เช่น A1, A2, B1 เป็นต้น ดังนั้น มาดูตัวอย่างวิธีการแทรกข้อมูลลงในแผ่นงานโดยใช้ชื่อเซลล์กัน กระบวนการนี้ต่างกันเพียงการเพิ่มมูลค่าให้กับเซลล์เท่านั้น และขั้นตอนอื่นๆ ทั้งหมดในการสร้างสมุดงาน Excel และเวิร์กชีตจะเหมือนกัน

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเวิร์กบุ๊ก Excel XLSX และแทรกข้อมูลลงในเวิร์กบุ๊กโดยใช้ C++

//เส้นทางของไฟล์ excel เอาต์พุต
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//อ่านไฟล์ excel อินพุต
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//การเข้าถึงแผ่นงานที่สองในไฟล์ Excel
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 ++

การตั้งค่าสูตรในสมุดงาน Excel เป็นคุณสมบัติที่น่าทึ่งในการคำนวณข้อมูล ทำให้ง่ายต่อการคำนวณที่ซับซ้อนบนข้อมูลอย่างมีประสิทธิภาพและประสิทธิผล ต่อไปนี้เป็นขั้นตอนในการตั้งค่าและคำนวณสูตรในแผ่นงาน Excel

  • สร้างวัตถุของคลาส 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()));

สร้างตารางในแผ่นงาน Excel โดยใช้ C ++

ตารางในแผ่นงาน Excel ใช้เพื่อจัดระเบียบกลุ่มข้อมูลที่อยู่ในช่วงของเซลล์ ตารางยังช่วยให้คุณรักษารายการประเภทต่างๆ ในเวิร์กชีตได้อีกด้วย ต่อไปนี้เป็นขั้นตอนในการสร้างตารางในแผ่นงาน Excel

  • สร้างสมุดงาน Excel ใหม่โดยใช้คลาส IWorkbook
  • เข้าถึงแผ่นงานเริ่มต้นในวัตถุ IWorksheet หรือเพิ่มใหม่
  • ใส่ค่า/ข้อมูลลงในเซลล์ด้วยวิธีเดียวกับที่เราทำในตัวอย่างก่อนหน้า
  • เพิ่มช่วงของเซลล์ลงในรายการคอลเลกชันของแผ่นงานโดยใช้เมธอด IWorksheet->GetIListObjects()->Add()
  • รับรายการในวัตถุ IListObject
  • ใช้สไตล์กับตารางโดยใช้เมธอด IListObject->SetTableStyleType()
  • บันทึกสมุดงานเป็นไฟล์ .xlsx

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างตารางในไฟล์ Excel XLSX โดยใช้ C++

// สร้างอินสแตนซ์วัตถุสมุดงาน
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);

// การบันทึกไฟล์ Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

สมุดงาน Excel พร้อมตาราง

สร้างตารางใน Excel ใน C++

สร้างแผนภูมิในสเปรดชีต Excel โดยใช้ C++

แผนภูมิในสเปรดชีต Excel ใช้เพื่อแสดงภาพข้อมูลโดยใช้วัตถุกราฟิกประเภทต่างๆ พวกเขาให้ข้อมูลเชิงลึกอย่างรวดเร็วและเข้าใจข้อมูลโดยเฉพาะอย่างยิ่งเมื่อข้อมูลมีขนาดใหญ่ Aspose.Cells for C++ รองรับแผนภูมิที่หลากหลาย ได้แก่ Sunburst, Treemap, Histogram, Pyramid, Bubble, Line และ อีกมากมาย ต่อไปนี้เป็นขั้นตอนในการสร้างแผนภูมิในสมุดงาน Excel โดยใช้ Aspose.Cells for C++

  • สร้างสมุดงาน Excel ใหม่
  • เข้าถึงแผ่นงานที่ต้องการในวัตถุ IWorksheet
  • เพิ่มแผนภูมิใหม่ลงในเวิร์กชีตโดยใช้เมธอด IWorksheet->GetICharts()->Add() โดยส่งประเภทของแผนภูมิ
  • เข้าถึงแผนภูมิที่เพิ่มใหม่ในวัตถุ IChart
  • ตั้งค่าแหล่งข้อมูลสำหรับแผนภูมิโดยใช้เมธอด IChart->GetNISeries()->Add()
  • บันทึกสมุดงานเป็นไฟล์ .xlsx

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างแผนภูมิในไฟล์ Excel XLSX โดยใช้ C++

// เส้นทางของไฟล์ excel เอาต์พุต
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);

// การบันทึกไฟล์ Excel
workbook->Save(outputChartTypePyramid);

สมุดงาน Excel พร้อมแผนภูมิ

สร้างแผนภูมิใน Excel ใน C++

บทสรุป

ในบทความนี้ เราได้กล่าวถึงวิธีการสร้างสเปรดชีต MS Excel ตั้งแต่เริ่มต้นโดยใช้ C++ บทความนี้ยังมีคำแนะนำทีละขั้นตอนและตัวอย่างโค้ดเกี่ยวกับวิธีสร้างตาราง แผนภูมิ และสูตรคำนวณในเวิร์กชีต Excel คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคุณลักษณะขั้นสูงอื่นๆ ที่เกี่ยวข้องกับการทำงานอัตโนมัติของ Excel ได้จาก เอกสารประกอบ ของ Aspose.Cells for C++

บทความที่เกี่ยวข้อง