Tạo tệp Excel trong C ++

Trước đây, tôi đã viết một bài đăng về cách triển khai các tính năng tự động hóa của Excel và tạo các tệp Excel XLS/XLSX từ đầu bằng C#. Hôm nay, tôi sẽ chỉ cho bạn cách tạo sổ làm việc Excel, chèn dữ liệu vào trang tính Excel, tính toán công thức cũng như tạo biểu đồ và bảng trong trang tính bằng C++. Tất cả các tính năng tự động hóa bảng tính sẽ được cung cấp bởi C++ Excel API - Aspose.Cells for C++.

Aspose.Cells for C++ là thư viện C++ gốc cho phép bạn tạo, đọc, phân tích cú pháp và chuyển đổi tài liệu bảng tính mà không yêu cầu Microsoft Excel. Nó cung cấp một bộ đầy đủ các tính năng tự động hóa Excel có thể được sử dụng để tạo và thao tác bảng tính XLS/XLSX. Trong bài viết này, chúng tôi sẽ đề cập đến các tính năng tạo tệp Excel XLS/XLSX từ đầu sau đây.

API bảng tính C++ Excel - Cài đặt

Bạn có thể tải xuống gói đầy đủ các tệp thư viện của Aspose.Cells for C++ từ phần Tải xuống. Gói này cũng chứa ứng dụng bảng điều khiển mẫu sẵn sàng chạy.

Tạo tệp Excel (XLS/XLSX) bằng C++

Trước tiên, hãy tạo một sổ làm việc Excel XLSX đơn giản từ đầu. Một sổ làm việc bao gồm một hoặc nhiều trang tính và mỗi trang tính chứa dữ liệu ở dạng hàng và cột. Do đó, để tạo một bảng tính Excel, trước tiên bạn cần tạo một sổ làm việc rồi thêm các trang tính vào đó. Sau đây là các bước để tạo tệp Excel bằng Aspose.Cells for C++.

  • Tạo một đối tượng của lớp IWorkbook.
  • Lấy trang tính đầu tiên (được tạo theo mặc định) của sổ làm việc vào đối tượng IWorksheet từ IWorksheetCollection.
  • Truy cập các ô của trang tính vào đối tượng ICells bằng phương thức IWorksheet->GetICells().
  • Truy cập ô mong muốn của trang tính vào một đối tượng ICell bằng cách sử dụng phương thức ICells->GetObjectByIndex() bằng cách chỉ định chỉ mục hàng và cột.
  • Thêm giá trị vào ô bằng phương thức ICell->PutValue().
  • Lưu sổ làm việc dưới dạng tệp .xlsx bằng phương pháp IWorkbook->Save().

Mẫu mã sau đây cho biết cách tạo tệp Excel XLSX bằng 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")));

Sổ làm việc Excel

Sau đây là ảnh chụp màn hình của sổ làm việc Excel mà chúng ta vừa tạo.

Tạo Excel XLSX trong C++

Thêm dữ liệu vào bảng tính Excel bằng C++

Trong ví dụ trước, chúng ta đã thấy cách tạo một tệp Excel đơn giản và chèn giá trị vào một ô cụ thể bằng cách sử dụng chỉ mục hàng và cột. Tuy nhiên, hầu hết các ô trong trang tính Excel thường được xác định bằng ký tự cột và số hàng, chẳng hạn như A1, A2, B1, v.v. Vì vậy, hãy xem ví dụ về cách chèn dữ liệu vào trang tính bằng cách sử dụng tên ô. Quá trình này chỉ khác ở việc thêm giá trị vào ô và tất cả các bước khác để tạo sổ làm việc và trang tính Excel đều giống nhau.

Mẫu mã sau đây cho biết cách tạo sổ làm việc Excel XLSX và chèn dữ liệu vào sổ làm việc đó bằng C++.

//Đường dẫn xuất file excel
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//Đọc file excel đầu vào
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Truy cập trang tính thứ hai trong tệp Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Thêm một giá trị chuỗi vào ô
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Thêm một giá trị kép vào ô
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Thêm một giá trị số nguyên vào ô
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Thêm một giá trị boolean vào ô
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Đặt định dạng hiển thị của ngày
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//Lưu sổ làm việc
workbook->Save(outputData);

Tính toán công thức sổ làm việc bằng C++

Đặt công thức trong sổ làm việc Excel là một tính năng tuyệt vời để thực hiện các phép tính trên dữ liệu. Nó giúp thực hiện các phép tính phức tạp trên dữ liệu một cách hiệu quả và hiệu quả khá dễ dàng. Sau đây là các bước thiết lập và tính toán công thức trong bảng tính Excel.

Mẫu mã sau đây cho biết cách thêm và tính toán công thức trong sổ làm việc Excel XLSX bằng C++.

//Tạo sổ làm việc mới
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Nhận trang tính đầu tiên được tạo theo mặc định
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//Thêm một giá trị vào ô "A1"
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//Thêm một giá trị vào ô "A2"
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//Thêm một giá trị vào ô "A3"
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//Thêm công thức SUM vào ô "A4"
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Tính kết quả của các công thức
wb->CalculateFormula();

//Lấy giá trị tính toán của ô "A4" và in nó trên bàn điều khiển
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

Tạo bảng trong trang tính Excel bằng C++

Các bảng trong trang tính Excel được sử dụng để sắp xếp một nhóm dữ liệu nằm trong một dải ô. Bảng cũng giúp bạn duy trì các loại danh sách khác nhau trong trang tính. Sau đây là các bước để tạo một bảng trong trang tính Excel.

  • Tạo một sổ làm việc Excel mới bằng lớp IWorkbook.
  • Truy cập trang tính mặc định vào đối tượng IWorksheet hoặc thêm một trang tính mới.
  • Chèn giá trị/dữ liệu vào các ô giống như cách chúng ta đã thực hiện trong ví dụ trước.
  • Thêm phạm vi ô vào tập hợp Danh sách của trang tính bằng phương thức IWorksheet->GetIListObjects()->Add().
  • Lấy danh sách vào đối tượng IListObject.
  • Áp dụng kiểu dáng cho bảng bằng phương thức IListObject->SetTableStyleType().
  • Lưu sổ làm việc dưới dạng tệp .xlsx.

Mẫu mã sau đây cho biết cách tạo bảng trong tệp Excel XLSX bằng C++.

// Khởi tạo một đối tượng Workbook
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Lấy tham chiếu của trang tính mặc định (đầu tiên)
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Lấy bộ sưu tập ô của Worksheet
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Đặt giá trị cho các ô
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);  


// Thêm một Đối tượng Danh sách mới vào trang tính
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Thêm kiểu mặc định vào bảng
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Hiển thị Tổng số
listObject->SetShowTotals(true);

// Lưu tệp Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Sổ làm việc Excel có bảng

Tạo bảng trong Excel bằng C++

Tạo biểu đồ trong bảng tính Excel bằng C++

Biểu đồ trong bảng tính Excel được sử dụng để trực quan hóa dữ liệu bằng các loại đối tượng đồ họa khác nhau. Chúng cung cấp cho chúng tôi cái nhìn sâu sắc và hiểu biết nhanh về dữ liệu, đặc biệt khi dữ liệu rất lớn. Aspose.Cells for C++ hỗ trợ nhiều loại biểu đồ bao gồm Sunburst, Treemap, Histogram, Kim tự tháp, Bong bóng, Đường thẳng và nhiều biểu đồ khác. Sau đây là các bước để tạo biểu đồ trong sổ làm việc Excel bằng Aspose.Cells for C++.

  • Tạo một sổ làm việc Excel mới.
  • Truy cập trang tính mong muốn vào đối tượng IWorksheet.
  • Thêm biểu đồ mới vào trang tính bằng phương thức IWorksheet->GetICharts()->Add() bằng cách chuyển loại biểu đồ.
  • Truy cập biểu đồ mới được thêm vào đối tượng IChart.
  • Đặt nguồn dữ liệu cho biểu đồ bằng phương pháp IChart->GetNISeries()->Add().
  • Lưu sổ làm việc dưới dạng tệp .xlsx.

Mẫu mã sau đây cho biết cách tạo biểu đồ trong tệp Excel XLSX bằng C++.

// Đường dẫn xuất file excel
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// Tạo sổ làm việc mới
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Nhận trang tính đầu tiên được tạo theo mặc định
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Thêm giá trị mẫu vào ô
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);

// Thêm biểu đồ vào trang tính
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Truy cập phiên bản của biểu đồ mới được thêm vào
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Thêm SeriesCollection (nguồn dữ liệu biểu đồ) vào biểu đồ từ ô "A1" đến "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Lưu tệp Excel
workbook->Save(outputChartTypePyramid);

Sổ làm việc Excel với Biểu đồ

Tạo biểu đồ trong Excel bằng C++

Sự kết luận

Trong bài viết này, chúng tôi đã giới thiệu cách tạo bảng tính MS Excel từ đầu bằng C++. Bài viết cũng bao gồm hướng dẫn từng bước và mẫu mã về cách tạo bảng, biểu đồ và tính toán công thức trong trang tính Excel. Bạn có thể tìm hiểu thêm về các tính năng nâng cao khác liên quan đến tự động hóa Excel từ tài liệu của Aspose.Cells for C++.

Bài viết liên quan