Як працювати з XLSX Packaging в C++
Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx Відкрити формат XML. Внутрішньо, XlsxWorkbookSerializer Цей керівництво пояснює, як використовувати API завантаження/заховування та що автоматично управляє упаковочним шаром.
Крок за кроком посібник
Перший крок: Створити.
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 для великих файлів?
Ні. поточний випуск завантажує всю робочу книжку в пам’ять. для дуже великих файлів, розгляньте розбити обробку на менші роботи.
Що станеться, якщо я збережу той самий файл, який завантажив?
Бібліотека пише в новий внутрішній буфер, перш ніж перезаписувати файл на диске, тому збереження не пошкодить джерело.