C++'da XLSX Ambalajı Nasıl Çalışır
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx XML formatı açık, içeride XlsxWorkbookSerializer Sınıf orkestrası tüm çalışma kitabının parçalarının yükleme ve tasarrufu. bu rehber yük / kurtarma API’yi nasıl kullanılacağını ve ambalaj katmanının otomatik olarak ne yapacağını açıklıyor.
Adım adım rehberlik
Adım 1: Yapıyı Kurun
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)Adım 2: Başlıklar dahil edin
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;Adım 3: Mevcut XLSX dosyasını yükleme
O zamanlar Workbook(filePath) Yapımcı Çağrı XlsxWorkbookSerializer::Load Tüm Open XML parçaları içeride paketlenir:
int main() {
Workbook workbook("input.xlsx");
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string title = sheet.GetCells()["A1"].GetStringValue();
return 0;
}Adım 4: Çalışma kitabını değiştirin
Herhangi bir hücre, tarz veya yapı değişiklikleri standart API kullanarak yapın:
sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");5. Adım: Çalışma Kitabı Kurtarmak
Call Workbook::Save(fileName) Tüm açık XML parçaları bir XLSX arşivine geri paketlemek için:
workbook.Save("output.xlsx");
workbook.Dispose();Formatı, bu formattan alınmıştır. .xlsx Uzunluk - The XlsxWorkbookSerializer::Save Metoda yazma yöntemini kullanır xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml,ve xl/sharedStrings.xml otomatik olarak parçalanır.
Adım 6: Ambalaj katmanının neyi yönettiğini anlamak
İç mekanlar ile doğrudan etkileşime girmemeniz gerekmez. serializer işe yarıyor:
| Part | Yönetilen |
|---|---|
| Workbook Yapısı | XlsxWorkbookProperties |
| Çalışma Bilgileri | WorksheetXmlMapper |
| Stil ve yazı tipleri | XlsxWorkbookStyles |
| Paylaşım Çizgisi | SharedStringTableXmlMapper |
| Belge Mülkiyeti | XlsxDocumentProperties |
| tanımlanmış isimler | XlsxWorkbookDefinedNames |
Toplam Sorunlar ve Çözümler
Dosya kaydedilir ama Excel’de açılmaz Dosya çıkış yolu kullanarak sağlanır. .xlsx Uzantı: Farklı bir uzantıyla tasarruf, tanımlanmamış bir dosya üretebilir.
Yürüyüşten sonra kaybolan stiller Apply Cell::SetStyle(style) Çağrıdan Önce Workbook::Save.Tasarıldıktan sonra değiştirilen tarzlar yazılmamıştır.
Dosya boş olarak yüklenir Dosya şifre ile korunmamıştır ve geçerli bir XLSX (hayır) .xls veya .xlsmKütüphane destekliyor .xlsx Sadece .
Kaybolan isimler kayboldu Kullanım Workbook::EnsureUniqueDefinedName() Her türlü çatışmayı çözmek için tasarruf.
Memory Yayınlanmıyor Call workbook.Dispose() tasarruf sonra tüm iç XLSX ambalaj kaynakları serbest bırakın.
Sıkça Sorulan Sorular
XLSX’den başka formatta kaydetebilir miyim?
Mevcut v0.1 sürümü yalnızca XLSX’e tasarruf sağlar. yükleme CSV desteklenir ancak CSV’ye tasarrufu mevcut değildir.
Kütüphane, değiştirmediğim mevcut parçaları mu saklıyor?
Evet. serializer yüklediği tüm parçaları yuvarlayar. değiştirilmemiş çalışma sayfası verileri, stiller ve tanımlanmış isimler kaydedilir.
Bir çalışma kitabının bir kısmının ham XML’ini kontrol edebilir miyim?
O zamanlar XmlDocument::SaveToUtf8() Metoda bir XML belgesini bir çubukta serialize eder. ancak, XLSX arşiv parçalarına doğrudan erişim kamu API’de gösterilmez. XmlDocument XML işleme özelliği.
Büyük dosyalar için bir akış API var mı?
No. Mevcut sürüm tüm çalışma kitabını hafızaya yüklüyor. çok büyük dosyalar için, işlemeyi daha küçük çalışma kitaplarına atmayı düşünün.
Yüklediğim dosyayı kaydetmek için ne yapmalıyım?
Kütüphane, dosyayı diske yazmadan önce yeni bir iç buffer için yazıyor, böylece yerinde kaydetme kaynakları bozmuyor.