Как работать с XLSX Packaging в C++

Как работать с 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 для потоковой передачи больших файлов?

Нет. Текущий выпуск загружает всю рабочую книгу в память. Для очень больших файлов, подумайте о том, чтобы разбить вашу обработку на меньшие рабочие книги.

Что произойдет, если я сохраню тот же файл, который загрузил?

Библиотека пишет в новый внутренний буфер, прежде чем перезаписывать файл на диске.

See Also

 Русский