react-native-nitro-xlsx 0.1.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroXlsx.podspec +27 -27
- package/Package.swift +35 -10
- package/README.md +220 -58
- package/android/CMakeLists.txt +24 -27
- package/android/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
- package/cpp/HybridNitroXlsx.cpp +25 -179
- package/cpp/HybridNitroXlsx.hpp +2 -2
- package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
- package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
- package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
- package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
- package/cpp/HybridXlsxWorkbook.cpp +159 -196
- package/cpp/HybridXlsxWorkbook.hpp +7 -2
- package/cpp/HybridXlsxWorksheet.cpp +433 -62
- package/cpp/HybridXlsxWorksheet.hpp +73 -26
- package/cpp/XlsxCacheDir.cpp +76 -0
- package/cpp/XlsxCacheDir.hpp +27 -0
- package/cpp/XlsxError.hpp +68 -0
- package/cpp/XlsxJson.cpp +185 -0
- package/cpp/XlsxJson.hpp +36 -0
- package/ios/XlsxCacheDir.mm +60 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
- package/package.json +3 -3
- package/scripts/run-cpp-tests.sh +14 -0
- package/src/__mocks__/react-native-nitro-modules.ts +1 -0
- package/src/__tests__/index.test.ts +76 -7
- package/src/index.ts +107 -18
- package/src/specs/NitroXlsx.nitro.ts +141 -44
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/ios/dummy.swift +0 -2
- package/scripts/prepare-openxlsx.js +0 -109
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLFORMULA_HPP
|
|
47
|
+
#define OPENXLSX_XLFORMULA_HPP
|
|
48
|
+
|
|
49
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
50
|
+
# pragma warning(push)
|
|
51
|
+
# pragma warning(disable : 4251)
|
|
52
|
+
# pragma warning(disable : 4275)
|
|
53
|
+
#endif // _MSC_VER
|
|
54
|
+
|
|
55
|
+
// ===== External Includes ===== //
|
|
56
|
+
#include <iostream> // std::ostream
|
|
57
|
+
#include <string>
|
|
58
|
+
#include <variant>
|
|
59
|
+
|
|
60
|
+
// ===== OpenXLSX Includes ===== //
|
|
61
|
+
#include "OpenXLSX-Exports.hpp"
|
|
62
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
63
|
+
|
|
64
|
+
// ========== CLASS AND ENUM TYPE DEFINITIONS ========== //
|
|
65
|
+
namespace OpenXLSX
|
|
66
|
+
{
|
|
67
|
+
constexpr bool XLResetValue = true;
|
|
68
|
+
constexpr bool XLPreserveValue = false;
|
|
69
|
+
|
|
70
|
+
//---------- Forward Declarations ----------//
|
|
71
|
+
class XLFormulaProxy;
|
|
72
|
+
class XLCell;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @brief The XLFormula class encapsulates the concept of an Excel formula. The class is essentially
|
|
76
|
+
* a wrapper around a std::string.
|
|
77
|
+
* @warning This class currently only supports simple formulas. Array formulas and shared formulas are
|
|
78
|
+
* not supported. Unfortunately, many spreadsheets have shared formulas, so this class is probably
|
|
79
|
+
* best used for adding formulas, not reading them from an existing spreadsheet.
|
|
80
|
+
* @todo Enable handling of shared and array formulas.
|
|
81
|
+
*/
|
|
82
|
+
class OPENXLSX_EXPORT XLFormula
|
|
83
|
+
{
|
|
84
|
+
//---------- Friend Declarations ----------//
|
|
85
|
+
|
|
86
|
+
friend bool operator==(const XLFormula& lhs, const XLFormula& rhs);
|
|
87
|
+
friend bool operator!=(const XLFormula& lhs, const XLFormula& rhs);
|
|
88
|
+
friend std::ostream& operator<<(std::ostream& os, const XLFormula& value);
|
|
89
|
+
|
|
90
|
+
public:
|
|
91
|
+
/**
|
|
92
|
+
* @brief Constructor
|
|
93
|
+
*/
|
|
94
|
+
XLFormula();
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @brief Constructor, taking a string-type argument
|
|
98
|
+
* @tparam T Type of argument used. Must be string-type.
|
|
99
|
+
* @param formula The formula to initialize the object with.
|
|
100
|
+
*/
|
|
101
|
+
template<typename T,
|
|
102
|
+
typename = std::enable_if_t<
|
|
103
|
+
std::is_same_v<std::decay_t<T>, std::string> || std::is_same_v<std::decay_t<T>, std::string_view> ||
|
|
104
|
+
std::is_same_v<std::decay_t<T>, const char*> || std::is_same_v<std::decay_t<T>, char*>>>
|
|
105
|
+
explicit XLFormula(T formula)
|
|
106
|
+
{
|
|
107
|
+
// ===== If the argument is a const char *, use the argument directly; otherwise, assume it has a .c_str() function.
|
|
108
|
+
if constexpr (std::is_same_v<std::decay_t<T>, const char*> || std::is_same_v<std::decay_t<T>, char*>)
|
|
109
|
+
m_formulaString = formula;
|
|
110
|
+
else if constexpr (std::is_same_v<std::decay_t<T>, std::string_view>)
|
|
111
|
+
m_formulaString = std::string(formula);
|
|
112
|
+
else
|
|
113
|
+
m_formulaString = formula.c_str();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @brief Copy constructor.
|
|
118
|
+
* @param other Object to be copied.
|
|
119
|
+
*/
|
|
120
|
+
XLFormula(const XLFormula& other);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @brief Move constructor.
|
|
124
|
+
* @param other Object to be moved.
|
|
125
|
+
*/
|
|
126
|
+
XLFormula(XLFormula&& other) noexcept;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @brief Destructor.
|
|
130
|
+
*/
|
|
131
|
+
~XLFormula();
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @brief Copy assignment operator.
|
|
135
|
+
* @param other Object to be copied.
|
|
136
|
+
* @return Reference to copied-to object.
|
|
137
|
+
*/
|
|
138
|
+
XLFormula& operator=(const XLFormula& other);
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @brief Move assignment operator.
|
|
142
|
+
* @param other Object to be moved.
|
|
143
|
+
* @return Reference to moved-to object.
|
|
144
|
+
*/
|
|
145
|
+
XLFormula& operator=(XLFormula&& other) noexcept;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @brief Templated assignment operator, taking a string-type object as an argument.
|
|
149
|
+
* @tparam T Type of argument (only string-types are allowed).
|
|
150
|
+
* @param formula String containing the formula.
|
|
151
|
+
* @return Reference to the assigned-to object.
|
|
152
|
+
*/
|
|
153
|
+
template<typename T,
|
|
154
|
+
typename = std::enable_if_t<
|
|
155
|
+
std::is_same_v<std::decay_t<T>, std::string> || std::is_same_v<std::decay_t<T>, std::string_view> ||
|
|
156
|
+
std::is_same_v<std::decay_t<T>, const char*> || std::is_same_v<std::decay_t<T>, char*>>>
|
|
157
|
+
XLFormula& operator=(T formula)
|
|
158
|
+
{
|
|
159
|
+
XLFormula temp(formula);
|
|
160
|
+
std::swap(*this, temp);
|
|
161
|
+
return *this;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @brief Templated setter function, taking a string-type object as an argument.
|
|
166
|
+
* @tparam T Type of argument (only string-types are allowed).
|
|
167
|
+
* @param formula String containing the formula.
|
|
168
|
+
*/
|
|
169
|
+
template<typename T,
|
|
170
|
+
typename = std::enable_if_t<
|
|
171
|
+
std::is_same_v<std::decay_t<T>, std::string> || std::is_same_v<std::decay_t<T>, std::string_view> ||
|
|
172
|
+
std::is_same_v<std::decay_t<T>, const char*> || std::is_same_v<std::decay_t<T>, char*>>>
|
|
173
|
+
void set(T formula)
|
|
174
|
+
{
|
|
175
|
+
*this = formula;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @brief Get the formula as a std::string.
|
|
180
|
+
* @return A std::string with the formula.
|
|
181
|
+
*/
|
|
182
|
+
std::string get() const;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @brief Conversion operator, for converting object to a std::string.
|
|
186
|
+
* @return The formula as a std::string.
|
|
187
|
+
*/
|
|
188
|
+
operator std::string() const; // NOLINT
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @brief Clear the formula.
|
|
192
|
+
* @return Return a reference to the cleared object.
|
|
193
|
+
*/
|
|
194
|
+
XLFormula& clear();
|
|
195
|
+
|
|
196
|
+
private:
|
|
197
|
+
std::string m_formulaString; /**< A std::string, holding the formula string.*/
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @brief The XLFormulaProxy serves as a placeholder for XLFormula objects. This enable
|
|
202
|
+
* getting and setting formulas through the same interface.
|
|
203
|
+
*/
|
|
204
|
+
class OPENXLSX_EXPORT XLFormulaProxy
|
|
205
|
+
{
|
|
206
|
+
friend class XLCell;
|
|
207
|
+
friend class XLFormula;
|
|
208
|
+
|
|
209
|
+
private:
|
|
210
|
+
/**
|
|
211
|
+
* @brief Constructor, taking pointers to the cell and cell node objects.
|
|
212
|
+
* @param cell Pointer to the associated cell object.
|
|
213
|
+
* @param cellNode Pointer to the associated cell node object.
|
|
214
|
+
*/
|
|
215
|
+
XLFormulaProxy(XLCell* cell, XMLNode* cellNode);
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @brief Copy constructor.
|
|
219
|
+
* @param other Object to be copied.
|
|
220
|
+
*/
|
|
221
|
+
XLFormulaProxy(const XLFormulaProxy& other);
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @brief Move constructor.
|
|
225
|
+
* @param other Object to be moved.
|
|
226
|
+
*/
|
|
227
|
+
XLFormulaProxy(XLFormulaProxy&& other) noexcept;
|
|
228
|
+
|
|
229
|
+
public:
|
|
230
|
+
/**
|
|
231
|
+
* @brief Destructor
|
|
232
|
+
*/
|
|
233
|
+
~XLFormulaProxy();
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @brief Copy assignment operator.
|
|
237
|
+
* @param other Object to be copied.
|
|
238
|
+
* @return A reference to the copied-to object.
|
|
239
|
+
*/
|
|
240
|
+
XLFormulaProxy& operator=(const XLFormulaProxy& other);
|
|
241
|
+
|
|
242
|
+
private:
|
|
243
|
+
/**
|
|
244
|
+
* @brief Move assignment operator.
|
|
245
|
+
* @param other Object to be moved.
|
|
246
|
+
* @return A reference to the moved-to object.
|
|
247
|
+
*/
|
|
248
|
+
XLFormulaProxy& operator=(XLFormulaProxy&& other) noexcept;
|
|
249
|
+
|
|
250
|
+
public:
|
|
251
|
+
/**
|
|
252
|
+
* @brief Templated assignment operator, taking a string-type argument.
|
|
253
|
+
* @tparam T Type of argument.
|
|
254
|
+
* @param formula The formula string to be assigned.
|
|
255
|
+
* @return A reference to the copied-to object.
|
|
256
|
+
*/
|
|
257
|
+
template<
|
|
258
|
+
typename T,
|
|
259
|
+
typename = std::enable_if_t<std::is_same_v<std::decay_t<T>, XLFormula> || std::is_same_v<std::decay_t<T>, std::string> ||
|
|
260
|
+
std::is_same_v<std::decay_t<T>, std::string_view> || std::is_same_v<std::decay_t<T>, const char*> ||
|
|
261
|
+
std::is_same_v<std::decay_t<T>, char*>>>
|
|
262
|
+
XLFormulaProxy& operator=(T formula)
|
|
263
|
+
{
|
|
264
|
+
if constexpr (std::is_same_v<std::decay_t<T>, XLFormula>)
|
|
265
|
+
setFormulaString(formula.get().c_str());
|
|
266
|
+
else if constexpr (std::is_same_v<std::decay_t<T>, std::string>)
|
|
267
|
+
setFormulaString(formula.c_str());
|
|
268
|
+
else if constexpr (std::is_same_v<std::decay_t<T>, std::string_view>)
|
|
269
|
+
setFormulaString(std::string(formula).c_str());
|
|
270
|
+
else
|
|
271
|
+
setFormulaString(formula);
|
|
272
|
+
|
|
273
|
+
return *this;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* @brief Templated setter, taking a string-type argument.
|
|
278
|
+
* @tparam T Type of argument.
|
|
279
|
+
* @param formula The formula string to be assigned.
|
|
280
|
+
*/
|
|
281
|
+
template<typename T,
|
|
282
|
+
typename = std::enable_if_t<
|
|
283
|
+
std::is_same_v<std::decay_t<T>, std::string> || std::is_same_v<std::decay_t<T>, std::string_view> ||
|
|
284
|
+
std::is_same_v<std::decay_t<T>, const char*> || std::is_same_v<std::decay_t<T>, char*>>>
|
|
285
|
+
void set(T formula)
|
|
286
|
+
{
|
|
287
|
+
*this = formula;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* @brief Get the formula as a std::string.
|
|
292
|
+
* @return A std::string with the formula.
|
|
293
|
+
*/
|
|
294
|
+
std::string get() const;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* @brief Clear the formula.
|
|
298
|
+
* @return Return a reference to the cleared object.
|
|
299
|
+
*/
|
|
300
|
+
XLFormulaProxy& clear();
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* @brief Conversion operator, for converting the object to a std::string.
|
|
304
|
+
* @return The formula as a std::string.
|
|
305
|
+
*/
|
|
306
|
+
operator std::string() const; // NOLINT
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* @brief Implicit conversion to XLFormula object.
|
|
310
|
+
* @return Returns the corresponding XLFormula object.
|
|
311
|
+
*/
|
|
312
|
+
operator XLFormula() const; // NOLINT
|
|
313
|
+
|
|
314
|
+
private:
|
|
315
|
+
/**
|
|
316
|
+
* @brief Set the formula to the given string.
|
|
317
|
+
* @param formulaString String holding the formula.
|
|
318
|
+
* @param resetValue if true (XLResetValue), the cell value will be set to 0, if false (XLPreserveValue), it will remain unchanged
|
|
319
|
+
*/
|
|
320
|
+
void setFormulaString(const char* formulaString, bool resetValue = XLResetValue);
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* @brief Get the underlying XLFormula object.
|
|
324
|
+
* @return A XLFormula object.
|
|
325
|
+
* @throw XLFormulaError if the formula is of 'shared' or 'array' types.
|
|
326
|
+
*/
|
|
327
|
+
XLFormula getFormula() const;
|
|
328
|
+
|
|
329
|
+
//---------- Private Member Variables ---------- //
|
|
330
|
+
XLCell* m_cell; /**< Pointer to the owning XLCell object. */
|
|
331
|
+
XMLNode* m_cellNode; /**< Pointer to corresponding XML cell node. */
|
|
332
|
+
};
|
|
333
|
+
} // namespace OpenXLSX
|
|
334
|
+
|
|
335
|
+
// ========== FRIEND FUNCTION IMPLEMENTATIONS ========== //
|
|
336
|
+
namespace OpenXLSX
|
|
337
|
+
{
|
|
338
|
+
/**
|
|
339
|
+
* @brief
|
|
340
|
+
* @param lhs
|
|
341
|
+
* @param rhs
|
|
342
|
+
* @return
|
|
343
|
+
*/
|
|
344
|
+
inline bool operator==(const XLFormula& lhs, const XLFormula& rhs) { return lhs.m_formulaString == rhs.m_formulaString; }
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* @brief
|
|
348
|
+
* @param lhs
|
|
349
|
+
* @param rhs
|
|
350
|
+
* @return
|
|
351
|
+
*/
|
|
352
|
+
inline bool operator!=(const XLFormula& lhs, const XLFormula& rhs) { return lhs.m_formulaString != rhs.m_formulaString; }
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* @brief send a formula string to an ostream
|
|
356
|
+
* @param os the output destination
|
|
357
|
+
* @param value the formula to send to os
|
|
358
|
+
* @return
|
|
359
|
+
*/
|
|
360
|
+
inline std::ostream& operator<<(std::ostream& os, const XLFormula& value) { return os << value.m_formulaString; }
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* @brief send a formula string to an ostream
|
|
364
|
+
* @param os the output destination
|
|
365
|
+
* @param value the formula proxy whose formula to send to os
|
|
366
|
+
* @return
|
|
367
|
+
*/
|
|
368
|
+
inline std::ostream& operator<<(std::ostream& os, const XLFormulaProxy& value) { return os << value.get(); }
|
|
369
|
+
} // namespace OpenXLSX
|
|
370
|
+
|
|
371
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
372
|
+
# pragma warning(pop)
|
|
373
|
+
#endif // _MSC_VER
|
|
374
|
+
|
|
375
|
+
#endif // OPENXLSX_XLFORMULA_HPP
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Kenneth Balslev on 22/08/2020.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#ifndef OPENXLSX_XLITERATOR_HPP
|
|
6
|
+
#define OPENXLSX_XLITERATOR_HPP
|
|
7
|
+
|
|
8
|
+
#include <memory> // std::unique_ptr
|
|
9
|
+
|
|
10
|
+
namespace OpenXLSX
|
|
11
|
+
{
|
|
12
|
+
enum class XLIteratorDirection { Forward, Reverse };
|
|
13
|
+
enum class XLIteratorLocation { Begin, End };
|
|
14
|
+
|
|
15
|
+
template<typename T>
|
|
16
|
+
class OPENXLSX_EXPORT XLReverseRange {
|
|
17
|
+
public:
|
|
18
|
+
/**
|
|
19
|
+
* @brief Construct a reverse range from an lvalue (existing variable)
|
|
20
|
+
*/
|
|
21
|
+
XLReverseRange(T& rr)
|
|
22
|
+
: m_RR(nullptr),
|
|
23
|
+
m_rr(rr)
|
|
24
|
+
{}
|
|
25
|
+
/**
|
|
26
|
+
* @brief Construct a reverse range from an rvalue (temporary variable)
|
|
27
|
+
*/
|
|
28
|
+
XLReverseRange(T&& rr)
|
|
29
|
+
: m_RR(std::make_unique<T>(rr)),
|
|
30
|
+
m_rr(*m_RR)
|
|
31
|
+
{}
|
|
32
|
+
typename T::reverse_iterator begin() { return m_rr.rbegin(); }
|
|
33
|
+
typename T::reverse_iterator end() { return m_rr.rend(); }
|
|
34
|
+
private:
|
|
35
|
+
std::unique_ptr<T> m_RR;
|
|
36
|
+
T& m_rr;
|
|
37
|
+
};
|
|
38
|
+
} // namespace OpenXLSX
|
|
39
|
+
|
|
40
|
+
#endif // OPENXLSX_XLITERATOR_HPP
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLMERGECELLS_HPP
|
|
47
|
+
#define OPENXLSX_XLMERGECELLS_HPP
|
|
48
|
+
|
|
49
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
50
|
+
# pragma warning(push)
|
|
51
|
+
# pragma warning(disable : 4251)
|
|
52
|
+
# pragma warning(disable : 4275)
|
|
53
|
+
#endif // _MSC_VER
|
|
54
|
+
|
|
55
|
+
#include <deque>
|
|
56
|
+
#include <limits> // std::numeric_limits
|
|
57
|
+
#include <memory> // std::unique_ptr
|
|
58
|
+
#include <ostream> // std::basic_ostream
|
|
59
|
+
#include <string>
|
|
60
|
+
#include <string_view> // std::string_view
|
|
61
|
+
#include <vector> // std::vector
|
|
62
|
+
|
|
63
|
+
// ===== OpenXLSX Includes ===== //
|
|
64
|
+
#include "OpenXLSX-Exports.hpp"
|
|
65
|
+
#include "XLCellReference.hpp"
|
|
66
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
67
|
+
|
|
68
|
+
namespace OpenXLSX
|
|
69
|
+
{
|
|
70
|
+
typedef int32_t XLMergeIndex;
|
|
71
|
+
constexpr const XLMergeIndex XLMergeNotFound = -1;
|
|
72
|
+
|
|
73
|
+
// pull request #261: wrapped max in parentheses to prevent expansion of windows.h "max" macro
|
|
74
|
+
constexpr size_t XLMaxMergeCells = (std::numeric_limits< XLMergeIndex >::max)();
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @brief This class encapsulate the Excel concept of <mergeCells>. Each worksheet that has merged cells has a list of
|
|
78
|
+
* (empty) <mergeCell> elements within that array, with a sole attribute ref="..." with ... being a range reference, e.g. A1:B5
|
|
79
|
+
* Unfortunately, since an empty <mergeCells> element is not allowed, the class must have access to the worksheet root node and
|
|
80
|
+
* delete the <mergeCells> element each time the merge count is zero
|
|
81
|
+
*/
|
|
82
|
+
class OPENXLSX_EXPORT XLMergeCells
|
|
83
|
+
{
|
|
84
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
85
|
+
// Public Member Functions
|
|
86
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
87
|
+
|
|
88
|
+
public:
|
|
89
|
+
/**
|
|
90
|
+
* @brief
|
|
91
|
+
*/
|
|
92
|
+
XLMergeCells();
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @brief
|
|
96
|
+
* @param node The root node of the worksheet document - must not be an empty node
|
|
97
|
+
* @param nodeOrder the worksheet node sequence to respect when inserting <mergeCells> node
|
|
98
|
+
*/
|
|
99
|
+
explicit XLMergeCells(const XMLNode& rootNode, std::vector< std::string_view > const & nodeOrder);
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @brief Destructor
|
|
103
|
+
*/
|
|
104
|
+
~XLMergeCells();
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @brief Copy constructor
|
|
108
|
+
* @param other
|
|
109
|
+
*/
|
|
110
|
+
XLMergeCells(const XLMergeCells& other);
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @brief Move constructor
|
|
114
|
+
* @param other
|
|
115
|
+
*/
|
|
116
|
+
XLMergeCells(XLMergeCells&& other);
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @brief Copy assignment operator
|
|
120
|
+
* @param other
|
|
121
|
+
* @return
|
|
122
|
+
*/
|
|
123
|
+
XLMergeCells& operator=(const XLMergeCells& other);
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @brief Move assignment operator
|
|
127
|
+
* @param other
|
|
128
|
+
* @return
|
|
129
|
+
*/
|
|
130
|
+
XLMergeCells& operator=(XLMergeCells&& other);
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @brief test if XLMergeCells has been initialized with a valid XMLNode
|
|
134
|
+
* @return true if m_rootNode is neither nullptr nor an empty XMLNode
|
|
135
|
+
*/
|
|
136
|
+
bool valid() const;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @brief get the index of a <mergeCell> entry by its reference
|
|
140
|
+
* @param reference the reference to search for
|
|
141
|
+
* @return XLMergeNotFound (-1) if no such reference exists, 0-based index otherwise
|
|
142
|
+
*/
|
|
143
|
+
XLMergeIndex findMerge(const std::string& reference) const;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @brief test if a mergeCell with reference exists, equivalent to findMerge(reference) >= 0
|
|
147
|
+
* @param reference the reference to find
|
|
148
|
+
* @return true if reference exists, false otherwise
|
|
149
|
+
*/
|
|
150
|
+
bool mergeExists(const std::string& reference) const;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @brief get the index of a <mergeCell> entry of which cellReference is a part
|
|
154
|
+
* @param cellRef the cell reference (string or XLCellReference) to search for in the merged ranges
|
|
155
|
+
* @return XLMergeNotFound (-1) if no such reference exists, 0-based index otherwise
|
|
156
|
+
*/
|
|
157
|
+
XLMergeIndex findMergeByCell(const std::string& cellRef) const;
|
|
158
|
+
XLMergeIndex findMergeByCell(XLCellReference cellRef) const;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @brief get the amount of entries in <mergeCells>
|
|
162
|
+
* @return the count of defined cell merges
|
|
163
|
+
*/
|
|
164
|
+
size_t count() const;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @brief return the cell reference string for the given index
|
|
168
|
+
* @param index
|
|
169
|
+
* @return
|
|
170
|
+
*/
|
|
171
|
+
const char* merge(XLMergeIndex index) const;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @brief Operator overload: allow [] as shortcut access to merge
|
|
175
|
+
*/
|
|
176
|
+
const char* operator[](XLMergeIndex index) const { return merge(index); }
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* @brief Append a new merge to the list of merges
|
|
180
|
+
* @param reference The reference to append.
|
|
181
|
+
* @return An XLMergeIndex with the index of the appended merge
|
|
182
|
+
* @throws XLInputException if the reference would overlap with an existing reference
|
|
183
|
+
*/
|
|
184
|
+
XLMergeIndex appendMerge(const std::string& reference);
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* @brief Delete the merge at the given index.
|
|
188
|
+
* @param index The index to delete
|
|
189
|
+
* @note Previously obtained merge indexes will be invalidated when calling deleteMerge
|
|
190
|
+
* @throws XLInputException if the index does not exist
|
|
191
|
+
*/
|
|
192
|
+
void deleteMerge(XLMergeIndex index);
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @brief Delete all merges of the worksheet
|
|
196
|
+
*/
|
|
197
|
+
void deleteAll();
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @brief print the XML contents of the mergeCells array using the underlying XMLNode print function
|
|
201
|
+
*/
|
|
202
|
+
void print(std::basic_ostream<char>& ostr) const;
|
|
203
|
+
|
|
204
|
+
private:
|
|
205
|
+
std::unique_ptr<XMLNode> m_rootNode; /**< An XMLNode object with the worksheet root node (document element) */
|
|
206
|
+
std::vector< std::string_view > m_nodeOrder; /**< worksheet XML root node required child sequence as passed into constructor */
|
|
207
|
+
std::unique_ptr<XMLNode> m_mergeCellsNode; /**< An XMLNode object with the mergeCells item */
|
|
208
|
+
std::deque<std::string> m_referenceCache;
|
|
209
|
+
};
|
|
210
|
+
} // namespace OpenXLSX
|
|
211
|
+
|
|
212
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
213
|
+
# pragma warning(pop)
|
|
214
|
+
#endif // _MSC_VER
|
|
215
|
+
|
|
216
|
+
#endif // OPENXLSX_XLMERGECELLS_HPP
|