Работа с упаковкой 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.xml | XlsxDocumentProperties::BuildCorePropertiesDocument | Заголовок, автор, создано, изменено |
docProps/app.xml | XlsxDocumentProperties::BuildExtendedPropertiesDocument | Название приложения, версия |
Метаданные и настройки книги
Метаданные уровня рабочей книги — настройки вычислений, представления книги и защита рабочей книги — управляются XlsxWorkbookProperties:
BuildWorkbookPropertiesElement— записывает настройки вычислений и итераций рабочей книгиBuildWorkbookProtectionElement— записывает парольную защиту на уровне рабочей книгиBuildBookViewsElement— записывает положение окна и настройки активного листа
Стили и форматы чисел
Часть стилей (xl/styles.xml) управляется XlsxWorkbookStyles. Она сопоставляет объекты Style из модели в памяти с сериализованными записями шрифтов, заливок, границ и форматов чисел:
BuildStylesheet— сериализует все стили в XMLLoadStylesheet— читает стили из существующего файла XLSXStylesEqual— проверяет, будут ли два объекта стиля генерировать идентичный XML
Упаковка автофильтра
Состояние автофильтра для каждого листа сериализуется с помощью XlsxWorkbookAutoFilter:
BuildAutoFilterElement— записывает элемент<autoFilter>XMLLoadAutoFilter— читает конфигурацию автофильтра из части листа
Определённые имена
Именованные диапазоны и формулы упаковываются в часть книги и загружаются с помощью XlsxWorkbookDefinedNames:
BuildDefinedNames— записывает все записиDefinedNameв книгу XMLLoadWorkbookDefinedNames— читает определённые имена во время загрузки файла
Советы и лучшие практики
- Используйте
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 |