Cómo trabajar con el paquete XLSX en C++
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx El formato XML, en el interior de la XlsxWorkbookSerializer La clase orquesta carga y ahorro de todas las partes del libro.Este guía explica cómo utilizar la API de carga/hasta y qué mantiene automáticamente la capa de embalaje.
Guía paso a paso
Paso 1: Instalar el edificio
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)Paso 2: Incluye los cabezas
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;Paso 3: Cargar un archivo XLSX existente
El Workbook(filePath) Constructor llamadas XlsxWorkbookSerializer::Load para desembocar todas las partes de Open XML:
int main() {
Workbook workbook("input.xlsx");
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string title = sheet.GetCells()["A1"].GetStringValue();
return 0;
}Paso 4: Modificar el libro de trabajo
Hacer cualquier cambio de célula, estilo o estructura utilizando la API estándar:
sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");Paso 5: Salva el libro de trabajo
llamadas Workbook::Save(fileName) para pactar todas las partes de Open XML de vuelta a un archivo XLSX:
workbook.Save("output.xlsx");
workbook.Dispose();El formato se deriva de la .xlsx Extensiones: El XlsxWorkbookSerializer::Save El método de la escritura se trata del xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml,y, xl/sharedStrings.xml Partes automáticas.
Paso 6: Comprender lo que la capa de embalaje maneja
No es necesario interactuar con los internos de embalaje directamente.El serializador gestiona:
| parte | Gestionado por |
|---|---|
| estructura del libro de trabajo | XlsxWorkbookProperties |
| Datos de la oficina | WorksheetXmlMapper |
| Estilos y Fontes | XlsxWorkbookStyles |
| Cortes compartidos | SharedStringTableXmlMapper |
| Propiedades de documentos | XlsxDocumentProperties |
| Nombres definidos | XlsxWorkbookDefinedNames |
Problemas y soluciones comunes
El archivo se salva pero no se abre en Excel Asegúrese de que el camino de salida del archivo utiliza la .xlsx Salvar con una extensión diferente puede producir un archivo no reconocido.
Los estilos perdidos después de un tour Aplique Cell::SetStyle(style) Antes de llamar Workbook::Save.Los estilos modificados después de la salvación no se escriben.
El archivo se carga como vacío Verificar que el archivo no está protegido por contraseña y es válido XLSX (no .xls o .xlsmLa biblioteca apoya .xlsx Sólo el.
Nombres que faltan después de salvar Uso Workbook::EnsureUniqueDefinedName() antes de salvar para resolver cualquier conflicto alcance.
Memoria no liberada llamadas workbook.Dispose() Después de ahorrar para liberar todos los recursos de embalaje XLSX internos.
Preguntas frecuentes
¿Puedo guardar en formatos distintos a los XLSX?
La versión actual de v0.1 solo soporta ahorrar a XLSX. Se soportan las cargas CSV pero no se puede ahorar a CSV.
¿La biblioteca conserva las partes existentes que no he modificado?
Sí. el serializador rodea todas las partes que carga. los datos de la hoja de trabajo sin modificación, los estilos y los nombres definidos se conservan en almacenamiento.
¿Puedo inspeccionar el XML crudo de una parte del libro?
El XmlDocument::SaveToUtf8() El método serializará un documento XML a una línea. sin embargo, el acceso directo a las partes de archivo XLSX no se exponerá en la API pública. XmlDocument para el procesamiento XML personalizado.
¿Existe una API de streaming para archivos grandes?
No. La versión actual carga todo el libro de trabajo en la memoria.Para los archivos muy grandes, considere chunkar su procesamiento en libros de traballo más pequeños.
¿Qué pasa si salvo sobre el mismo archivo que he cargado?
La biblioteca escribe a un nuevo buffer interno antes de sobreescribir el archivo en el disco, por lo que la salva en lugar no corrompe la fuente.