Cara Bekerja dengan XLSX Packaging dalam C++

Cara Bekerja dengan XLSX Packaging dalam C++

Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Buka format XML. Secara internal, XlsxWorkbookSerializer kelas mengoreksi loading dan menyimpan semua bagian buku kerja. Panduan ini menjelaskan bagaimana menggunakan API load/save dan apa yang dikelola lapisan kemasan secara otomatis.

Panduan Langkah-Langkah

Langkah 1: Siapkan Bangunan

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)

Langkah 2: Masukkan Judul

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

using namespace Aspose::Cells_FOSS;

Langkah 3: Mengunggah file XLSX yang sudah ada

Pengelolaan Workbook(filePath) panggilan konstruktor XlsxWorkbookSerializer::Load secara internal untuk membuka semua bagian Open XML:

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

Langkah 4: Mengubah Buku Kerja

Buatlah perubahan sel, gaya, atau struktural menggunakan API standar:

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

Langkah 5: Simpan Buku Kerja

Call Workbook::Save(fileName) untuk mengemas kembali semua bagian Open XML ke dalam arsip XLSX:

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

Format disimpulkan dari .xlsx perpanjangan. XlsxWorkbookSerializer::Save metode menangani menulis xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml, dan xl/sharedStrings.xml bagian-bagian secara otomatis.


Langkah 6: Memahami Apa yang Diurus Layer Kemasan

Anda tidak perlu berinteraksi dengan internal kemasan secara langsung. Serialiser menangani:

PartDiurus oleh:
Struktur buku kerjaXlsxWorkbookProperties
Data lembar kerjaWorksheetXmlMapper
Gaya dan fontXlsxWorkbookStyles
String yang dibagikanSharedStringTableXmlMapper
Sifat dokumenXlsxDocumentProperties
Nama yang didefinisikanXlsxWorkbookDefinedNames

Masalah dan Fixes Umum

File disimpan tetapi tidak dibuka di Excel Pastikan jalur file output menggunakan .xlsx Penyimpanan dengan ekstensi yang berbeda dapat menghasilkan file yang tidak dikenali.

Gaya yang hilang setelah perjalanan pulang-pergi Apply Cell::SetStyle(style) sebelum menelepon. Workbook::Save.Gaya yang dimodifikasi setelah disimpan tidak ditulis.

File dimuat sebagai kosong Verifikasi file tidak dilindungi kata sandi dan merupakan XLSX yang valid (bukan .xls atau: .xlsm) Perpustakaan mendukung .xlsx Hanya saja.

Nama yang tidak terdefinisi setelah menyimpan Penggunaan Workbook::EnsureUniqueDefinedName() sebelum menyimpan untuk menyelesaikan konflik ruang lingkup.

Memori tidak dirilis Call workbook.Dispose() setelah menghemat untuk membebaskan semua sumber daya kemasan XLSX internal.

Pertanyaan yang sering ditanya

Bisakah saya menyimpan ke format selain XLSX?

Versi v0.1 saat ini hanya mendukung penyimpanan ke XLSX. Loading CSV didukung tetapi menyimpan ke CS V tidak tersedia.

Apakah perpustakaan menyimpan bagian yang ada yang belum kuubah?

Ya. Serialiser melakukan perjalanan bolak-balik semua bagian yang dimuat data lembar kerja, gaya dan nama yang tidak dimodifikasi disimpan pada save.

Bisakah saya memeriksa XML mentah dari bagian buku kerja?

Pengelolaan XmlDocument::SaveToUtf8() metode menyerialisasi dokumen XML ke string. Namun, akses langsung ke bagian arsip XLSX tidak terpapar di API publik. Gunakan XmlDocument untuk pengolahan XML khusus.

Apakah ada API streaming untuk file besar?

Tidak. rilis saat ini memuat seluruh buku kerja ke dalam memori untuk file yang sangat besar, pertimbangkan mengelompokkan pengolahan Anda menjadi buku pekerjaan yang lebih kecil.

Apa yang terjadi jika saya menyimpan file sama dengan yang saya muat?

Ini didukung. Perpustakaan menulis ke buffer internal baru sebelum overwriting file pada disk, sehingga in-place save tidak merusak sumbernya.

See Also

 Bahasa Indonesia