วิธีการสร้างและประกอบแบบข้อมูลตารางพจนานุกรมใน C ++
คู่มือนี้แสดงวิธีการสร้างหนังสือทํางาน, เติมเซลล์ด้วยค่าและสูตร, ใช้สไตล์ และบันทึกเป็นไฟล์กระดาษพิมพ์ โดยใช้ห้องสมุด Aspose.Cells FOSS for C++. กลุ่มหลักที่เกี่ยวข้องคือ Workbook, Worksheet, Cell,และ Style.
คู่มือขั้นตอนตามขั้นตอนนี้
ขั้น ตอน ที่ 1: จัด การ สร้าง
เพิ่มห้องสมุด Cells FOSS ไปยังโครงการ CMake ของคุณและเชื่อมต่อ Aspose.Cells.Foss.Cpp เป้าหมาย:
cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)ขั้นตอนที่ 2: รวมหัวข้อและกําหนด namespace
รวมหัวข้อต่อชั้นจาก aspose/cells_foss/ สําหรับทุกชั้นที่คุณใช้ (Workbook.h, Worksheet.h, Cell.h, Style.h, Font.h, Color.h, CellArea.h), แล้วเปิดตู้ Aspose::Cells_FOSS namespace: สถานที่ชื่อ:
using namespace Aspose::Cells_FOSS;ขั้นตอนที่ 3: สร้างสมุดงาน และตั้งชื่อใบทํางาน
Instantiate Workbook, รับใบทํางานแรกผ่าน GetWorksheets()[0], และตั้งชื่อการแสดง:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Sales");
return 0;
}ขั้นตอน 4: เพิ่มค่าเซลล์
Call GetCells()["A1"].PutValue() เพื่อเขียนรุ่นข้อความ, ค่าเลข และคํา boolean ลงในเซลล์แต่ละตัวตามที่อยู่:
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);ขั้นตอนที่ 5: วางสูตร
Call SetFormula() ในเซลล์เพื่อเก็บรหัสสูตรที่เข้ากับ Excel; สูตรจะถูกวัดโดย Excel เมื่อเปิดไฟล์:
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");ขั้นตอน 6: ใช้การทํารูปเซลล์
ให้สไตล์กับ Cell::GetStyle(), ปรับปรุงและใช้กับ Cell::SetStyle(style):
Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);
sheet.GetCells()["B1"].SetStyle(headerStyle);ขั้นตอน 7: ผสมเซลล์
การใช้งาน Cells::Merge การรวมระดับเข้ากับเซลล์เดียว:
CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);ขั้นตอนที่ 8: เก็บ หนังสือการทํางานไว้
Call workbook.Save() ด้วยชื่อไฟล์เพื่อเขียนตารางคํานวณเป็นไฟล XLSX แล้วเรียก Dispose() เพื่อปล่อยทรัพยากร:
workbook.Save("sales.xlsx");
workbook.Dispose();ปัญหาทั่วไปและข้อกําหนด
สไตล์ไม่ได้ใช้หลังจากการบันทึก โทรมาตลอดเลย Cell::SetStyle(style) หลังจากการปรับเปลี่ยนวัตถุสไตล์ การเปลี่ยนแปลงส ไทล์ที่กลับตรงไม่ได้ใช้การเปลี่ยนแปลง; คุณต้องตั้งมันกลับมาอย่างชัดเจน.
สูตรที่เก็บเป็นสตริงตัวแปล การใช้งาน SetFormula("=SUM(...)") ไม่ PutValue("=SUM(...)"). PutValue ใช้คําโต้แย้งเป็นเส้นเชิงตัวจริง ไม่ใช่สูตร.
เซลล์รวมไม่ได้แสดงให้เห็นถูกต้อง การรับรองว่า ปารามีเตอร์รวม (แถว, คอลัมน์, rowCount, columnCounting) ครอบคลุมระยะที่ต้องการอย่างถูกต้อง. การควบคู่ไม่สนับสนุน.
หนังสืองานไม่มีใบหลังจากการสร้าง แผ่นแบบถัดไปจะสร้างโดย Workbook().โทรหาฉันนะ GetWorksheets()[0] เพื่อเข้าถึงมัน.
กลืนไม่เรียก โทรมาตลอดเลย workbook.Dispose() เพื่อปล่อยทรัพยากร โดยเฉพาะในแอปลิเคชั่นที่ใช้งานนาน.
คําถามที่พบบ่อย
ผมสามารถเพิ่มตารางงานหลายใบเข้าในหนังสือทํางานหนึ่งได้หรือไม่?
ใช่ ใช้ Workbook::GetWorksheets() เพื่อเข้าถึงการรวบรวมและเพิ่มใบโดยโปรแกรม การรับรองว่าทุกแผ่นมีชื่อเฉพาะ โดยใช้ Workbook::EnsureUniqueSheetName().
วิธีการตั้งรูปแบบเลขสําหรับเซลล์?
การใช้งาน Style::SetNumberFormat(format) ก่อนโทรหา Cell::SetStyle(style). การจัดรูปแบบสตริง ตามการออกแบบตัวเลข Excel มาตรฐาน.
ผมสามารถใช้สไตล์เดียวกันกับเซลล์หลายตัวได้หรือไม่?
ได้เลย สไตล์ครั้งเดียว ปรับเปลี่ยนแล้วโทรหา SetStyle(style) ในเซลล์เป้าหมายแต่ละตัว.
สูตรจะถูกประเมินเมื่อเก็บไว้หรือไม่?
ไม่ การประเมินสูตรเกิดขึ้นใน Excel หรือเครื่องอ่านที่สอดคล้อง เมื่อไฟล์ถูกเปิด ห้องสมุดเขียนรหัสสูทเข้าเซลล์.
แผ่นงานสามารถเก็บได้กี่แถวและคอลัมน์?
แผ่นงานแต่ละใบมีข้อมูลในเครือข่ายเต็มของแถวและคอลัมน์ ตามขนาดกระดาษพิมพ์มาตรฐาน.