Comment travailler avec le packaging XLSX en C++
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Formats XML ouverts. internes, le format XlsxWorkbookSerializer La classe orchestre le chargement et l’épargne de toutes les pièces du livre de travail.Cette guide explique comment utiliser la API de charge/économie et ce que gère automatiquement la couche d’emballage.
Guide étape par étapes
Étape 1 : Démarrer la construction
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)Étape 2 : Inclure les têtes
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;Étape 3 : Télécharger un fichier XLSX existant
Le Workbook(filePath) Constructeur appels XlsxWorkbookSerializer::Load interni pour désemballage de toutes les parties XML ouvertes:
int main() {
Workbook workbook("input.xlsx");
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string title = sheet.GetCells()["A1"].GetStringValue();
return 0;
}Étape 4 : modifier le livre de travail
Faites des modifications cellulaires, de style ou structurelles en utilisant l’API standard :
sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");Étape 5 : Sauver le livre de travail
Appel à Workbook::Save(fileName) Pour emballer toutes les parties XML ouvertes dans un fichier XLSX :
workbook.Save("output.xlsx");
workbook.Dispose();Le format est découlé de la .xlsx Extension : La XlsxWorkbookSerializer::Save Le mode d’écriture est le xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml,et xl/sharedStrings.xml Partie automatique.
Étape 6: Comprendre ce que la couche d’emballage gère
Vous n’avez pas besoin d’interagir avec les internaux de l’emballage directement.Le sérialisateur traite :
| partie | Géré par |
|---|---|
| Structure du livre de travail | XlsxWorkbookProperties |
| Les données de feuille d’œuvre | WorksheetXmlMapper |
| Styles et fonts | XlsxWorkbookStyles |
| Régime partagé | SharedStringTableXmlMapper |
| Propriétés documentaires | XlsxDocumentProperties |
| Nom définis | XlsxWorkbookDefinedNames |
Problèmes communs et fixations
Le fichier est enregistré mais ne s’ouvre pas dans Excel. Assurez-vous que le chemin de sortie du fichier utilise la .xlsx Économiser avec une autre extension peut produire un fichier non reconnu.
Les styles perdus après le tour de la route Application Cell::SetStyle(style) Avant de appeler Workbook::Save.Les styles modifiés après sauvegarde ne sont pas écrits.
Les fichiers sont vide Vérifiez que le fichier n’est pas protégé par mot de passe et est valide (non) .xls ou .xlsmLa bibliothèque soutient .xlsx Seulement !.
Les noms qui manquent après le sauvetage Utiliser Workbook::EnsureUniqueDefinedName() avant de sauver pour résoudre tout conflit d’étendue.
Mémoire non libérée Appel à workbook.Dispose() Après avoir épargné pour libérer tous les ressources d’emballage XLSX interne.
Questions fréquemment posées
Puis-je enregistrer dans des formats autres que XLSX?
La version actuelle v0.1 ne prend en charge que l’épargne pour XLSX. Le chargement CSV est supporté mais le sauvetage pour CSV n’est pas disponible.
La bibliothèque conserve-t-elle des pièces existantes que je n’ai pas modifiées ?
Oui. le sérialisateur tourne toutes les parties qu’il charge. Les données de feuille de travail non modifiées, les styles et les noms définis sont conservés sur sauvetage.
Puis-je inspecter le XML d’une partie du livre de travail ?
Le XmlDocument::SaveToUtf8() méthode sérialisera un document XML à une ligne. Cependant, l’accès direct aux parties d’archive XLSX n’est pas exposé dans l’API publique. XmlDocument Pour le traitement XML.
Y a-t-il une API de streaming pour les fichiers grands ?
Non. La version actuelle charge l’ensemble du livre de travail dans la mémoire. Pour les fichiers très grands, considérez le chunking de votre traitement en petits livres de travaux.
Que se passe-t-il si je sauve sur le même fichier que j’ai chargé ?
La bibliothèque écrit à un nouveau buffer interne avant de surécrire le fichier sur le disque, donc en place sauvegarde ne corrompt pas la source.