วิธีการสร้างและประกอบแบบข้อมูลตารางพจนานุกรมใน C ++

วิธีการสร้างและประกอบแบบข้อมูลตารางพจนานุกรมใน 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 หรือเครื่องอ่านที่สอดคล้อง เมื่อไฟล์ถูกเปิด ห้องสมุดเขียนรหัสสูทเข้าเซลล์.

แผ่นงานสามารถเก็บได้กี่แถวและคอลัมน์?

แผ่นงานแต่ละใบมีข้อมูลในเครือข่ายเต็มของแถวและคอลัมน์ ตามขนาดกระดาษพิมพ์มาตรฐาน.

See Also

 ภาษาไทย