Как да работите с XLSX опаковки в C++

Как да работите с XLSX опаковки в 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: Запази работния лист

Обади се. 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: Разберете какво управлява опаковъчният слой

Не е необходимо да взаимодействате директно с вътрешните части на опаковката.:

Част отУправляван от:
Структура на работния листXlsxWorkbookProperties
Данни от работен листWorksheetXmlMapper
Стилове и шрифтовеXlsxWorkbookStyles
Общи последователностиSharedStringTableXmlMapper
Свойства на документаXlsxDocumentProperties
Определени наименованияXlsxWorkbookDefinedNames

Обичайни проблеми и решения

Файлът се запазва, но не се отваря в Excel Уверете се, че пътят на изходния файл използва .xlsx запазване с различно разширение може да доведе до неразпознаваемо файл.

Стилът се губи след пътуване назад. Заявление за кандидатстване Cell::SetStyle(style) преди да се обадиш. Workbook::Save.Стиловете, модифицирани след запазване не се записват.

Зареждане на файл като празен Проверете дали файлът не е защитен с парола и дали е валиден XLSX (не) .xls или с други: .xlsm) Библиотеката подкрепя: .xlsx Само за мен.

Определени имена липсват след запазване Използване на: Workbook::EnsureUniqueDefinedName() преди да се спасят за разрешаване на конфликти в обхвата.

Не освободена памет Обади се. workbook.Dispose() след спестяване за освобождаване на всички вътрешни XLSX опаковки ресурси.

Често задавани въпроси

Мога ли да запиша във формати, различни от XLSX?

В момента версията 0.1 поддържа само записване на XLSX. Зареждане на CSV е подкрепено, но записването в CS V не е налично.

Библиотеката запазва ли части, които не съм модифицирал?

Сериализаторът преминава през всички части, които зареди.

Мога ли да проверя суровия XML на част от работна книга?

Съветът на ЕС XmlDocument::SaveToUtf8() Методът сериализира XML документ в нишка. Въпреки това, пряк достъп до частите на архива XLSX не е изложен в публичния API. Използвайте XmlDocument за персонализирана обработка на XML.

Има ли API за стрийминг на големи файлове?

Не, текущото издание зарежда цялата работна книга в паметта. За много големи файлове обмислете раздробяването на обработката ви в по-малки работни книги.

Какво ще стане, ако запазя върху същия файл?

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

Вижте също:

 Български