Работа с упаковкой XLSX

Работа с упаковкой XLSX

Работа с упаковкой XLSX

Aspose.Cells FOSS для C++ читает и записывает формат .xlsx Open XML через специализированный слой сериализации. Класс XlsxWorkbookSerializer управляет загрузкой и сохранением всех частей книги, включая листы, стили, определённые имена, свойства документа и автофильтры.


Загрузка и сохранение файлов XLSX

Используйте класс Workbook для всех операций загрузки и сохранения. Внутри XlsxWorkbookSerializer обрабатывает упаковку Open XML:

#include "aspose/cells_foss/Workbook.h"

using namespace Aspose::Cells_FOSS;

int main() {
    // Load existing XLSX
    Workbook workbook("input.xlsx");

    // Modify content...

    // Save back to XLSX
    workbook.Save("output.xlsx");
    return 0;
}

Свойства документа

Файлы XLSX содержат основные и расширенные свойства документа (название, автор, дата создания). Управление ими осуществляет XlsxDocumentProperties, который формирует и загружает части docProps/core.xml и docProps/app.xml:

PartУправляетсяContains
docProps/core.xmlXlsxDocumentProperties::BuildCorePropertiesDocumentЗаголовок, автор, создано, изменено
docProps/app.xmlXlsxDocumentProperties::BuildExtendedPropertiesDocumentНазвание приложения, версия

Метаданные и настройки книги

Метаданные уровня рабочей книги — настройки вычислений, представления книги и защита рабочей книги — управляются XlsxWorkbookProperties:

  • BuildWorkbookPropertiesElement — записывает настройки вычислений и итераций рабочей книги
  • BuildWorkbookProtectionElement — записывает парольную защиту на уровне рабочей книги
  • BuildBookViewsElement — записывает положение окна и настройки активного листа

Стили и форматы чисел

Часть стилей (xl/styles.xml) управляется XlsxWorkbookStyles. Она сопоставляет объекты Style из модели в памяти с сериализованными записями шрифтов, заливок, границ и форматов чисел:

  • BuildStylesheet — сериализует все стили в XML
  • LoadStylesheet — читает стили из существующего файла XLSX
  • StylesEqual — проверяет, будут ли два объекта стиля генерировать идентичный XML

Упаковка автофильтра

Состояние автофильтра для каждого листа сериализуется с помощью XlsxWorkbookAutoFilter:

  • BuildAutoFilterElement — записывает элемент <autoFilter> XML
  • LoadAutoFilter — читает конфигурацию автофильтра из части листа

Определённые имена

Именованные диапазоны и формулы упаковываются в часть книги и загружаются с помощью XlsxWorkbookDefinedNames:

  • BuildDefinedNames — записывает все записи DefinedName в книгу XML
  • LoadWorkbookDefinedNames — читает определённые имена во время загрузки файла

Советы и лучшие практики

  • Используйте Workbook::Save(fileName) как единую точку выхода — не вызывайте классы сериализаторов напрямую, если только не расширяете библиотеку.
  • Формат .xlsx — единственный полностью поддерживаемый формат; сохранение в другие форматы недоступно в версии 0.1.
  • Пути к файлам, передаваемые в Workbook(filePath) или Save(filePath), должны использовать разделитель путей платформы и быть полностью квалифицированными при работе в средах, где рабочий каталог может изменяться.
  • Защита книги, применённая через XlsxWorkbookProperties::BuildWorkbookProtectionElement, независима от защиты уровня листа, установленной через Worksheet::Protect.

Распространённые проблемы

ПроблемаПричинаИсправление
Файл не загружаетсяНедопустимый или зашифрованный XLSXУбедитесь, что файл является обычным (не защищённым паролем) XLSX
Стили потеряны после сохраненияСтиль не применён перед сохранениемВызовите Cell::SetStyle(style) перед Workbook::Save
Определённые имена отсутствуют после обратного проходаОбласть установлена на неправильный листИспользуйте DefinedName::SetFormula с полным адресом диапазона

API Reference Сводка

Класс/МетодОписание:
Workbook(filePath)Загрузить файл XLSX
Workbook::Save(fileName)Сохранить в XLSX
XlsxWorkbookSerializer::SaveВнутренний: сериализует модель в Open XML
XlsxWorkbookSerializer::LoadВнутренний: десериализует Open XML в модель
XlsxDocumentPropertiesУпаковка основных и расширенных свойств документа
XlsxWorkbookPropertiesСериализация метаданных и настроек рабочей книги
XlsxWorkbookStylesУпаковка таблицы стилей
XlsxWorkbookAutoFilterУпаковка автофильтра XML
XlsxWorkbookDefinedNamesУпаковка определённого имени XML

См. также:

 Русский