@office-open/xlsx 0.11.0 → 0.12.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/README.md +24 -17
- package/dist/index.d.mts +1703 -1547
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3216 -1783
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -69,9 +69,9 @@ Check the [demo folder](./demo) for working examples covering every feature.
|
|
|
69
69
|
|
|
70
70
|
## Benchmark
|
|
71
71
|
|
|
72
|
-
Performance
|
|
72
|
+
Performance vs [hucre](https://github.com/productdevbook/hucre) (higher ops/s is better, Windows 11; each scenario runs under both Node 24 and Bun 1.4).
|
|
73
73
|
|
|
74
|
-
**Default** = XML DEFLATE level 1
|
|
74
|
+
**Default** = XML DEFLATE level 1; media matches MS Office Excel — already-compressed formats (PNG/JPEG/GIF) are STOREd, the rest (EMF/WMF/BMP/TIFF/…) use DEFLATE level 6. **All STORE** = no compression (`{ compression: { xml: 0, media: 0 } }`). hucre (async only) uses `CompressionStream("deflate-raw")` when available, falling back to STORE per entry.
|
|
75
75
|
|
|
76
76
|
```typescript
|
|
77
77
|
// Default (matches MS Office)
|
|
@@ -82,29 +82,36 @@ await generateWorkbook(options, { compression: { xml: 0, media: 0 } });
|
|
|
82
82
|
generateWorkbookStream(options);
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
**Create + toBuffer / toStream
|
|
85
|
+
**Create + toBuffer / toStream**
|
|
86
86
|
|
|
87
|
-
| Scenario | Default sync | Default async | All STORE sync | All STORE async | Default stream |
|
|
88
|
-
| ---------------- |
|
|
89
|
-
| Simple (3 rows) |
|
|
90
|
-
|
|
|
91
|
-
|
|
|
87
|
+
| Scenario | Runtime | Default sync | Default async | All STORE sync | All STORE async | Default stream | hucre |
|
|
88
|
+
| ---------------- | ------- | ------------ | ------------- | -------------- | --------------- | -------------- | ----------- |
|
|
89
|
+
| Simple (3 rows) | Node 24 | 1,992 ops/s | 1,821 ops/s | 16,644 ops/s | 18,069 ops/s | 21.9 ops/s | 826 ops/s |
|
|
90
|
+
| | Bun 1.4 | 9,862 ops/s | 993 ops/s | 32,644 ops/s | 31,071 ops/s | 1,005 ops/s | 1,128 ops/s |
|
|
91
|
+
| Styled rows (20) | Node 24 | 1,819 ops/s | 1,859 ops/s | 16,499 ops/s | 13,662 ops/s | 21.6 ops/s | 842 ops/s |
|
|
92
|
+
| | Bun 1.4 | 9,072 ops/s | 916 ops/s | 23,892 ops/s | 22,729 ops/s | 1,092 ops/s | 835 ops/s |
|
|
93
|
+
| Table (10x5) | Node 24 | 1,812 ops/s | 2,084 ops/s | 16,471 ops/s | 13,092 ops/s | 21.4 ops/s | 766 ops/s |
|
|
94
|
+
| | Bun 1.4 | 8,891 ops/s | 935 ops/s | 23,550 ops/s | 21,559 ops/s | 1,164 ops/s | 806 ops/s |
|
|
92
95
|
|
|
93
96
|
**Large Files — Create + toBuffer / toStream**
|
|
94
97
|
|
|
95
|
-
| Scenario | Default sync | Default async | All STORE sync | All STORE async | Default stream |
|
|
96
|
-
| ----------------------------- |
|
|
97
|
-
| 2000 rows + 10 images |
|
|
98
|
-
|
|
|
99
|
-
|
|
|
98
|
+
| Scenario | Runtime | Default sync | Default async | All STORE sync | All STORE async | Default stream | hucre |
|
|
99
|
+
| ----------------------------- | ------- | ------------ | ------------- | -------------- | --------------- | -------------- | ---------- |
|
|
100
|
+
| 2000 rows + 10 images | Node 24 | 117 ops/s | 116 ops/s | 142 ops/s | 139 ops/s | 11.8 ops/s | 41.4 ops/s |
|
|
101
|
+
| | Bun 1.4 | 213 ops/s | 192 ops/s | 260 ops/s | 243 ops/s | 50.1 ops/s | 44.0 ops/s |
|
|
102
|
+
| 200x10 table | Node 24 | 838 ops/s | 985 ops/s | 1,374 ops/s | 1,129 ops/s | 21.3 ops/s | 263 ops/s |
|
|
103
|
+
| | Bun 1.4 | 1,157 ops/s | 609 ops/s | 1,636 ops/s | 1,549 ops/s | 373 ops/s | 270 ops/s |
|
|
104
|
+
| 20 sheets × 100 rows + 20 img | Node 24 | 73.3 ops/s | 70.0 ops/s | 97.5 ops/s | 97.1 ops/s | 2.22 ops/s | 23.5 ops/s |
|
|
105
|
+
| | Bun 1.4 | 158 ops/s | 74.0 ops/s | 160 ops/s | 166 ops/s | 28.2 ops/s | 24.3 ops/s |
|
|
100
106
|
|
|
101
107
|
**Large Data — 100,000 rows × 20 columns (2M cells)**
|
|
102
108
|
|
|
103
|
-
| Scenario | Default sync | Default async | All STORE sync | All STORE async | Default stream |
|
|
104
|
-
| --------- |
|
|
105
|
-
| 100k × 20 |
|
|
109
|
+
| Scenario | Runtime | Default sync | Default async | All STORE sync | All STORE async | Default stream | hucre |
|
|
110
|
+
| --------- | ------- | ------------ | ------------- | -------------- | --------------- | -------------- | ---------- |
|
|
111
|
+
| 100k × 20 | Node 24 | 0.89 ops/s | 0.90 ops/s | 1.10 ops/s | 1.10 ops/s | 0.98 ops/s | 0.46 ops/s |
|
|
112
|
+
| | Bun 1.4 | 1.35 ops/s | 1.12 ops/s | 1.57 ops/s | 1.84 ops/s | 0.76 ops/s | 0.56 ops/s |
|
|
106
113
|
|
|
107
|
-
**Stream
|
|
114
|
+
**Stream** = `generateWorkbookStream` (default compression, fully drained). Plain-data workbooks stream through a constant-memory path — at 1M rows × 3 cols, peak RSS is +177 MB streamed vs +810 MB buffered. Scenarios with images fall back to the full-memory stream.
|
|
108
115
|
|
|
109
116
|
## License
|
|
110
117
|
|