ก่อนหน้านี้ ฉันได้เขียน โพสต์ เกี่ยวกับวิธีใช้คุณลักษณะการทำงานอัตโนมัติของ 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 ตั้งแต่เริ่มต้น
- สร้างไฟล์ Excel (XLS/XLSX) โดยใช้ C++
- เพิ่มข้อมูลลงในแผ่นงาน Excel โดยใช้ C ++
- คำนวณสูตรสมุดงานโดยใช้ C ++
- สร้างตารางในแผ่นงาน Excel โดยใช้ C ++
- สร้างแผนภูมิใน Excel XLS/XLSX โดยใช้ C++
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 โดยใช้ 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 ใช้เพื่อแสดงภาพข้อมูลโดยใช้วัตถุกราฟิกประเภทต่างๆ พวกเขาให้ข้อมูลเชิงลึกอย่างรวดเร็วและเข้าใจข้อมูลโดยเฉพาะอย่างยิ่งเมื่อข้อมูลมีขนาดใหญ่ 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 พร้อมแผนภูมิ
บทสรุป
ในบทความนี้ เราได้กล่าวถึงวิธีการสร้างสเปรดชีต MS Excel ตั้งแต่เริ่มต้นโดยใช้ C++ บทความนี้ยังมีคำแนะนำทีละขั้นตอนและตัวอย่างโค้ดเกี่ยวกับวิธีสร้างตาราง แผนภูมิ และสูตรคำนวณในเวิร์กชีต Excel คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคุณลักษณะขั้นสูงอื่นๆ ที่เกี่ยวข้องกับการทำงานอัตโนมัติของ Excel ได้จาก เอกสารประกอบ ของ Aspose.Cells for C++