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.
Files changed (428) hide show
  1. package/NitroXlsx.podspec +27 -27
  2. package/Package.swift +35 -10
  3. package/README.md +220 -58
  4. package/android/CMakeLists.txt +24 -27
  5. package/android/cpp-adapter.cpp +12 -0
  6. package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
  7. package/cpp/HybridNitroXlsx.cpp +25 -179
  8. package/cpp/HybridNitroXlsx.hpp +2 -2
  9. package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
  10. package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
  11. package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
  12. package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
  13. package/cpp/HybridXlsxWorkbook.cpp +159 -196
  14. package/cpp/HybridXlsxWorkbook.hpp +7 -2
  15. package/cpp/HybridXlsxWorksheet.cpp +433 -62
  16. package/cpp/HybridXlsxWorksheet.hpp +73 -26
  17. package/cpp/XlsxCacheDir.cpp +76 -0
  18. package/cpp/XlsxCacheDir.hpp +27 -0
  19. package/cpp/XlsxError.hpp +68 -0
  20. package/cpp/XlsxJson.cpp +185 -0
  21. package/cpp/XlsxJson.hpp +36 -0
  22. package/ios/XlsxCacheDir.mm +60 -0
  23. package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
  25. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
  26. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
  27. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
  28. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
  29. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
  30. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
  31. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
  32. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
  33. package/package.json +3 -3
  34. package/scripts/run-cpp-tests.sh +14 -0
  35. package/src/__mocks__/react-native-nitro-modules.ts +1 -0
  36. package/src/__tests__/index.test.ts +76 -7
  37. package/src/index.ts +107 -18
  38. package/src/specs/NitroXlsx.nitro.ts +141 -44
  39. package/thirdparty/OpenXLSX/.clang-format +118 -0
  40. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  41. package/thirdparty/OpenXLSX/.gitignore +130 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  45. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  46. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  47. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  48. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  49. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  50. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  51. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  52. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  53. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  54. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  55. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  56. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  57. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  58. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  59. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  60. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  61. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  62. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  63. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  64. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  65. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  66. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  67. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  68. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  69. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  70. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  71. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  72. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  73. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  74. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  75. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  76. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  77. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  78. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  79. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  80. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  81. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  82. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  83. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  84. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  155. package/thirdparty/OpenXLSX/README.md +1279 -0
  156. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  157. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  158. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  159. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  160. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  161. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  162. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  163. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  164. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  165. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  166. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  167. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  168. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  169. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  170. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  171. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  172. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  173. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  174. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  175. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  176. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  177. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  178. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  179. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  180. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  181. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  182. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  183. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  184. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  185. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  186. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  187. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  188. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  189. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  190. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  191. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  192. package/thirdparty/README.md +42 -0
  193. package/thirdparty/miniz/.clang-format +47 -0
  194. package/thirdparty/miniz/.travis.yml +2 -0
  195. package/thirdparty/miniz/CMakeLists.txt +333 -0
  196. package/thirdparty/miniz/CMakePresets.json +31 -0
  197. package/thirdparty/miniz/ChangeLog.md +272 -0
  198. package/thirdparty/miniz/Config.cmake.in +1 -0
  199. package/thirdparty/miniz/LICENSE +22 -0
  200. package/thirdparty/miniz/amalgamate.sh +57 -0
  201. package/thirdparty/miniz/examples/example1.c +105 -0
  202. package/thirdparty/miniz/examples/example2.c +164 -0
  203. package/thirdparty/miniz/examples/example3.c +269 -0
  204. package/thirdparty/miniz/examples/example4.c +102 -0
  205. package/thirdparty/miniz/examples/example5.c +327 -0
  206. package/thirdparty/miniz/examples/example6.c +189 -0
  207. package/thirdparty/miniz/meson.build +21 -0
  208. package/thirdparty/miniz/miniz.c +646 -0
  209. package/thirdparty/miniz/miniz.h +615 -0
  210. package/thirdparty/miniz/miniz.pc.in +13 -0
  211. package/thirdparty/miniz/miniz_common.h +89 -0
  212. package/thirdparty/miniz/miniz_export.h +20 -0
  213. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  214. package/thirdparty/miniz/miniz_tdef.h +199 -0
  215. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  216. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  217. package/thirdparty/miniz/miniz_zip.c +4895 -0
  218. package/thirdparty/miniz/miniz_zip.h +454 -0
  219. package/thirdparty/miniz/readme.md +46 -0
  220. package/thirdparty/miniz/test.sh +36 -0
  221. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  222. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  223. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  224. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  225. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  226. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  227. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  228. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  229. package/thirdparty/miniz/tests/main.cpp +185 -0
  230. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  231. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  232. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  233. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  234. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  235. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  236. package/thirdparty/miniz/tests/timer.cpp +152 -0
  237. package/thirdparty/miniz/tests/timer.h +40 -0
  238. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  239. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  240. package/thirdparty/miniz/tests/zip.dict +9 -0
  241. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  242. package/thirdparty/pugixml/.codecov.yml +7 -0
  243. package/thirdparty/pugixml/.gitattributes +1 -0
  244. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  245. package/thirdparty/pugixml/LICENSE.md +24 -0
  246. package/thirdparty/pugixml/Makefile +98 -0
  247. package/thirdparty/pugixml/README.md +81 -0
  248. package/thirdparty/pugixml/SECURITY.md +9 -0
  249. package/thirdparty/pugixml/appveyor.yml +50 -0
  250. package/thirdparty/pugixml/docs/config.adoc +7 -0
  251. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  252. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  253. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  254. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  255. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  256. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  257. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  258. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  259. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  260. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  261. package/thirdparty/pugixml/docs/manual.html +6395 -0
  262. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  263. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  264. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  265. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  266. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  267. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  268. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  269. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  270. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  271. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  272. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  273. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  274. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  275. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  276. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  277. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  278. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  279. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  280. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  281. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  282. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  283. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  284. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  285. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  286. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  287. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  288. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  289. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  290. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  291. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  292. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  293. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  294. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  295. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  296. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  297. package/thirdparty/pugixml/readme.txt +50 -0
  298. package/thirdparty/pugixml/scripts/archive.py +54 -0
  299. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  300. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  301. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  302. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  303. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  304. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  305. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  306. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  307. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  308. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  309. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  310. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  311. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  312. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  313. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  314. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  315. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  316. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  317. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  318. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  319. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  320. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  321. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  322. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  323. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  324. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  325. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  326. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  327. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  328. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  329. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  330. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  331. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  332. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  333. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  334. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  335. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  336. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  337. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  338. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  339. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  340. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  341. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  342. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  343. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  344. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  345. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  346. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  347. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  348. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  349. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  350. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  351. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  352. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  353. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  354. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  355. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  356. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  357. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  358. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  359. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  360. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  361. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  362. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  363. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  365. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  366. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  367. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  368. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  369. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  370. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  371. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  372. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  373. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  374. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  375. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  376. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  377. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  378. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  379. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  380. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  381. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  382. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  383. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  384. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  385. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  386. package/thirdparty/pugixml/tests/main.cpp +218 -0
  387. package/thirdparty/pugixml/tests/test.cpp +220 -0
  388. package/thirdparty/pugixml/tests/test.hpp +175 -0
  389. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  390. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  391. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  392. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  393. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  394. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  395. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  396. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  397. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  398. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  399. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  400. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  401. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  402. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  403. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  404. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  405. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  406. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  407. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  408. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  409. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  410. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  411. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  412. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  413. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  414. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  415. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  416. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  417. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  418. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  419. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  420. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  421. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  422. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  423. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  424. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  425. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  426. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  427. package/ios/dummy.swift +0 -2
  428. package/scripts/prepare-openxlsx.js +0 -109
package/src/index.ts CHANGED
@@ -1,21 +1,117 @@
1
1
  import { NitroModules } from 'react-native-nitro-modules'
2
- import type { NitroXlsx as NitroXlsxSpec, XlsxWorkbook as XlsxWorkbookSpec } from './specs/NitroXlsx.nitro'
2
+ import type {
3
+ NitroXlsx as NitroXlsxSpec
4
+ } from './specs/NitroXlsx.nitro'
3
5
 
4
- const NitroXlsxBridge = NitroModules.createHybridObject<NitroXlsxSpec>('NitroXlsx')
6
+ export const NitroXlsx = NitroModules.createHybridObject<NitroXlsxSpec>('NitroXlsx')
5
7
 
6
- type JsonRecord = Record<string, string | number>
8
+ export type {
9
+ XlsxWorkbook,
10
+ XlsxWorksheet,
11
+ XlsxCellFormat,
12
+ XlsxConditionalFormat,
13
+ XlsxConditionalFormats,
14
+ CellType,
15
+ } from './specs/NitroXlsx.nitro'
7
16
 
8
- export const NitroXlsx = Object.assign(NitroXlsxBridge, {
9
- fromJSON(data: JsonRecord[]): XlsxWorkbookSpec {
10
- return NitroXlsxBridge.fromJSON(JSON.stringify(data))
11
- },
12
- })
17
+ /**
18
+ * Error codes emitted by the native layer.
19
+ * Native errors arrive as `Error` with message `methodName: CODE: detail`.
20
+ */
21
+ export const XlsxErrorCode = {
22
+ INVALID_ARGUMENT: 'INVALID_ARGUMENT',
23
+ SHEET_NOT_FOUND: 'SHEET_NOT_FOUND',
24
+ SHEET_EXISTS: 'SHEET_EXISTS',
25
+ INDEX_OUT_OF_RANGE: 'INDEX_OUT_OF_RANGE',
26
+ CELL_NOT_FOUND: 'CELL_NOT_FOUND',
27
+ WORKBOOK_CLOSED: 'WORKBOOK_CLOSED',
28
+ IO_ERROR: 'IO_ERROR',
29
+ UNSUPPORTED: 'UNSUPPORTED',
30
+ XLSX_ERROR: 'XLSX_ERROR',
31
+ INTERNAL_ERROR: 'INTERNAL_ERROR',
32
+ } as const
33
+
34
+ export type XlsxErrorCode = (typeof XlsxErrorCode)[keyof typeof XlsxErrorCode]
35
+
36
+ /**
37
+ * Structured XLSX error. Use `XlsxError.from(caught)` to convert a native throw.
38
+ */
39
+ export class XlsxError extends Error {
40
+ readonly code: XlsxErrorCode | string
13
41
 
14
- export function toJSON(workbook: XlsxWorkbookSpec, keys?: string[]): JsonRecord[] {
15
- return JSON.parse(workbook.toJSON(keys))
42
+ constructor(code: XlsxErrorCode | string, message: string) {
43
+ super(`[${code}] ${message}`)
44
+ this.name = 'XlsxError'
45
+ this.code = code
46
+ }
47
+
48
+ /**
49
+ * Convert an error thrown by the native module into an XlsxError.
50
+ * Non-XLSX errors are wrapped with code INTERNAL_ERROR.
51
+ */
52
+ static from(error: unknown): XlsxError {
53
+ if (error instanceof XlsxError) return error
54
+ const message = error instanceof Error ? error.message : String(error)
55
+ // Nitro prefixes "methodName: " then our "CODE: detail"
56
+ const match = message.match(/(?:^|:\s*)([A-Z_]+):\s*(.*)$/)
57
+ if (match && match[1] && (Object.values(XlsxErrorCode) as string[]).includes(match[1])) {
58
+ return new XlsxError(match[1], match[2] ?? '')
59
+ }
60
+ return new XlsxError(XlsxErrorCode.INTERNAL_ERROR, message)
61
+ }
16
62
  }
17
63
 
18
- export type { XlsxWorkbook, XlsxWorksheet, XlsxCellFormat } from './specs/NitroXlsx.nitro'
64
+ // Conditional formatting rule types (OpenXLSX XLCfType)
65
+ export const CfType = {
66
+ EXPRESSION: 0,
67
+ CELL_IS: 1,
68
+ COLOR_SCALE: 2,
69
+ DATA_BAR: 3,
70
+ ICON_SET: 4,
71
+ TOP10: 5,
72
+ UNIQUE_VALUES: 6,
73
+ DUPLICATE_VALUES: 7,
74
+ CONTAINS_TEXT: 8,
75
+ NOT_CONTAINS_TEXT: 9,
76
+ BEGINS_WITH: 10,
77
+ ENDS_WITH: 11,
78
+ CONTAINS_BLANKS: 12,
79
+ NOT_CONTAINS_BLANKS: 13,
80
+ CONTAINS_ERRORS: 14,
81
+ NOT_CONTAINS_ERRORS: 15,
82
+ TIME_PERIOD: 16,
83
+ ABOVE_AVERAGE: 17,
84
+ } as const
85
+
86
+ // Conditional formatting operators (OpenXLSX XLCfOperator)
87
+ export const CfOperator = {
88
+ LESS_THAN: 0,
89
+ LESS_THAN_OR_EQUAL: 1,
90
+ EQUAL: 2,
91
+ NOT_EQUAL: 3,
92
+ GREATER_THAN_OR_EQUAL: 4,
93
+ GREATER_THAN: 5,
94
+ BETWEEN: 6,
95
+ NOT_BETWEEN: 7,
96
+ CONTAINS_TEXT: 8,
97
+ NOT_CONTAINS: 9,
98
+ BEGINS_WITH: 10,
99
+ ENDS_WITH: 11,
100
+ } as const
101
+
102
+ // Conditional formatting time periods (OpenXLSX XLCfTimePeriod)
103
+ export const CfTimePeriod = {
104
+ TODAY: 0,
105
+ YESTERDAY: 1,
106
+ TOMORROW: 2,
107
+ LAST_7_DAYS: 3,
108
+ THIS_MONTH: 4,
109
+ LAST_MONTH: 5,
110
+ NEXT_MONTH: 6,
111
+ THIS_WEEK: 7,
112
+ LAST_WEEK: 8,
113
+ NEXT_WEEK: 9,
114
+ } as const
19
115
 
20
116
  // Cell alignment (based on OpenXLSX XLAlignmentStyle)
21
117
  export const Align = {
@@ -197,11 +293,4 @@ export const NumFormat = {
197
293
  TIME_4: 23,
198
294
  DATETIME: 22,
199
295
  TEXT: 49,
200
- } as const
201
-
202
- // Image object position
203
- export const ImagePosition = {
204
- MOVE_AND_SIZE: 1,
205
- MOVE_DONT_SIZE: 2,
206
- DONT_MOVE_DONT_SIZE: 3,
207
296
  } as const
@@ -1,4 +1,4 @@
1
- import { type HybridObject } from 'react-native-nitro-modules'
1
+ import { type HybridObject, type AnyMap } from 'react-native-nitro-modules'
2
2
 
3
3
  export type CellType = 'empty' | 'string' | 'number' | 'boolean' | 'date' | 'error' | 'formula' | 'blank'
4
4
 
@@ -8,9 +8,12 @@ export interface XlsxWorkbook extends HybridObject<{ ios: 'c++'; android: 'c++'
8
8
  getWorksheetByName(name: string): XlsxWorksheet
9
9
  getOrAddWorksheet(name: string): XlsxWorksheet
10
10
  getWorksheetCount(): number
11
+ deleteSheet(name: string): void
12
+ updateSheetName(oldName: string, newName: string): void
13
+ clone(existingName: string, newName: string): XlsxWorksheet
11
14
  addCellFormat(): XlsxCellFormat
12
15
  getBuffer(): Promise<ArrayBuffer>
13
- toJSON(keys?: string[]): string
16
+ toJSON(): Record<string, Array<AnyMap>>
14
17
  }
15
18
 
16
19
  export interface XlsxWorksheet extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
@@ -19,73 +22,167 @@ export interface XlsxWorksheet extends HybridObject<{ ios: 'c++'; android: 'c++'
19
22
  writeNumber(row: number, col: number, value: number, format?: XlsxCellFormat): void
20
23
  writeBoolean(row: number, col: number, value: boolean, format?: XlsxCellFormat): void
21
24
  writeBlank(row: number, col: number, format?: XlsxCellFormat): void
22
-
25
+
23
26
  // Formula support
24
27
  writeFormula(row: number, col: number, formula: string, format?: XlsxCellFormat): void
25
28
  writeFormulaNum(row: number, col: number, formula: string, number: number, format?: XlsxCellFormat): void
26
29
  writeFormulaString(row: number, col: number, formula: string, str: string, format?: XlsxCellFormat): void
27
30
  writeFormulaBoolean(row: number, col: number, formula: string, boolVal: boolean, format?: XlsxCellFormat): void
28
31
  writeArrayFormula(firstRow: number, firstCol: number, lastRow: number, lastCol: number, formula: string, format?: XlsxCellFormat): void
29
-
32
+
30
33
  // Date/DateTime support
31
34
  writeDatetime(row: number, col: number, datetime: number, format?: XlsxCellFormat): void
32
35
  writeURL(row: number, col: number, url: string, format?: XlsxCellFormat): void
33
-
36
+
34
37
  // Column/Row operations
35
38
  setColumn(firstCol: number, lastCol: number, width: number, format?: XlsxCellFormat): void
36
39
  setRow(row: number, height: number, format?: XlsxCellFormat): void
37
-
40
+ deleteRow(row: number): boolean
41
+ deleteColumn(col: number): boolean
42
+
38
43
  // Merge cells
39
44
  mergeRange(firstRow: number, firstCol: number, lastRow: number, lastCol: number, value: string, format?: XlsxCellFormat): void
40
45
  mergeRangeNum(firstRow: number, firstCol: number, lastRow: number, lastCol: number, value: number, format?: XlsxCellFormat): void
41
-
42
- // Image (uses file path)
43
- insertImage(row: number, col: number, path: string, xOffset?: number, yOffset?: number, xScale?: number, yScale?: number): void
44
- insertImageBuffer(row: number, col: number, buffer: ArrayBuffer, extension: string, xOffset?: number, yOffset?: number, xScale?: number, yScale?: number): void
45
-
46
- // Autofilter
47
- autofilter(firstRow: number, firstCol: number, lastRow: number, lastCol: number): void
48
-
49
- // Freeze/Split panes
50
- freezePanes(row: number, col: number): void
51
- splitPanes(row: number, col: number): void
52
-
46
+ unmergeCells(firstRow: number, firstCol: number, lastRow: number, lastCol: number): void
47
+
53
48
  // Tab appearance
54
- setTabColor(color: number): void
55
49
  hide(): void
56
50
  activate(): void
57
- setFirstSheet(): void
51
+
52
+ // Sheet protection
58
53
  protect(password?: string): void
59
-
60
- // Page setup
61
- setPortrait(): void
62
- setLandscape(): void
63
- setPaper(paperType: number): void
64
- setHeader(header: string): void
65
- setFooter(footer: string): void
66
- setPrintArea(firstRow: number, firstCol: number, lastRow: number, lastCol: number): void
67
- fitToPages(width: number, height: number): void
68
- setZoom(scale: number): void
69
- setGridlines(option: number): void
70
- centerHorizontally(): void
71
- centerVertically(): void
72
-
54
+ protectSheet(set?: boolean): void
55
+ protectObjects(set?: boolean): void
56
+ protectScenarios(set?: boolean): void
57
+
58
+ // Password
59
+ setPassword(password: string): void
60
+ setPasswordHash(hash: string): void
61
+ clearPassword(): void
62
+ clearSheetProtection(): void
63
+
64
+ // Fine-grained permissions (allow*/deny* pairs)
65
+ allowInsertColumns(set?: boolean): void
66
+ allowInsertRows(set?: boolean): void
67
+ allowDeleteColumns(set?: boolean): void
68
+ allowDeleteRows(set?: boolean): void
69
+ allowSelectLockedCells(set?: boolean): void
70
+ allowSelectUnlockedCells(set?: boolean): void
71
+
72
+ denyInsertColumns(): void
73
+ denyInsertRows(): void
74
+ denyDeleteColumns(): void
75
+ denyDeleteRows(): void
76
+ denySelectLockedCells(): void
77
+ denySelectUnlockedCells(): void
78
+
79
+ // Protection state
80
+ sheetProtected(): boolean
81
+ objectsProtected(): boolean
82
+ scenariosProtected(): boolean
83
+ insertColumnsAllowed(): boolean
84
+ insertRowsAllowed(): boolean
85
+ deleteColumnsAllowed(): boolean
86
+ deleteRowsAllowed(): boolean
87
+ selectLockedCellsAllowed(): boolean
88
+ selectUnlockedCellsAllowed(): boolean
89
+ passwordIsSet(): boolean
90
+ passwordHash(): string
91
+ sheetProtectionSummary(): string
92
+
73
93
  // Outline/Grouping
74
- setOutline(level: number): void
75
94
  setColumnHidden(firstCol: number, lastCol: number, hidden: boolean): void
76
95
  setRowHidden(row: number, hidden: boolean): void
77
96
 
97
+ // Comments (XLComments)
98
+ setComment(row: number, col: number, text: string, authorId?: number): void
99
+ getComment(row: number, col: number): string
100
+ hasComment(row: number, col: number): boolean
101
+ deleteComment(row: number, col: number): boolean
102
+ getCommentCount(): number
103
+ addCommentAuthor(author: string): number
104
+ getCommentAuthor(authorId: number): string
105
+
106
+ // Conditional formatting (XLConditionalFormats)
107
+ getConditionalFormats(): XlsxConditionalFormats
108
+
78
109
  // Read methods
79
110
  getCellValue(row: number, col: number): string | number | boolean | null
80
111
  getCellString(row: number, col: number): string
81
112
  getCellRawValue(row: number, col: number): string
82
113
  getCellType(row: number, col: number): CellType
83
114
  getCellFormat(row: number, col: number): XlsxCellFormat
115
+ hasFormula(row: number, col: number): boolean
116
+ formula(row: number, col: number): string
117
+ findCell(row: number, col: number): boolean
84
118
  getRowCount(): number
85
119
  getColumnCount(): number
86
120
  getLastRow(): number
87
121
  getLastColumn(): number
88
122
  getName(): string
123
+
124
+ // JSON import / export for this worksheet
125
+ toJSON(keys?: string[]): Array<AnyMap>
126
+ fromJSON(data: Array<AnyMap>): void
127
+ }
128
+
129
+ /**
130
+ * A single <conditionalFormatting> entry: a cell range (sqref) plus its cfRules.
131
+ */
132
+ export interface XlsxConditionalFormat extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
133
+ getSqref(): string
134
+ setSqref(sqref: string): void
135
+
136
+ // Rule collection
137
+ getRuleCount(): number
138
+ createRule(): number
139
+ deleteRule(index: number): boolean
140
+
141
+ // Rule type / dxf
142
+ getRuleType(index: number): number
143
+ setRuleType(index: number, type: number): void
144
+ getRuleDxfId(index: number): number
145
+ setRuleDxfId(index: number, dxfId: number): void
146
+
147
+ // Rule formula (supports up to 3 formulas: formula/formula2/formula3)
148
+ getRuleFormula(index: number, formulaIndex: number): string
149
+ setRuleFormula(index: number, formulaIndex: number, formula: string): void
150
+
151
+ // Rule attributes
152
+ getRuleOperator(index: number): number
153
+ setRuleOperator(index: number, op: number): void
154
+ getRuleText(index: number): string
155
+ setRuleText(index: number, text: string): void
156
+ getRulePriority(index: number): number
157
+ setRulePriority(index: number, priority: number): void
158
+ getRuleStopIfTrue(index: number): boolean
159
+ setRuleStopIfTrue(index: number, stop: boolean): void
160
+ getRuleTimePeriod(index: number): number
161
+ setRuleTimePeriod(index: number, period: number): void
162
+ getRuleRank(index: number): number
163
+ setRuleRank(index: number, rank: number): void
164
+ getRuleStdDev(index: number): number
165
+ setRuleStdDev(index: number, stdDev: number): void
166
+ getRuleAboveAverage(index: number): boolean
167
+ setRuleAboveAverage(index: number, set: boolean): void
168
+ getRulePercent(index: number): boolean
169
+ setRulePercent(index: number, set: boolean): void
170
+ getRuleBottom(index: number): boolean
171
+ setRuleBottom(index: number, set: boolean): void
172
+ getRuleEqualAverage(index: number): boolean
173
+ setRuleEqualAverage(index: number, set: boolean): void
174
+
175
+ summary(): string
176
+ }
177
+
178
+ /**
179
+ * All <conditionalFormatting> entries of a worksheet.
180
+ */
181
+ export interface XlsxConditionalFormats extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
182
+ getCount(): number
183
+ create(sqref: string): XlsxConditionalFormat
184
+ getByIndex(index: number): XlsxConditionalFormat
185
+ summary(): string
89
186
  }
90
187
 
91
188
  export interface XlsxCellFormat extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
@@ -98,7 +195,7 @@ export interface XlsxCellFormat extends HybridObject<{ ios: 'c++'; android: 'c++
98
195
  setItalic(): void
99
196
  setUnderline(style?: number): void
100
197
  setStrikeout(): void
101
-
198
+
102
199
  // Alignment
103
200
  setAlign(align: number): void
104
201
  setVerticalAlign(align: number): void
@@ -106,16 +203,16 @@ export interface XlsxCellFormat extends HybridObject<{ ios: 'c++'; android: 'c++
106
203
  setRotation(angle: number): void
107
204
  setIndent(level: number): void
108
205
  setShrink(): void
109
-
206
+
110
207
  // Number format
111
208
  setNumFormat(format: string): void
112
209
  setNumFormatIndex(index: number): void
113
-
210
+
114
211
  // Colors/Pattern
115
212
  setBgColor(color: number): void
116
213
  setFgColor(color: number): void
117
214
  setPattern(pattern: number): void
118
-
215
+
119
216
  // Borders
120
217
  setBorder(style: number): void
121
218
  setBorderColor(color: number): void
@@ -129,11 +226,11 @@ export interface XlsxCellFormat extends HybridObject<{ ios: 'c++'; android: 'c++
129
226
  setRightColor(color: number): void
130
227
  setDiagonal(style: number): void
131
228
  setDiagonalColor(color: number): void
132
-
229
+
133
230
  // Protection
134
231
  setLocked(): void
135
232
  setUnlocked(): void
136
-
233
+
137
234
  // Other
138
235
  setHyperlink(): void
139
236
  setFontOnly(): void
@@ -149,8 +246,8 @@ export interface XlsxCellFormat extends HybridObject<{ ios: 'c++'; android: 'c++
149
246
  }
150
247
 
151
248
  export interface NitroXlsx extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
152
- createWorkbook(tempDir?: string): XlsxWorkbook
249
+ createWorkbook(): XlsxWorkbook
153
250
  openWorkbook(path: string): XlsxWorkbook
154
251
  openWorkbookFromBuffer(buffer: ArrayBuffer): XlsxWorkbook
155
- fromJSON(data: string): XlsxWorkbook
156
- }
252
+ fromJSON(data: Record<string, Array<AnyMap>>): XlsxWorkbook
253
+ }
@@ -0,0 +1,118 @@
1
+ Language: Cpp
2
+ Standard: c++11
3
+ AccessModifierOffset: -4
4
+ AlignAfterOpenBracket: Align
5
+ AlignConsecutiveAssignments: true
6
+ AlignConsecutiveDeclarations: true
7
+ AlignEscapedNewlines: Left
8
+ AlignOperands: Align
9
+ AlignTrailingComments: true
10
+ AllowAllArgumentsOnNextLine: false
11
+ AllowAllConstructorInitializersOnNextLine: false
12
+ AllowAllParametersOfDeclarationOnNextLine: false
13
+ AllowShortBlocksOnASingleLine: Always
14
+ AllowShortCaseLabelsOnASingleLine: false
15
+ AllowShortEnumsOnASingleLine: true
16
+ AllowShortFunctionsOnASingleLine: All
17
+ AllowShortIfStatementsOnASingleLine: WithoutElse
18
+ AllowShortLambdasOnASingleLine: All
19
+ AllowShortLoopsOnASingleLine: true
20
+ AlwaysBreakAfterReturnType: None
21
+ AlwaysBreakBeforeMultilineStrings: false
22
+ AlwaysBreakTemplateDeclarations: Yes
23
+ BinPackArguments: false
24
+ BinPackParameters: false
25
+ BreakBeforeBraces: Custom
26
+ BraceWrapping:
27
+ AfterCaseLabel: false
28
+ AfterClass: true
29
+ AfterControlStatement: MultiLine
30
+ AfterEnum: false
31
+ AfterFunction: true
32
+ AfterNamespace: true
33
+ AfterObjCDeclaration: false
34
+ AfterStruct: true
35
+ AfterUnion: true
36
+ AfterExternBlock: true
37
+ BeforeCatch: true
38
+ BeforeElse: true
39
+ BeforeLambdaBody: false
40
+ BeforeWhile: true
41
+ IndentBraces: false
42
+ SplitEmptyFunction: false
43
+ SplitEmptyNamespace: true
44
+ SplitEmptyRecord: true
45
+ BreakAfterJavaFieldAnnotations: true
46
+ BreakBeforeBinaryOperators: None
47
+ #BreakBeforeInheritanceComma: true
48
+ BreakBeforeTernaryOperators: true
49
+ BreakConstructorInitializers: BeforeColon
50
+ #BreakConstructorInitializersBeforeComma: false
51
+ BreakInheritanceList: BeforeColon
52
+ BreakStringLiterals: true
53
+ ColumnLimit: 140
54
+ CommentPragmas: '^ IWYU pragma:'
55
+ CompactNamespaces: false
56
+ ConstructorInitializerAllOnOneLineOrOnePerLine: true
57
+ ConstructorInitializerIndentWidth: 4
58
+ ContinuationIndentWidth: 4
59
+ Cpp11BracedListStyle: false
60
+ DeriveLineEnding: false
61
+ DerivePointerAlignment: false
62
+ DisableFormat: false
63
+ ExperimentalAutoDetectBinPacking: true
64
+ FixNamespaceComments: true
65
+ ForEachMacros:
66
+ - foreach
67
+ - Q_FOREACH
68
+ - BOOST_FOREACH
69
+ IncludeBlocks: Preserve
70
+ IncludeCategories:
71
+ - Priority: 2
72
+ Regex: ^"(llvm|llvm-c|clang|clang-c)/
73
+ - Priority: 3
74
+ Regex: ^(<|"(gtest|gmock|isl|json)/)
75
+ - Priority: 1
76
+ Regex: .*
77
+ IncludeIsMainRegex: (Test)?$
78
+ IndentCaseLabels: true
79
+ IndentExternBlock: AfterExternBlock
80
+ IndentGotoLabels: false
81
+ IndentPPDirectives: AfterHash
82
+ IndentWidth: 4
83
+ IndentWrappedFunctionNames: true
84
+ JavaScriptQuotes: Leave
85
+ JavaScriptWrapImports: true
86
+ KeepEmptyLinesAtTheStartOfBlocks: false
87
+ MacroBlockBegin: ''
88
+ MacroBlockEnd: ''
89
+ MaxEmptyLinesToKeep: 1
90
+ NamespaceIndentation: All
91
+ ObjCBlockIndentWidth: 7
92
+ ObjCSpaceAfterProperty: true
93
+ ObjCSpaceBeforeProtocolList: false
94
+ PointerAlignment: Left
95
+ ReflowComments: true
96
+ SortIncludes: true
97
+ SortUsingDeclarations: true
98
+ SpaceAfterCStyleCast: false
99
+ SpaceAfterLogicalNot: false
100
+ SpaceAfterTemplateKeyword: false
101
+ SpaceBeforeAssignmentOperators: true
102
+ SpaceBeforeCpp11BracedList: true
103
+ SpaceBeforeCtorInitializerColon: true
104
+ SpaceBeforeInheritanceColon: true
105
+ SpaceBeforeParens: ControlStatements
106
+ SpaceBeforeRangeBasedForLoopColon: true
107
+ SpaceBeforeSquareBrackets: false
108
+ SpaceInEmptyBlock: false
109
+ SpaceInEmptyParentheses: false
110
+ SpacesBeforeTrailingComments: 4
111
+ SpacesInAngles: false
112
+ SpacesInCStyleCastParentheses: false
113
+ SpacesInConditionalStatement: false
114
+ SpacesInContainerLiterals: false
115
+ SpacesInParentheses: false
116
+ SpacesInSquareBrackets: false
117
+ TabWidth: 8
118
+ UseTab: Never
@@ -0,0 +1,28 @@
1
+ ---
2
+ Checks: >-
3
+ *,
4
+ -llvmlibc-*,
5
+ -llvm-header-guard,
6
+ -fuchsia-*,
7
+ -modernize-use-trailing-return-type,
8
+ -modernize-use-nodiscard,
9
+ -modernize-avoid-c-arrays,
10
+ -modernize-pass-by-value,
11
+ -readability-braces-around-statements,
12
+ -readability-implicit-bool-conversion,
13
+ -readability-else-after-return,
14
+ -readability-convert-member-functions-to-static,
15
+ -cppcoreguidelines-avoid-c-arrays,
16
+ -hicpp-avoid-c-arrays,
17
+ -hicpp-braces-around-statements,
18
+ -google-readability-braces-around-statements,
19
+ -google-build-using-namespace,
20
+ -bugprone-infinite-loop,
21
+ -abseil-string-find-startswith,
22
+ -abseil-string-find-str-contains,
23
+ -altera-unroll-loops,
24
+ -cppcoreguidelines-pro-bounds-array-to-pointer-decay
25
+
26
+ WarningsAsErrors: '*'
27
+ HeaderFilterRegex: ''
28
+ FormatStyle: none
@@ -0,0 +1,130 @@
1
+ # ignore everything
2
+ /*
3
+
4
+ # include generic files
5
+ !/.clang-format
6
+ !/.clang-tidy
7
+ !/.gitignore
8
+ !/LICENSE.md
9
+ !/NOTICE
10
+ !/README.md
11
+
12
+ # include root directory files
13
+ !/CMakeLists.txt
14
+ !/Makefile.GNU
15
+ !/vcpkg.json
16
+
17
+ # include Benchmarks folder
18
+ !/Benchmarks
19
+ # exclude everything *in* Benchmarks folder
20
+ /Benchmarks/*
21
+ # re-include specifically what is desired from Benchmarks folder
22
+ !/Benchmarks/*.cpp
23
+ !/Benchmarks/*.txt
24
+ !/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers
25
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping
26
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support
27
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled
28
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support
29
+ !/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework
30
+ !/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support
31
+ !/Benchmarks/2024-09-02-benchmarks
32
+ !/Benchmarks/2024-12-19-benchmarks
33
+ !/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref
34
+ !/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection
35
+ !/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix
36
+ !/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation
37
+ !/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework
38
+ !/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals
39
+ !/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip
40
+
41
+ # include cmake folder
42
+ !/cmake
43
+ # exclude everything *in* cmake folder
44
+ /cmake/*
45
+ # re-include specifically what is desired from cmake folder
46
+ !/cmake/get-git-HEAD-ID.cmake
47
+ !/cmake/libopenxlsxCPackOptions.cmake.in
48
+ !/cmake/manage_dependency.cmake
49
+ !/cmake/recursive_library_type_test.cmake
50
+
51
+ # include Documentation folder
52
+ !/Documentation
53
+ # exclude everything *in* Documentation folder
54
+ /Documentation/*
55
+ # re-include specifically what is desired from Documentation folder
56
+ !/Documentation/*.txt
57
+ !/Documentation/*.css
58
+ !/Documentation/*.in
59
+ !/Documentation/*.xml
60
+
61
+ # include Examples folder
62
+ !/Examples
63
+ # exclude everything *in* Examples folder
64
+ /Examples/*
65
+ # re-include specifically what is desired from Examples folder
66
+ !/Examples/cmake
67
+ !/Examples/cmake/*
68
+ !/Examples/CMakeLists.txt
69
+ !/Examples/*.cpp
70
+ !/Examples/external
71
+ !/Examples/external/*
72
+
73
+ # include gnu-make-crutch folder
74
+ !/gnu-make-crutch
75
+ # exclude everything *in* gnu-make-crutch folder
76
+ /gnu-make-crutch/*
77
+ # re-include specifically what is desired from gnu-make-crutch folder
78
+ !/gnu-make-crutch/OpenXLSX-Exports-shared.hpp
79
+ !/gnu-make-crutch/OpenXLSX-Exports-static.hpp
80
+
81
+ # include Notes folder
82
+ !/Notes
83
+ # exclude everything *in* Notes folder
84
+ /Notes/*
85
+ # re-include specifically what is desired from Notes folder
86
+ !/Notes/styles-missing-support.xml
87
+ !/Notes/todo-list.txt
88
+ !/Notes/confirmed-TBCs.txt
89
+ !/Notes/TBDs.txt
90
+
91
+ # include OpenXLSX folder
92
+ !/OpenXLSX
93
+ # exclude everything *in* OpenXLSX folder
94
+ /OpenXLSX/*
95
+ # re-include specifically what is desired from OpenXLSX folder
96
+ !/OpenXLSX/CMakeLists.txt
97
+ !/OpenXLSX/cmake
98
+ !/OpenXLSX/cmake/*
99
+ !/OpenXLSX/headers
100
+ !/OpenXLSX/headers/*
101
+ !/OpenXLSX/OpenXLSXConfig.cmake
102
+ !/OpenXLSX/OpenXLSX.hpp
103
+ !/OpenXLSX/sources
104
+ !/OpenXLSX/sources/*
105
+
106
+ # include Scripts folder
107
+ !/Scripts
108
+ # exclude everything *in* Scripts folder
109
+ /Scripts/*
110
+ # re-include specifically what is desired from Scripts folder
111
+ !/Scripts/demos-cleanup.sh
112
+ !/Scripts/cmake-cleanup.sh
113
+ !/Scripts/compile.sh
114
+ !/Scripts/demos-cleanup.sh
115
+ !/Scripts/demos-run-all.sh
116
+ !/Scripts/guarded-xml-format.sh
117
+ !/Scripts/make-gnu.sh
118
+ !/Scripts/uninstall-manifest.sh
119
+ !/Scripts/xml-format-all.sh
120
+ !/Scripts/xml-format.sh
121
+
122
+ # include Tests folder
123
+ !/Tests
124
+ # exclude everything *in* Tests folder
125
+ /Tests/*
126
+ # re-include specifically what is desired from Tests folder
127
+ !/Tests/catch
128
+ !/Tests/catch/*.hpp
129
+ !/Tests/CMakeLists.txt
130
+ !/Tests/*.cpp