react-native-nitro-xlsx 0.1.1
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/LICENSE +21 -0
- package/NOTICE +73 -0
- package/NitroXlsx.podspec +110 -0
- package/README.md +340 -0
- package/android/CMakeLists.txt +52 -0
- package/android/build.gradle +49 -0
- package/android/cpp-adapter.cpp +9 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +22 -0
- package/cpp/HybridNitroXlsx.cpp +29 -0
- package/cpp/HybridNitroXlsx.hpp +19 -0
- package/cpp/HybridXlsxCellFormat.cpp +263 -0
- package/cpp/HybridXlsxCellFormat.hpp +111 -0
- package/cpp/HybridXlsxWorkbook.cpp +184 -0
- package/cpp/HybridXlsxWorkbook.hpp +41 -0
- package/cpp/HybridXlsxWorksheet.cpp +316 -0
- package/cpp/HybridXlsxWorksheet.hpp +86 -0
- package/nitro.json +19 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +84 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroXlsxOnLoad.cpp +49 -0
- package/nitrogen/generated/android/NitroXlsxOnLoad.hpp +34 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/xlsx/NitroXlsxOnLoad.kt +35 -0
- package/nitrogen/generated/ios/NitroXlsx+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroXlsx-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/NitroXlsx-Swift-Cxx-Bridge.hpp +27 -0
- package/nitrogen/generated/ios/NitroXlsx-Swift-Cxx-Umbrella.hpp +38 -0
- package/nitrogen/generated/ios/NitroXlsxAutolinking.mm +35 -0
- package/nitrogen/generated/ios/NitroXlsxAutolinking.swift +16 -0
- package/nitrogen/generated/shared/c++/CellType.hpp +100 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxCellFormatSpec.cpp +62 -0
- package/nitrogen/generated/shared/c++/HybridXlsxCellFormatSpec.hpp +104 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +77 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +69 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +120 -0
- package/package.json +47 -0
- package/src/__mocks__/react-native-nitro-modules.ts +28 -0
- package/src/__mocks__/react-native.ts +1 -0
- package/src/__tests__/index.test.ts +141 -0
- package/src/index.ts +195 -0
- package/src/specs/NitroXlsx.nitro.ts +154 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridXlsxWorksheetSpec.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "HybridXlsxWorksheetSpec.hpp"
|
|
9
|
+
|
|
10
|
+
namespace margelo::nitro::xlsx {
|
|
11
|
+
|
|
12
|
+
void HybridXlsxWorksheetSpec::loadHybridMethods() {
|
|
13
|
+
// load base methods/properties
|
|
14
|
+
HybridObject::loadHybridMethods();
|
|
15
|
+
// load custom methods/properties
|
|
16
|
+
registerHybrids(this, [](Prototype& prototype) {
|
|
17
|
+
prototype.registerHybridMethod("writeString", &HybridXlsxWorksheetSpec::writeString);
|
|
18
|
+
prototype.registerHybridMethod("writeNumber", &HybridXlsxWorksheetSpec::writeNumber);
|
|
19
|
+
prototype.registerHybridMethod("writeBoolean", &HybridXlsxWorksheetSpec::writeBoolean);
|
|
20
|
+
prototype.registerHybridMethod("writeBlank", &HybridXlsxWorksheetSpec::writeBlank);
|
|
21
|
+
prototype.registerHybridMethod("writeFormula", &HybridXlsxWorksheetSpec::writeFormula);
|
|
22
|
+
prototype.registerHybridMethod("writeFormulaNum", &HybridXlsxWorksheetSpec::writeFormulaNum);
|
|
23
|
+
prototype.registerHybridMethod("writeFormulaString", &HybridXlsxWorksheetSpec::writeFormulaString);
|
|
24
|
+
prototype.registerHybridMethod("writeFormulaBoolean", &HybridXlsxWorksheetSpec::writeFormulaBoolean);
|
|
25
|
+
prototype.registerHybridMethod("writeArrayFormula", &HybridXlsxWorksheetSpec::writeArrayFormula);
|
|
26
|
+
prototype.registerHybridMethod("writeDatetime", &HybridXlsxWorksheetSpec::writeDatetime);
|
|
27
|
+
prototype.registerHybridMethod("writeURL", &HybridXlsxWorksheetSpec::writeURL);
|
|
28
|
+
prototype.registerHybridMethod("setColumn", &HybridXlsxWorksheetSpec::setColumn);
|
|
29
|
+
prototype.registerHybridMethod("setRow", &HybridXlsxWorksheetSpec::setRow);
|
|
30
|
+
prototype.registerHybridMethod("mergeRange", &HybridXlsxWorksheetSpec::mergeRange);
|
|
31
|
+
prototype.registerHybridMethod("mergeRangeNum", &HybridXlsxWorksheetSpec::mergeRangeNum);
|
|
32
|
+
prototype.registerHybridMethod("insertImage", &HybridXlsxWorksheetSpec::insertImage);
|
|
33
|
+
prototype.registerHybridMethod("insertImageBuffer", &HybridXlsxWorksheetSpec::insertImageBuffer);
|
|
34
|
+
prototype.registerHybridMethod("autofilter", &HybridXlsxWorksheetSpec::autofilter);
|
|
35
|
+
prototype.registerHybridMethod("freezePanes", &HybridXlsxWorksheetSpec::freezePanes);
|
|
36
|
+
prototype.registerHybridMethod("splitPanes", &HybridXlsxWorksheetSpec::splitPanes);
|
|
37
|
+
prototype.registerHybridMethod("setTabColor", &HybridXlsxWorksheetSpec::setTabColor);
|
|
38
|
+
prototype.registerHybridMethod("hide", &HybridXlsxWorksheetSpec::hide);
|
|
39
|
+
prototype.registerHybridMethod("activate", &HybridXlsxWorksheetSpec::activate);
|
|
40
|
+
prototype.registerHybridMethod("setFirstSheet", &HybridXlsxWorksheetSpec::setFirstSheet);
|
|
41
|
+
prototype.registerHybridMethod("protect", &HybridXlsxWorksheetSpec::protect);
|
|
42
|
+
prototype.registerHybridMethod("setPortrait", &HybridXlsxWorksheetSpec::setPortrait);
|
|
43
|
+
prototype.registerHybridMethod("setLandscape", &HybridXlsxWorksheetSpec::setLandscape);
|
|
44
|
+
prototype.registerHybridMethod("setPaper", &HybridXlsxWorksheetSpec::setPaper);
|
|
45
|
+
prototype.registerHybridMethod("setHeader", &HybridXlsxWorksheetSpec::setHeader);
|
|
46
|
+
prototype.registerHybridMethod("setFooter", &HybridXlsxWorksheetSpec::setFooter);
|
|
47
|
+
prototype.registerHybridMethod("setPrintArea", &HybridXlsxWorksheetSpec::setPrintArea);
|
|
48
|
+
prototype.registerHybridMethod("fitToPages", &HybridXlsxWorksheetSpec::fitToPages);
|
|
49
|
+
prototype.registerHybridMethod("setZoom", &HybridXlsxWorksheetSpec::setZoom);
|
|
50
|
+
prototype.registerHybridMethod("setGridlines", &HybridXlsxWorksheetSpec::setGridlines);
|
|
51
|
+
prototype.registerHybridMethod("centerHorizontally", &HybridXlsxWorksheetSpec::centerHorizontally);
|
|
52
|
+
prototype.registerHybridMethod("centerVertically", &HybridXlsxWorksheetSpec::centerVertically);
|
|
53
|
+
prototype.registerHybridMethod("setOutline", &HybridXlsxWorksheetSpec::setOutline);
|
|
54
|
+
prototype.registerHybridMethod("setColumnHidden", &HybridXlsxWorksheetSpec::setColumnHidden);
|
|
55
|
+
prototype.registerHybridMethod("setRowHidden", &HybridXlsxWorksheetSpec::setRowHidden);
|
|
56
|
+
prototype.registerHybridMethod("getCellValue", &HybridXlsxWorksheetSpec::getCellValue);
|
|
57
|
+
prototype.registerHybridMethod("getCellString", &HybridXlsxWorksheetSpec::getCellString);
|
|
58
|
+
prototype.registerHybridMethod("getCellRawValue", &HybridXlsxWorksheetSpec::getCellRawValue);
|
|
59
|
+
prototype.registerHybridMethod("getCellType", &HybridXlsxWorksheetSpec::getCellType);
|
|
60
|
+
prototype.registerHybridMethod("getCellFormat", &HybridXlsxWorksheetSpec::getCellFormat);
|
|
61
|
+
prototype.registerHybridMethod("getRowCount", &HybridXlsxWorksheetSpec::getRowCount);
|
|
62
|
+
prototype.registerHybridMethod("getColumnCount", &HybridXlsxWorksheetSpec::getColumnCount);
|
|
63
|
+
prototype.registerHybridMethod("getLastRow", &HybridXlsxWorksheetSpec::getLastRow);
|
|
64
|
+
prototype.registerHybridMethod("getLastColumn", &HybridXlsxWorksheetSpec::getLastColumn);
|
|
65
|
+
prototype.registerHybridMethod("getName", &HybridXlsxWorksheetSpec::getName);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
} // namespace margelo::nitro::xlsx
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridXlsxWorksheetSpec.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<NitroModules/HybridObject.hpp>)
|
|
11
|
+
#include <NitroModules/HybridObject.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
// Forward declaration of `HybridXlsxCellFormatSpec` to properly resolve imports.
|
|
17
|
+
namespace margelo::nitro::xlsx { class HybridXlsxCellFormatSpec; }
|
|
18
|
+
// Forward declaration of `CellType` to properly resolve imports.
|
|
19
|
+
namespace margelo::nitro::xlsx { enum class CellType; }
|
|
20
|
+
|
|
21
|
+
#include <string>
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include "HybridXlsxCellFormatSpec.hpp"
|
|
24
|
+
#include <optional>
|
|
25
|
+
#include <NitroModules/ArrayBuffer.hpp>
|
|
26
|
+
#include <NitroModules/Null.hpp>
|
|
27
|
+
#include <variant>
|
|
28
|
+
#include "CellType.hpp"
|
|
29
|
+
|
|
30
|
+
namespace margelo::nitro::xlsx {
|
|
31
|
+
|
|
32
|
+
using namespace margelo::nitro;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* An abstract base class for `XlsxWorksheet`
|
|
36
|
+
* Inherit this class to create instances of `HybridXlsxWorksheetSpec` in C++.
|
|
37
|
+
* You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
|
|
38
|
+
* @example
|
|
39
|
+
* ```cpp
|
|
40
|
+
* class HybridXlsxWorksheet: public HybridXlsxWorksheetSpec {
|
|
41
|
+
* public:
|
|
42
|
+
* HybridXlsxWorksheet(...): HybridObject(TAG) { ... }
|
|
43
|
+
* // ...
|
|
44
|
+
* };
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
class HybridXlsxWorksheetSpec: public virtual HybridObject {
|
|
48
|
+
public:
|
|
49
|
+
// Constructor
|
|
50
|
+
explicit HybridXlsxWorksheetSpec(): HybridObject(TAG) { }
|
|
51
|
+
|
|
52
|
+
// Destructor
|
|
53
|
+
~HybridXlsxWorksheetSpec() override = default;
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
// Properties
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
public:
|
|
60
|
+
// Methods
|
|
61
|
+
virtual void writeString(double row, double col, const std::string& value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
62
|
+
virtual void writeNumber(double row, double col, double value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
63
|
+
virtual void writeBoolean(double row, double col, bool value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
64
|
+
virtual void writeBlank(double row, double col, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
65
|
+
virtual void writeFormula(double row, double col, const std::string& formula, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
66
|
+
virtual void writeFormulaNum(double row, double col, const std::string& formula, double number, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
67
|
+
virtual void writeFormulaString(double row, double col, const std::string& formula, const std::string& str, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
68
|
+
virtual void writeFormulaBoolean(double row, double col, const std::string& formula, bool boolVal, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
69
|
+
virtual void writeArrayFormula(double firstRow, double firstCol, double lastRow, double lastCol, const std::string& formula, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
70
|
+
virtual void writeDatetime(double row, double col, double datetime, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
71
|
+
virtual void writeURL(double row, double col, const std::string& url, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
72
|
+
virtual void setColumn(double firstCol, double lastCol, double width, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
73
|
+
virtual void setRow(double row, double height, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
74
|
+
virtual void mergeRange(double firstRow, double firstCol, double lastRow, double lastCol, const std::string& value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
75
|
+
virtual void mergeRangeNum(double firstRow, double firstCol, double lastRow, double lastCol, double value, const std::optional<std::shared_ptr<HybridXlsxCellFormatSpec>>& format) = 0;
|
|
76
|
+
virtual void insertImage(double row, double col, const std::string& path, std::optional<double> xOffset, std::optional<double> yOffset, std::optional<double> xScale, std::optional<double> yScale) = 0;
|
|
77
|
+
virtual void insertImageBuffer(double row, double col, const std::shared_ptr<ArrayBuffer>& buffer, const std::string& extension, std::optional<double> xOffset, std::optional<double> yOffset, std::optional<double> xScale, std::optional<double> yScale) = 0;
|
|
78
|
+
virtual void autofilter(double firstRow, double firstCol, double lastRow, double lastCol) = 0;
|
|
79
|
+
virtual void freezePanes(double row, double col) = 0;
|
|
80
|
+
virtual void splitPanes(double row, double col) = 0;
|
|
81
|
+
virtual void setTabColor(double color) = 0;
|
|
82
|
+
virtual void hide() = 0;
|
|
83
|
+
virtual void activate() = 0;
|
|
84
|
+
virtual void setFirstSheet() = 0;
|
|
85
|
+
virtual void protect(const std::optional<std::string>& password) = 0;
|
|
86
|
+
virtual void setPortrait() = 0;
|
|
87
|
+
virtual void setLandscape() = 0;
|
|
88
|
+
virtual void setPaper(double paperType) = 0;
|
|
89
|
+
virtual void setHeader(const std::string& header) = 0;
|
|
90
|
+
virtual void setFooter(const std::string& footer) = 0;
|
|
91
|
+
virtual void setPrintArea(double firstRow, double firstCol, double lastRow, double lastCol) = 0;
|
|
92
|
+
virtual void fitToPages(double width, double height) = 0;
|
|
93
|
+
virtual void setZoom(double scale) = 0;
|
|
94
|
+
virtual void setGridlines(double option) = 0;
|
|
95
|
+
virtual void centerHorizontally() = 0;
|
|
96
|
+
virtual void centerVertically() = 0;
|
|
97
|
+
virtual void setOutline(double level) = 0;
|
|
98
|
+
virtual void setColumnHidden(double firstCol, double lastCol, bool hidden) = 0;
|
|
99
|
+
virtual void setRowHidden(double row, bool hidden) = 0;
|
|
100
|
+
virtual std::variant<bool, nitro::NullType, std::string, double> getCellValue(double row, double col) = 0;
|
|
101
|
+
virtual std::string getCellString(double row, double col) = 0;
|
|
102
|
+
virtual std::string getCellRawValue(double row, double col) = 0;
|
|
103
|
+
virtual CellType getCellType(double row, double col) = 0;
|
|
104
|
+
virtual std::shared_ptr<HybridXlsxCellFormatSpec> getCellFormat(double row, double col) = 0;
|
|
105
|
+
virtual double getRowCount() = 0;
|
|
106
|
+
virtual double getColumnCount() = 0;
|
|
107
|
+
virtual double getLastRow() = 0;
|
|
108
|
+
virtual double getLastColumn() = 0;
|
|
109
|
+
virtual std::string getName() = 0;
|
|
110
|
+
|
|
111
|
+
protected:
|
|
112
|
+
// Hybrid Setup
|
|
113
|
+
void loadHybridMethods() override;
|
|
114
|
+
|
|
115
|
+
protected:
|
|
116
|
+
// Tag for logging
|
|
117
|
+
static constexpr auto TAG = "XlsxWorksheet";
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
} // namespace margelo::nitro::xlsx
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-native-nitro-xlsx",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Fast XLSX file reading and writing for React Native using OpenXLSX and Nitro Modules",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/zydbkqf/react-native-nitro-xlsx",
|
|
7
|
+
"author": "Denis Cheung (https://github.com/zydbkqf)",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "src/index.ts",
|
|
10
|
+
"types": "src/index.ts",
|
|
11
|
+
"source": "src/index.ts",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"specs": "nitrogen",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"test:cpp": "cd cpp/tests && [ -n \"$OPENXLSX_PATH\" ] || OPENXLSX_PATH=$HOME/OpenXLSX; cmake -B build -DOPENXLSX_PATH=$OPENXLSX_PATH && cmake --build build && cd build && ctest --output-on-failure",
|
|
16
|
+
"test:cpp:clean": "rm -rf cpp/tests/build"
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"react": "*",
|
|
20
|
+
"react-native": ">=0.78.0",
|
|
21
|
+
"react-native-nitro-modules": ">=0.35.8"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/jest": "^30.0.0",
|
|
25
|
+
"jest": "^30.4.2",
|
|
26
|
+
"nitrogen": "*",
|
|
27
|
+
"react": "*",
|
|
28
|
+
"react-native": "*",
|
|
29
|
+
"react-native-nitro-modules": ">=0.35.8",
|
|
30
|
+
"ts-jest": "^29.4.11",
|
|
31
|
+
"typescript": "5.4.5"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"src",
|
|
35
|
+
"cpp",
|
|
36
|
+
"!cpp/tests",
|
|
37
|
+
"android",
|
|
38
|
+
"ios",
|
|
39
|
+
"nitro.json",
|
|
40
|
+
"nitrogen",
|
|
41
|
+
"NitroXlsx.podspec",
|
|
42
|
+
"LICENSE",
|
|
43
|
+
"NOTICE",
|
|
44
|
+
"README.md"
|
|
45
|
+
],
|
|
46
|
+
"packageManager": "yarn@4.17.1"
|
|
47
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type HybridObject<T> = object;
|
|
2
|
+
|
|
3
|
+
export interface ArrayBuffer {
|
|
4
|
+
data(): Uint8Array;
|
|
5
|
+
size(): number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface Promise<T> {
|
|
9
|
+
then<R>(onFulfilled: (value: T) => R): Promise<R>;
|
|
10
|
+
catch<R>(onRejected: (reason: any) => R): Promise<R>;
|
|
11
|
+
resolve(value: T): Promise<T>;
|
|
12
|
+
reject(reason: any): Promise<T>;
|
|
13
|
+
create(): Promise<T>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export namespace margelo {
|
|
17
|
+
export namespace nitro {
|
|
18
|
+
export class HybridObject<T> {}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const NitroModules = {
|
|
23
|
+
createHybridObject: <T>(name: string) => ({
|
|
24
|
+
createWorkbook: jest.fn(),
|
|
25
|
+
openWorkbook: jest.fn(),
|
|
26
|
+
openWorkbookFromBuffer: jest.fn(),
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NitroXlsx,
|
|
3
|
+
Align,
|
|
4
|
+
VAlign,
|
|
5
|
+
Border,
|
|
6
|
+
Underline,
|
|
7
|
+
Script,
|
|
8
|
+
Pattern,
|
|
9
|
+
Paper,
|
|
10
|
+
Gridlines,
|
|
11
|
+
Colors,
|
|
12
|
+
NumFormat,
|
|
13
|
+
ImagePosition,
|
|
14
|
+
} from '../index';
|
|
15
|
+
|
|
16
|
+
describe('NitroXlsx', () => {
|
|
17
|
+
it('should export NitroXlsx object', () => {
|
|
18
|
+
expect(NitroXlsx).toBeDefined();
|
|
19
|
+
expect(typeof NitroXlsx).toBe('object');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should have createWorkbook method', () => {
|
|
23
|
+
expect(NitroXlsx.createWorkbook).toBeDefined();
|
|
24
|
+
expect(typeof NitroXlsx.createWorkbook).toBe('function');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should have openWorkbook method', () => {
|
|
28
|
+
expect(NitroXlsx.openWorkbook).toBeDefined();
|
|
29
|
+
expect(typeof NitroXlsx.openWorkbook).toBe('function');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should have openWorkbookFromBuffer method', () => {
|
|
33
|
+
expect(NitroXlsx.openWorkbookFromBuffer).toBeDefined();
|
|
34
|
+
expect(typeof NitroXlsx.openWorkbookFromBuffer).toBe('function');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('Constants', () => {
|
|
39
|
+
describe('Align', () => {
|
|
40
|
+
it('should export Align constants', () => {
|
|
41
|
+
expect(Align).toBeDefined();
|
|
42
|
+
expect(Align.GENERAL).toBe(0);
|
|
43
|
+
expect(Align.LEFT).toBe(1);
|
|
44
|
+
expect(Align.RIGHT).toBe(2);
|
|
45
|
+
expect(Align.CENTER).toBe(3);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
describe('VAlign', () => {
|
|
50
|
+
it('should export VAlign constants', () => {
|
|
51
|
+
expect(VAlign).toBeDefined();
|
|
52
|
+
expect(VAlign.TOP).toBe(4);
|
|
53
|
+
expect(VAlign.CENTER).toBe(3);
|
|
54
|
+
expect(VAlign.BOTTOM).toBe(5);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('Border', () => {
|
|
59
|
+
it('should export Border constants', () => {
|
|
60
|
+
expect(Border).toBeDefined();
|
|
61
|
+
expect(Border.NONE).toBe(0);
|
|
62
|
+
expect(Border.THIN).toBe(1);
|
|
63
|
+
expect(Border.MEDIUM).toBe(2);
|
|
64
|
+
expect(Border.THICK).toBe(5);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
describe('Underline', () => {
|
|
69
|
+
it('should export Underline constants', () => {
|
|
70
|
+
expect(Underline).toBeDefined();
|
|
71
|
+
expect(Underline.NONE).toBe(0);
|
|
72
|
+
expect(Underline.SINGLE).toBe(1);
|
|
73
|
+
expect(Underline.DOUBLE).toBe(2);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
describe('Script', () => {
|
|
78
|
+
it('should export Script constants', () => {
|
|
79
|
+
expect(Script).toBeDefined();
|
|
80
|
+
expect(Script.BASELINE).toBe(0);
|
|
81
|
+
expect(Script.SUBSCRIPT).toBe(1);
|
|
82
|
+
expect(Script.SUPERSCRIPT).toBe(2);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('Pattern', () => {
|
|
87
|
+
it('should export Pattern constants', () => {
|
|
88
|
+
expect(Pattern).toBeDefined();
|
|
89
|
+
expect(Pattern.NONE).toBe(0);
|
|
90
|
+
expect(Pattern.SOLID).toBe(1);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
describe('Paper', () => {
|
|
95
|
+
it('should export Paper constants', () => {
|
|
96
|
+
expect(Paper).toBeDefined();
|
|
97
|
+
expect(Paper.LETTER).toBe(1);
|
|
98
|
+
expect(Paper.A4).toBe(9);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe('Gridlines', () => {
|
|
103
|
+
it('should export Gridlines constants', () => {
|
|
104
|
+
expect(Gridlines).toBeDefined();
|
|
105
|
+
expect(Gridlines.HIDE_ALL).toBe(0);
|
|
106
|
+
expect(Gridlines.SHOW_ALL).toBe(1);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
describe('Colors', () => {
|
|
111
|
+
it('should export Colors constants', () => {
|
|
112
|
+
expect(Colors).toBeDefined();
|
|
113
|
+
expect(Colors.BLACK).toBe(0x000000);
|
|
114
|
+
expect(Colors.WHITE).toBe(0xFFFFFF);
|
|
115
|
+
expect(Colors.RED).toBe(0xFF0000);
|
|
116
|
+
expect(Colors.GREEN).toBe(0x00FF00);
|
|
117
|
+
expect(Colors.BLUE).toBe(0x0000FF);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
describe('NumFormat', () => {
|
|
122
|
+
it('should export NumFormat constants', () => {
|
|
123
|
+
expect(NumFormat).toBeDefined();
|
|
124
|
+
expect(NumFormat.GENERAL).toBe(0);
|
|
125
|
+
expect(NumFormat.NUMBER).toBe(1);
|
|
126
|
+
expect(NumFormat.CURRENCY).toBe(5);
|
|
127
|
+
expect(NumFormat.PERCENT).toBe(9);
|
|
128
|
+
expect(NumFormat.DATE_1).toBe(15);
|
|
129
|
+
expect(NumFormat.TEXT).toBe(49);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe('ImagePosition', () => {
|
|
134
|
+
it('should export ImagePosition constants', () => {
|
|
135
|
+
expect(ImagePosition).toBeDefined();
|
|
136
|
+
expect(ImagePosition.MOVE_AND_SIZE).toBe(1);
|
|
137
|
+
expect(ImagePosition.MOVE_DONT_SIZE).toBe(2);
|
|
138
|
+
expect(ImagePosition.DONT_MOVE_DONT_SIZE).toBe(3);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { NitroModules } from 'react-native-nitro-modules'
|
|
2
|
+
import type { NitroXlsx as NitroXlsxSpec } from './specs/NitroXlsx.nitro'
|
|
3
|
+
|
|
4
|
+
export const NitroXlsx = NitroModules.createHybridObject<NitroXlsxSpec>('NitroXlsx')
|
|
5
|
+
|
|
6
|
+
export type { XlsxWorkbook, XlsxWorksheet, XlsxCellFormat } from './specs/NitroXlsx.nitro'
|
|
7
|
+
|
|
8
|
+
// Cell alignment (based on OpenXLSX XLAlignmentStyle)
|
|
9
|
+
export const Align = {
|
|
10
|
+
GENERAL: 0,
|
|
11
|
+
LEFT: 1,
|
|
12
|
+
RIGHT: 2,
|
|
13
|
+
CENTER: 3,
|
|
14
|
+
FILL: 6,
|
|
15
|
+
JUSTIFY: 7,
|
|
16
|
+
CENTER_CONTINUOUS: 8,
|
|
17
|
+
DISTRIBUTED: 9,
|
|
18
|
+
} as const
|
|
19
|
+
|
|
20
|
+
export const VAlign = {
|
|
21
|
+
TOP: 4,
|
|
22
|
+
CENTER: 3,
|
|
23
|
+
BOTTOM: 5,
|
|
24
|
+
JUSTIFY: 7,
|
|
25
|
+
DISTRIBUTED: 9,
|
|
26
|
+
} as const
|
|
27
|
+
|
|
28
|
+
// Border styles (based on OpenXLSX XLLineStyle)
|
|
29
|
+
export const Border = {
|
|
30
|
+
NONE: 0,
|
|
31
|
+
THIN: 1,
|
|
32
|
+
MEDIUM: 2,
|
|
33
|
+
DASHED: 3,
|
|
34
|
+
DOTTED: 4,
|
|
35
|
+
THICK: 5,
|
|
36
|
+
DOUBLE: 6,
|
|
37
|
+
HAIR: 7,
|
|
38
|
+
MEDIUM_DASHED: 8,
|
|
39
|
+
DASH_DOT: 9,
|
|
40
|
+
MEDIUM_DASH_DOT: 10,
|
|
41
|
+
DASH_DOT_DOT: 11,
|
|
42
|
+
MEDIUM_DASH_DOT_DOT: 12,
|
|
43
|
+
SLANT_DASH_DOT: 13,
|
|
44
|
+
} as const
|
|
45
|
+
|
|
46
|
+
// Underline styles (based on OpenXLSX XLUnderlineStyle)
|
|
47
|
+
export const Underline = {
|
|
48
|
+
NONE: 0,
|
|
49
|
+
SINGLE: 1,
|
|
50
|
+
DOUBLE: 2,
|
|
51
|
+
} as const
|
|
52
|
+
|
|
53
|
+
// Script styles (based on OpenXLSX XLVerticalAlignRunStyle)
|
|
54
|
+
export const Script = {
|
|
55
|
+
BASELINE: 0,
|
|
56
|
+
SUBSCRIPT: 1,
|
|
57
|
+
SUPERSCRIPT: 2,
|
|
58
|
+
} as const
|
|
59
|
+
|
|
60
|
+
// Pattern fill styles (based on OpenXLSX XLPatternType)
|
|
61
|
+
export const Pattern = {
|
|
62
|
+
NONE: 0,
|
|
63
|
+
SOLID: 1,
|
|
64
|
+
MEDIUM_GRAY: 2,
|
|
65
|
+
DARK_GRAY: 3,
|
|
66
|
+
LIGHT_GRAY: 4,
|
|
67
|
+
DARK_HORIZONTAL: 5,
|
|
68
|
+
DARK_VERTICAL: 6,
|
|
69
|
+
DARK_DOWN: 7,
|
|
70
|
+
DARK_UP: 8,
|
|
71
|
+
DARK_GRID: 9,
|
|
72
|
+
DARK_TRELLIS: 10,
|
|
73
|
+
LIGHT_HORIZONTAL: 11,
|
|
74
|
+
LIGHT_VERTICAL: 12,
|
|
75
|
+
LIGHT_DOWN: 13,
|
|
76
|
+
LIGHT_UP: 14,
|
|
77
|
+
LIGHT_GRID: 15,
|
|
78
|
+
LIGHT_TRELLIS: 16,
|
|
79
|
+
GRAY_125: 17,
|
|
80
|
+
GRAY_0625: 18,
|
|
81
|
+
} as const
|
|
82
|
+
|
|
83
|
+
// Paper types
|
|
84
|
+
export const Paper = {
|
|
85
|
+
DEFAULT: 0,
|
|
86
|
+
LETTER: 1,
|
|
87
|
+
LETTER_SMALL: 2,
|
|
88
|
+
TABLOID: 3,
|
|
89
|
+
LEDGER: 4,
|
|
90
|
+
LEGAL: 5,
|
|
91
|
+
STATEMENT: 6,
|
|
92
|
+
EXECUTIVE: 7,
|
|
93
|
+
A3: 8,
|
|
94
|
+
A4: 9,
|
|
95
|
+
A4_SMALL: 10,
|
|
96
|
+
A5: 11,
|
|
97
|
+
B4: 12,
|
|
98
|
+
B5: 13,
|
|
99
|
+
FOLIO: 14,
|
|
100
|
+
QUARTO: 15,
|
|
101
|
+
SIZE10x14: 16,
|
|
102
|
+
SIZE11x17: 17,
|
|
103
|
+
NOTE: 18,
|
|
104
|
+
ENV_9: 19,
|
|
105
|
+
ENV_10: 20,
|
|
106
|
+
ENV_11: 21,
|
|
107
|
+
ENV_12: 22,
|
|
108
|
+
ENV_14: 23,
|
|
109
|
+
ENV_DL: 27,
|
|
110
|
+
ENV_C5: 28,
|
|
111
|
+
ENV_C3: 29,
|
|
112
|
+
ENV_C4: 30,
|
|
113
|
+
ENV_C6: 31,
|
|
114
|
+
ENV_C65: 32,
|
|
115
|
+
ENV_B4: 33,
|
|
116
|
+
ENV_B5: 34,
|
|
117
|
+
ENV_B6: 35,
|
|
118
|
+
ENV_ITALY: 36,
|
|
119
|
+
ENV_MONARCH: 37,
|
|
120
|
+
ENV_PERSONAL: 38,
|
|
121
|
+
ENV_US9: 39,
|
|
122
|
+
ENV_US10: 40,
|
|
123
|
+
ENV_US11: 41,
|
|
124
|
+
ENV_US12: 42,
|
|
125
|
+
} as const
|
|
126
|
+
|
|
127
|
+
// Gridline options
|
|
128
|
+
export const Gridlines = {
|
|
129
|
+
HIDE_ALL: 0,
|
|
130
|
+
SHOW_ALL: 1,
|
|
131
|
+
SHOW_PRINT: 2,
|
|
132
|
+
} as const
|
|
133
|
+
|
|
134
|
+
// Common colors
|
|
135
|
+
export const Colors = {
|
|
136
|
+
BLACK: 0x000000,
|
|
137
|
+
WHITE: 0xFFFFFF,
|
|
138
|
+
RED: 0xFF0000,
|
|
139
|
+
GREEN: 0x00FF00,
|
|
140
|
+
BLUE: 0x0000FF,
|
|
141
|
+
YELLOW: 0xFFFF00,
|
|
142
|
+
CYAN: 0x00FFFF,
|
|
143
|
+
MAGENTA: 0xFF00FF,
|
|
144
|
+
GRAY: 0x808080,
|
|
145
|
+
GREY: 0x808080,
|
|
146
|
+
ORANGE: 0xFFA500,
|
|
147
|
+
PURPLE: 0x800080,
|
|
148
|
+
PINK: 0xFFC0CB,
|
|
149
|
+
BROWN: 0xA52A2A,
|
|
150
|
+
LIME: 0x00FF00,
|
|
151
|
+
NAVY: 0x000080,
|
|
152
|
+
TEAL: 0x008080,
|
|
153
|
+
MAROON: 0x800000,
|
|
154
|
+
OLIVE: 0x808000,
|
|
155
|
+
SILVER: 0xC0C0C0,
|
|
156
|
+
AQUA: 0x00FFFF,
|
|
157
|
+
FUCHSIA: 0xFF00FF,
|
|
158
|
+
} as const
|
|
159
|
+
|
|
160
|
+
// Built-in number format indices
|
|
161
|
+
export const NumFormat = {
|
|
162
|
+
GENERAL: 0,
|
|
163
|
+
NUMBER: 1,
|
|
164
|
+
NUMBER_2: 2,
|
|
165
|
+
NUMBER_SEP: 3,
|
|
166
|
+
NUMBER_SEP_2: 4,
|
|
167
|
+
CURRENCY: 5,
|
|
168
|
+
CURRENCY_2: 6,
|
|
169
|
+
CURRENCY_SYMBOL: 7,
|
|
170
|
+
CURRENCY_SYMBOL_2: 8,
|
|
171
|
+
PERCENT: 9,
|
|
172
|
+
PERCENT_2: 10,
|
|
173
|
+
SCIENTIFIC: 11,
|
|
174
|
+
SCIENTIFIC_2: 12,
|
|
175
|
+
FRACTION_1: 13,
|
|
176
|
+
FRACTION_2: 14,
|
|
177
|
+
DATE_1: 15,
|
|
178
|
+
DATE_2: 16,
|
|
179
|
+
DATE_3: 17,
|
|
180
|
+
DATE_4: 18,
|
|
181
|
+
DATE_5: 19,
|
|
182
|
+
TIME_1: 20,
|
|
183
|
+
TIME_2: 21,
|
|
184
|
+
TIME_3: 22,
|
|
185
|
+
TIME_4: 23,
|
|
186
|
+
DATETIME: 22,
|
|
187
|
+
TEXT: 49,
|
|
188
|
+
} as const
|
|
189
|
+
|
|
190
|
+
// Image object position
|
|
191
|
+
export const ImagePosition = {
|
|
192
|
+
MOVE_AND_SIZE: 1,
|
|
193
|
+
MOVE_DONT_SIZE: 2,
|
|
194
|
+
DONT_MOVE_DONT_SIZE: 3,
|
|
195
|
+
} as const
|