วิธีการทํางานกับ 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 จะไม่ทําลายแหล่งที่มา.