Как работать с XLSX Packaging в C++
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Внутренне, файл XML-формата. XlsxWorkbookSerializer класс организует загрузку и сохранение всех частей рабочей книги. В этом руководстве объясняется, как использовать API для зарядки/сохранения файлов и что автоматически управляет слоем упаковки.
Крок за шагом руководство
Шаг 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?
В текущем версии 0.1 поддерживается сохранение только в XLSX. Загрузка CSV поддержена, но сохранить в CS V не доступно.
Библиотека сохраняет существующие части, которые я не модифицировал?
Сериализатор перемещает все загружаемые части. Неизмененные данные, стили и определённые имена сохраняются в сохранении.
Могу ли я проверить сырой XML части рабочей книги?
В связи с этим XmlDocument::SaveToUtf8() Метод сериализирует XML-документ в строку. Однако прямой доступ к частям архива XLSX не раскрывается в публичном API. Используйте XmlDocument для пользовательской обработки XML.
Есть ли API для потоковой передачи больших файлов?
Нет. Текущий выпуск загружает всю рабочую книгу в память. Для очень больших файлов, подумайте о том, чтобы разбить вашу обработку на меньшие рабочие книги.
Что произойдет, если я сохраню тот же файл, который загрузил?
Библиотека пишет в новый внутренний буфер, прежде чем перезаписывать файл на диске.