Как да работите с 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 за стрийминг на големи файлове?
Не, текущото издание зарежда цялата работна книга в паметта. За много големи файлове обмислете раздробяването на обработката ви в по-малки работни книги.
Какво ще стане, ако запазя върху същия файл?
Това е поддържано. Библиотеката пише в нов вътрешен буфер, преди да надпише файла на диска, така че запазването на място не повредя източника.