วิธีการทํางานกับ XLSX Packaging ใน C++

วิธีการทํางานกับ XLSX Packaging ใน C++

Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx เปิดรูปแบบ XML. ในระบบ, XlsxWorkbookSerializer class จัดการ Loading และ Save ของส่วนของหนังสือทํางานทั้งหมด คู่มือนี้อธิบายวิธีใช้ load/save API และสิ่งที่ชั้น Packaging จะจัดการโดยอัตโนมัติ.

คู่มือขั้นตอนตามขั้นตอนนี้

ขั้น ตอน ที่ 1: จัด การ สร้าง

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)

ขั้นตอนที่ 2: รวมหัวข้อ

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

using namespace Aspose::Cells_FOSS;

ขั้นตอน 3: อัตราการอัพโหลดไฟล์ XLSX ที่มีอยู่

การ Workbook(filePath) การเรียกตัวสร้าง XlsxWorkbookSerializer::Load ในภายในเพื่อปลีกส่วนของ Open XML ทั้งหมด:

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

ขั้นตอนที่ 4: ปรับปรุงสมุดทํางาน

ทําการเปลี่ยนแปลงเซลล์, สไตล์หรือโครงสร้างใด ๆ โดยใช้ API มาตรฐาน:

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

ขั้นตอนที่ 5: เก็บสมุดการทํางาน

Call Workbook::Save(fileName) เพื่อพก๊อกส่วน Open XML ทั้งหมดกลับมาในอาร์คิฟ XLSX:

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

รูปแบบมาจากการใช้งานของ .xlsx การขยายเวลา XlsxWorkbookSerializer::Save วิธีการจัดการเขียน xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml,และ xl/sharedStrings.xml ส่วนต่างๆ โดยอัตโนมัติ.


ขั้นตอนที่ 6: เข้าใจว่าชั้นบรรจุของกระดาษจัดการอะไร

คุณไม่จําเป็นต้องสัมผัสกับส่วนภายในของกระป๋องโดยตรง. เครื่องมือการจําลองเป็นซีเรียล:

Partบริหารโดย
โครงสร้างหนังสือทํางานXlsxWorkbookProperties
ข้อมูลใบงานWorksheetXmlMapper
สไตล์และตัวอักษรXlsxWorkbookStyles
สายสื่อที่แบ่งกันSharedStringTableXmlMapper
คุณสมบัติของเอกสารXlsxDocumentProperties
ชื่อที่กําหนดไว้XlsxWorkbookDefinedNames

ปัญหาทั่วไปและข้อกําหนด

ไฟล์บันทึก แต่ไม่เปิดใน Excel การันตีการออกไฟล์ทางใช้ .xlsx การบันทึกกับการขยายที่แตกต่างกันอาจผลิตไฟล์ที่ไม่รับรู้ได้.

สไตล์ที่สูญเสียหลังจากการเดินทางกลับ Apply Cell::SetStyle(style) ก่อนโทรหา Workbook::Save. สไตล์ที่ปรับเปลี่ยนหลังจากการบันทึกไม่ได้เขียน.

การโหลดไฟล์เป็นเปล่า ยืนยันว่าไฟล์ไม่ได้ถูกคุ้มครองด้วยคํารหัส และเป็น XLSX ที่มีค่า (ไม่ใช่ .xls หรือ .xlsm) ห้องสมุดสนับสนุนการจัดทําหนังสือ .xlsx แค่นั้นแหละ.

ชื่อที่กําหนดหายไปหลังจากการบันทึก การใช้งาน Workbook::EnsureUniqueDefinedName() ก่อนที่จะเก็บเพื่อแก้ปัญหาความขัดแย้งในพื้นที่การใช้งาน.

ความจําไม่ปล่อย Call workbook.Dispose() หลังจากการออมเพื่อปลดปล่อยทรัพยากร XLSX การบรรจุภายในทั้งหมด.

คําถามที่พบบ่อย

ผมสามารถบันทึกในรูปแบบอื่นจาก XLSX ได้หรือไม่?

รีลิส v0.1 ปัจจุบันรองรับการเก็บเป็น XLSX เท่านั้น การอัตราค่า CSV ได้สนับสนุน แต่ไม่ให้บริการในการเก็บใน CS V.

ห้องสมุดเก็บส่วนที่ยังมีอยู่ ที่ผมไม่ได้ปรับเปลี่ยนไว้ไหม?

ใช่. เครื่องทํารายการไป-กลับทุกส่วนที่มันอัดข้อมูลใบงานไม่เปลี่ยนแปลง, สไตล์และชื่อที่กําหนดถูกรักษาใน Save.

ผมสามารถตรวจสอบ XML แผนของส่วนของกระดาษทํางานได้หรือไม่?

การ XmlDocument::SaveToUtf8() การใช้วิธีการจะเรียงเอกสาร XML เป็นสตริง. อย่างไรก็ตาม, การเข้าถึงส่วนอาร์คิฟ XLSX โดยตรงไม่ได้ถูกเปิดเผยใน API สาธารณะ. ใช้ XmlDocument สําหรับการประมวลผล XML ที่ได้รับมาตรฐาน.

มี API สตรีมเม้นสําหรับไฟล์ขนาดใหญ่ไหม?

ไม่ ใบเสร็จการใช้งานปัจจุบันจะโหลดสมุดทํางานทั้งหมดเข้าในความจํา สําหรับไฟล์ขนาดใหญ่มาก ลองพิจารณาแบ่งประมวลผลเป็นสมัครงานเล็กๆ.

แล้วถ้าผมบันทึกไฟล์ที่อัพโหลดไว้ล่ะ?

การบันทึกนี้ได้รับการสนับสนุน ห้องสมุดเขียนไปยังพัฟเฟอร์ภายในใหม่ ก่อนที่จะ overwrite ไฟล์บนดิสก์ ดังนั้น in-place save จะไม่ทําลายแหล่งที่มา.

See Also

 ภาษาไทย