Làm thế nào để làm việc với XLSX đóng gói trong C++

Làm thế nào để làm việc với XLSX đóng gói trong C++

Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Mở định dạng XML. trong, các XlsxWorkbookSerializer lớp học tổ chức tải và tiết kiệm tất cả các bộ phận sổ làm việc. hướng dẫn này giải thích cách sử dụng API tải / tiết hồi và những gì lớp đóng gói tự động quản lý.

Hướng dẫn từng bước

Bước 1: Tạo dựng xây dựng

cmake_minimum_required(VERSION 3.15)
project(XlsxPackaging CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XlsxPackaging main.cpp)
target_link_libraries(XlsxPackaging PRIVATE Aspose.Cells.Foss.Cpp)

Bước 2: Nhập đầu

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

Bước 3: Tải về một tệp XLSX hiện có

Các Workbook(filePath) Nhà xây dựng Calls XlsxWorkbookSerializer::Load nội bộ để loại bỏ tất cả các phần mở XML:

int main() {
    Workbook workbook("input.xlsx");
    Worksheet& sheet = workbook.GetWorksheets()[0];
    std::string title = sheet.GetCells()["A1"].GetStringValue();
    return 0;
}

Bước 4: Thay đổi sổ làm việc

Thực hiện bất kỳ thay đổi ô, phong cách hoặc cấu trúc nào bằng API tiêu chuẩn:

sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");

Bước 5: Lưu sổ làm việc

Call Workbook::Save(fileName) để đóng gói tất cả các phần mở XML trở lại vào một tập tin XLSX:

workbook.Save("output.xlsx");
workbook.Dispose();

Định dạng được kết luận từ .xlsx Tăng cường: The XlsxWorkbookSerializer::Save Phương pháp viết bài The xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml, và xl/sharedStrings.xml Tự động chia.


Bước 6: Hiểu được lớp đóng gói quản lý gì

Bạn không cần phải tương tác với nội bộ đóng gói trực tiếp.Serializer xử lý:

Partquản lý bởi
cấu trúc WorkbookXlsxWorkbookProperties
Tác phẩm DataWorksheetXmlMapper
Phong cách và fontsXlsxWorkbookStyles
Chia sẻ stringSharedStringTableXmlMapper
Tài liệu tài sảnXlsxDocumentProperties
Tên định nghĩaXlsxWorkbookDefinedNames

Các vấn đề chung và Fixes

File lưu nhưng không mở trong Excel Bảo đảm rằng đường dẫn tệp xuất sử dụng các .xlsx Tiết kiệm với một phần mở rộng khác có thể tạo ra một tệp không được nhận dạng.

Những phong cách bị mất sau chuyến đi vòng tròn Apply Cell::SetStyle(style) Trước khi gọi Workbook::Save.Các phong cách được sửa đổi sau khi lưu không được viết.

File tải như trống Kiểm tra rằng tệp không được bảo vệ bằng mật khẩu và là một XLSX hợp lệ (không có) .xls hoặc .xlsmThư viện hỗ trợ .xlsx Chỉ có .

Tên đã mất sau khi được tiết kiệm Sử dụng Workbook::EnsureUniqueDefinedName() trước khi tiết kiệm để giải quyết bất kỳ xung đột phạm vi.

Memory không được phát hành Call workbook.Dispose() sau khi tiết kiệm để giải phóng tất cả các nguồn cung cấp đóng gói XLSX nội bộ.

Thường xuyên hỏi câu hỏi

Tôi có thể lưu vào các định dạng khác ngoài XLSX không?

Phiên bản hiện tại v0.1 hỗ trợ tiết kiệm cho XLSX chỉ. Đặt CSV được hỗn hợp nhưng không có tiết lộ cho CSV.

Thư viện có bảo tồn các phần hiện tại mà tôi chưa sửa đổi không?

Có. bộ phân phối xoay quanh tất cả các phần nó tải lên. dữ liệu bảng tính không thay đổi, phong cách và tên định nghĩa được lưu trữ trên lưu lượng.

Tôi có thể kiểm tra nguyên XML của một phần sổ làm việc không?

Các XmlDocument::SaveToUtf8() phương pháp phân phối một tài liệu XML vào một dòng. Tuy nhiên, truy cập trực tiếp đến các bộ phận lưu trữ XLSX không được tiết lộ trong API công cộng. XmlDocument - Đối với xử lý XML tùy chỉnh.

Có API streaming cho các tập tin lớn không?

Không. phiên bản hiện tại tải toàn bộ sổ làm việc vào trí nhớ. Đối với các tệp rất lớn, hãy cân nhắc chunking xử lý của bạn thành sổ công việc nhỏ hơn.

Điều gì sẽ xảy ra nếu tôi lưu trên cùng một tệp mà tôi tải lên?

Thư viện viết cho một buffer nội bộ mới trước khi quá trình viết tệp trên đĩa, vì vậy lưu trữ trong không làm hỏng nguồn.

See Also

 Tiếng Việt