@bilig/excel-import 0.14.14
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 +1 -0
- package/README.md +165 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +748 -0
- package/dist/index.js.map +1 -0
- package/dist/workbook-import-content-types.d.ts +10 -0
- package/dist/workbook-import-content-types.js +30 -0
- package/dist/workbook-import-content-types.js.map +1 -0
- package/dist/workbook-import-helpers.d.ts +21 -0
- package/dist/workbook-import-helpers.js +77 -0
- package/dist/workbook-import-helpers.js.map +1 -0
- package/dist/workbook-import-preview.d.ts +19 -0
- package/dist/workbook-import-preview.js +12 -0
- package/dist/workbook-import-preview.js.map +1 -0
- package/dist/xlsx-array-formulas.d.ts +6 -0
- package/dist/xlsx-array-formulas.js +186 -0
- package/dist/xlsx-array-formulas.js.map +1 -0
- package/dist/xlsx-axis-entries.d.ts +3 -0
- package/dist/xlsx-axis-entries.js +90 -0
- package/dist/xlsx-axis-entries.js.map +1 -0
- package/dist/xlsx-calculation-settings.d.ts +9 -0
- package/dist/xlsx-calculation-settings.js +198 -0
- package/dist/xlsx-calculation-settings.js.map +1 -0
- package/dist/xlsx-cell-insertion.d.ts +11 -0
- package/dist/xlsx-cell-insertion.js +164 -0
- package/dist/xlsx-cell-insertion.js.map +1 -0
- package/dist/xlsx-cell-metadata.d.ts +15 -0
- package/dist/xlsx-cell-metadata.js +380 -0
- package/dist/xlsx-cell-metadata.js.map +1 -0
- package/dist/xlsx-chart-artifacts.d.ts +7 -0
- package/dist/xlsx-chart-artifacts.js +327 -0
- package/dist/xlsx-chart-artifacts.js.map +1 -0
- package/dist/xlsx-charts.d.ts +4 -0
- package/dist/xlsx-charts.js +671 -0
- package/dist/xlsx-charts.js.map +1 -0
- package/dist/xlsx-comment-vml.d.ts +11 -0
- package/dist/xlsx-comment-vml.js +292 -0
- package/dist/xlsx-comment-vml.js.map +1 -0
- package/dist/xlsx-comments.d.ts +7 -0
- package/dist/xlsx-comments.js +120 -0
- package/dist/xlsx-comments.js.map +1 -0
- package/dist/xlsx-conditional-formats.d.ts +5 -0
- package/dist/xlsx-conditional-formats.js +513 -0
- package/dist/xlsx-conditional-formats.js.map +1 -0
- package/dist/xlsx-control-artifacts.d.ts +7 -0
- package/dist/xlsx-control-artifacts.js +404 -0
- package/dist/xlsx-control-artifacts.js.map +1 -0
- package/dist/xlsx-data-model-artifacts.d.ts +4 -0
- package/dist/xlsx-data-model-artifacts.js +240 -0
- package/dist/xlsx-data-model-artifacts.js.map +1 -0
- package/dist/xlsx-data-table-formulas.d.ts +4 -0
- package/dist/xlsx-data-table-formulas.js +138 -0
- package/dist/xlsx-data-table-formulas.js.map +1 -0
- package/dist/xlsx-defined-names.d.ts +7 -0
- package/dist/xlsx-defined-names.js +292 -0
- package/dist/xlsx-defined-names.js.map +1 -0
- package/dist/xlsx-dimensions.d.ts +4 -0
- package/dist/xlsx-dimensions.js +495 -0
- package/dist/xlsx-dimensions.js.map +1 -0
- package/dist/xlsx-drawing-artifacts.d.ts +7 -0
- package/dist/xlsx-drawing-artifacts.js +477 -0
- package/dist/xlsx-drawing-artifacts.js.map +1 -0
- package/dist/xlsx-escaped-text.d.ts +2 -0
- package/dist/xlsx-escaped-text.js +22 -0
- package/dist/xlsx-escaped-text.js.map +1 -0
- package/dist/xlsx-export-xml.d.ts +8 -0
- package/dist/xlsx-export-xml.js +99 -0
- package/dist/xlsx-export-xml.js.map +1 -0
- package/dist/xlsx-export.d.ts +2 -0
- package/dist/xlsx-export.js +800 -0
- package/dist/xlsx-export.js.map +1 -0
- package/dist/xlsx-external-link-artifacts.d.ts +4 -0
- package/dist/xlsx-external-link-artifacts.js +317 -0
- package/dist/xlsx-external-link-artifacts.js.map +1 -0
- package/dist/xlsx-external-references.d.ts +29 -0
- package/dist/xlsx-external-references.js +356 -0
- package/dist/xlsx-external-references.js.map +1 -0
- package/dist/xlsx-filters.d.ts +4 -0
- package/dist/xlsx-filters.js +273 -0
- package/dist/xlsx-filters.js.map +1 -0
- package/dist/xlsx-formula-translation.d.ts +10 -0
- package/dist/xlsx-formula-translation.js +391 -0
- package/dist/xlsx-formula-translation.js.map +1 -0
- package/dist/xlsx-formulas.d.ts +2 -0
- package/dist/xlsx-formulas.js +136 -0
- package/dist/xlsx-formulas.js.map +1 -0
- package/dist/xlsx-freeze-panes.d.ts +4 -0
- package/dist/xlsx-freeze-panes.js +206 -0
- package/dist/xlsx-freeze-panes.js.map +1 -0
- package/dist/xlsx-hyperlinks.d.ts +5 -0
- package/dist/xlsx-hyperlinks.js +64 -0
- package/dist/xlsx-hyperlinks.js.map +1 -0
- package/dist/xlsx-ignored-errors.d.ts +4 -0
- package/dist/xlsx-ignored-errors.js +106 -0
- package/dist/xlsx-ignored-errors.js.map +1 -0
- package/dist/xlsx-import-cell-styles.d.ts +8 -0
- package/dist/xlsx-import-cell-styles.js +255 -0
- package/dist/xlsx-import-cell-styles.js.map +1 -0
- package/dist/xlsx-import-sheet-metadata.d.ts +40 -0
- package/dist/xlsx-import-sheet-metadata.js +41 -0
- package/dist/xlsx-import-sheet-metadata.js.map +1 -0
- package/dist/xlsx-import-warnings.d.ts +8 -0
- package/dist/xlsx-import-warnings.js +44 -0
- package/dist/xlsx-import-warnings.js.map +1 -0
- package/dist/xlsx-import-workbook-metadata.d.ts +28 -0
- package/dist/xlsx-import-workbook-metadata.js +29 -0
- package/dist/xlsx-import-workbook-metadata.js.map +1 -0
- package/dist/xlsx-macros.d.ts +10 -0
- package/dist/xlsx-macros.js +63 -0
- package/dist/xlsx-macros.js.map +1 -0
- package/dist/xlsx-merge-entries.d.ts +3 -0
- package/dist/xlsx-merge-entries.js +17 -0
- package/dist/xlsx-merge-entries.js.map +1 -0
- package/dist/xlsx-number-formats.d.ts +7 -0
- package/dist/xlsx-number-formats.js +222 -0
- package/dist/xlsx-number-formats.js.map +1 -0
- package/dist/xlsx-pivot-artifacts.d.ts +29 -0
- package/dist/xlsx-pivot-artifacts.js +292 -0
- package/dist/xlsx-pivot-artifacts.js.map +1 -0
- package/dist/xlsx-pivots.d.ts +10 -0
- package/dist/xlsx-pivots.js +589 -0
- package/dist/xlsx-pivots.js.map +1 -0
- package/dist/xlsx-print-page-setup.d.ts +6 -0
- package/dist/xlsx-print-page-setup.js +224 -0
- package/dist/xlsx-print-page-setup.js.map +1 -0
- package/dist/xlsx-printer-settings.d.ts +4 -0
- package/dist/xlsx-printer-settings.js +279 -0
- package/dist/xlsx-printer-settings.js.map +1 -0
- package/dist/xlsx-protected-ranges.d.ts +4 -0
- package/dist/xlsx-protected-ranges.js +183 -0
- package/dist/xlsx-protected-ranges.js.map +1 -0
- package/dist/xlsx-rich-text-artifacts.d.ts +4 -0
- package/dist/xlsx-rich-text-artifacts.js +303 -0
- package/dist/xlsx-rich-text-artifacts.js.map +1 -0
- package/dist/xlsx-sheet-properties.d.ts +4 -0
- package/dist/xlsx-sheet-properties.js +89 -0
- package/dist/xlsx-sheet-properties.js.map +1 -0
- package/dist/xlsx-sheet-protection.d.ts +4 -0
- package/dist/xlsx-sheet-protection.js +153 -0
- package/dist/xlsx-sheet-protection.js.map +1 -0
- package/dist/xlsx-sheet-visibility.d.ts +4 -0
- package/dist/xlsx-sheet-visibility.js +53 -0
- package/dist/xlsx-sheet-visibility.js.map +1 -0
- package/dist/xlsx-slicer-connection-artifacts.d.ts +4 -0
- package/dist/xlsx-slicer-connection-artifacts.js +426 -0
- package/dist/xlsx-slicer-connection-artifacts.js.map +1 -0
- package/dist/xlsx-sorts.d.ts +5 -0
- package/dist/xlsx-sorts.js +216 -0
- package/dist/xlsx-sorts.js.map +1 -0
- package/dist/xlsx-sparklines.d.ts +4 -0
- package/dist/xlsx-sparklines.js +115 -0
- package/dist/xlsx-sparklines.js.map +1 -0
- package/dist/xlsx-style-only-blank-cells.d.ts +3 -0
- package/dist/xlsx-style-only-blank-cells.js +96 -0
- package/dist/xlsx-style-only-blank-cells.js.map +1 -0
- package/dist/xlsx-style-runs.d.ts +12 -0
- package/dist/xlsx-style-runs.js +35 -0
- package/dist/xlsx-style-runs.js.map +1 -0
- package/dist/xlsx-styles.d.ts +25 -0
- package/dist/xlsx-styles.js +857 -0
- package/dist/xlsx-styles.js.map +1 -0
- package/dist/xlsx-tab-colors.d.ts +4 -0
- package/dist/xlsx-tab-colors.js +166 -0
- package/dist/xlsx-tab-colors.js.map +1 -0
- package/dist/xlsx-tables.d.ts +4 -0
- package/dist/xlsx-tables.js +371 -0
- package/dist/xlsx-tables.js.map +1 -0
- package/dist/xlsx-theme-artifacts.d.ts +6 -0
- package/dist/xlsx-theme-artifacts.js +126 -0
- package/dist/xlsx-theme-artifacts.js.map +1 -0
- package/dist/xlsx-threaded-comment-artifacts.d.ts +8 -0
- package/dist/xlsx-threaded-comment-artifacts.js +329 -0
- package/dist/xlsx-threaded-comment-artifacts.js.map +1 -0
- package/dist/xlsx-validations.d.ts +4 -0
- package/dist/xlsx-validations.js +542 -0
- package/dist/xlsx-validations.js.map +1 -0
- package/dist/xlsx-view-state.d.ts +8 -0
- package/dist/xlsx-view-state.js +144 -0
- package/dist/xlsx-view-state.js.map +1 -0
- package/dist/xlsx-workbook-properties.d.ts +5 -0
- package/dist/xlsx-workbook-properties.js +388 -0
- package/dist/xlsx-workbook-properties.js.map +1 -0
- package/dist/xlsx-workbook-protection.d.ts +4 -0
- package/dist/xlsx-workbook-protection.js +147 -0
- package/dist/xlsx-workbook-protection.js.map +1 -0
- package/dist/xlsx-workbook-sheet-paths.d.ts +4 -0
- package/dist/xlsx-workbook-sheet-paths.js +96 -0
- package/dist/xlsx-workbook-sheet-paths.js.map +1 -0
- package/dist/xlsx-worksheet-cells.d.ts +16 -0
- package/dist/xlsx-worksheet-cells.js +104 -0
- package/dist/xlsx-worksheet-cells.js.map +1 -0
- package/dist/xlsx-worksheet-text-values.d.ts +2 -0
- package/dist/xlsx-worksheet-text-values.js +136 -0
- package/dist/xlsx-worksheet-text-values.js.map +1 -0
- package/dist/xlsx-zip.d.ts +6 -0
- package/dist/xlsx-zip.js +12 -0
- package/dist/xlsx-zip.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { XMLParser } from 'fast-xml-parser';
|
|
2
|
+
import * as XLSX from 'xlsx';
|
|
3
|
+
import { workbookDirectorySheetPaths, workbookSheetPath, workbookSheetPathsByName } from './xlsx-workbook-sheet-paths.js';
|
|
4
|
+
import { getZipText, normalizeZipPath, readXlsxZipEntries } from './xlsx-zip.js';
|
|
5
|
+
const xmlParser = new XMLParser({
|
|
6
|
+
ignoreAttributes: false,
|
|
7
|
+
attributeNamePrefix: '',
|
|
8
|
+
parseAttributeValue: false,
|
|
9
|
+
removeNSPrefix: true,
|
|
10
|
+
});
|
|
11
|
+
function isRecord(value) {
|
|
12
|
+
return typeof value === 'object' && value !== null;
|
|
13
|
+
}
|
|
14
|
+
function asArray(value) {
|
|
15
|
+
if (value === undefined || value === null) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
return Array.isArray(value) ? value : [value];
|
|
19
|
+
}
|
|
20
|
+
function numberValue(value) {
|
|
21
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const number = Number(value);
|
|
25
|
+
return Number.isFinite(number) ? number : null;
|
|
26
|
+
}
|
|
27
|
+
function recordChild(value, key) {
|
|
28
|
+
if (!isRecord(value)) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const child = value[key];
|
|
32
|
+
return isRecord(child) ? child : null;
|
|
33
|
+
}
|
|
34
|
+
function workbookRecord(workbook) {
|
|
35
|
+
const value = workbook;
|
|
36
|
+
return isRecord(value) ? value : null;
|
|
37
|
+
}
|
|
38
|
+
function workbookFiles(workbook) {
|
|
39
|
+
return workbookRecord(workbook)?.['files'];
|
|
40
|
+
}
|
|
41
|
+
function getFileText(files, path) {
|
|
42
|
+
if (!isRecord(files)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const file = files[normalizeZipPath(path)];
|
|
46
|
+
if (!isRecord(file)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const content = file['content'];
|
|
50
|
+
if (typeof content === 'string') {
|
|
51
|
+
return content;
|
|
52
|
+
}
|
|
53
|
+
if (content instanceof ArrayBuffer) {
|
|
54
|
+
return new TextDecoder().decode(content);
|
|
55
|
+
}
|
|
56
|
+
if (ArrayBuffer.isView(content)) {
|
|
57
|
+
return new TextDecoder().decode(content);
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
function workbookStylePath(workbook) {
|
|
62
|
+
const directory = workbookRecord(workbook)?.['Directory'];
|
|
63
|
+
if (!isRecord(directory)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (typeof directory['style'] === 'string') {
|
|
67
|
+
return directory['style'];
|
|
68
|
+
}
|
|
69
|
+
const firstStylePath = asArray(directory['styles']).find((entry) => typeof entry === 'string');
|
|
70
|
+
return typeof firstStylePath === 'string' ? firstStylePath : null;
|
|
71
|
+
}
|
|
72
|
+
function getPackageText(files, sourceZip, path) {
|
|
73
|
+
return sourceZip ? getZipText(sourceZip, path) : getFileText(files, path);
|
|
74
|
+
}
|
|
75
|
+
function normalizeImportedNumberFormatCode(value) {
|
|
76
|
+
if (typeof value !== 'string') {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const trimmed = value.trim();
|
|
80
|
+
return trimmed.length > 0 && trimmed !== 'General' ? trimmed : undefined;
|
|
81
|
+
}
|
|
82
|
+
function builtinNumberFormatCode(formatId) {
|
|
83
|
+
const ssf = XLSX.SSF;
|
|
84
|
+
if (!isRecord(ssf) || !isRecord(ssf['_table'])) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return normalizeImportedNumberFormatCode(ssf['_table'][String(formatId)]);
|
|
88
|
+
}
|
|
89
|
+
function extractStyleXmlElement(stylesXml, elementName) {
|
|
90
|
+
const qualifiedName = `(?:[A-Za-z_][\\w.-]*:)?${elementName}`;
|
|
91
|
+
const expanded = new RegExp(`<${qualifiedName}\\b[^>]*>[\\s\\S]*?<\\/${qualifiedName}>`, 'u').exec(stylesXml);
|
|
92
|
+
if (expanded) {
|
|
93
|
+
return expanded[0];
|
|
94
|
+
}
|
|
95
|
+
const selfClosing = new RegExp(`<${qualifiedName}\\b[^>]*\\/>`, 'u').exec(stylesXml);
|
|
96
|
+
return selfClosing?.[0] ?? null;
|
|
97
|
+
}
|
|
98
|
+
function parseWorkbookNumberFormats(stylesXml) {
|
|
99
|
+
const relevantStylesXml = ['numFmts', 'cellXfs']
|
|
100
|
+
.flatMap((elementName) => {
|
|
101
|
+
const elementXml = extractStyleXmlElement(stylesXml, elementName);
|
|
102
|
+
return elementXml ? [elementXml] : [];
|
|
103
|
+
})
|
|
104
|
+
.join('');
|
|
105
|
+
if (relevantStylesXml.length === 0) {
|
|
106
|
+
return new Map();
|
|
107
|
+
}
|
|
108
|
+
const parsed = xmlParser.parse(`<styleSheet>${relevantStylesXml}</styleSheet>`);
|
|
109
|
+
const styleSheet = recordChild(parsed, 'styleSheet');
|
|
110
|
+
if (!styleSheet) {
|
|
111
|
+
return new Map();
|
|
112
|
+
}
|
|
113
|
+
const customFormats = new Map();
|
|
114
|
+
for (const entry of asArray(recordChild(styleSheet, 'numFmts')?.['numFmt'])) {
|
|
115
|
+
if (!isRecord(entry)) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const formatId = numberValue(entry['numFmtId']);
|
|
119
|
+
const formatCode = normalizeImportedNumberFormatCode(entry['formatCode']);
|
|
120
|
+
if (formatId !== null && Number.isSafeInteger(formatId) && formatCode) {
|
|
121
|
+
customFormats.set(formatId, formatCode);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const formatsByStyleIndex = new Map();
|
|
125
|
+
asArray(recordChild(styleSheet, 'cellXfs')?.['xf']).forEach((entry, index) => {
|
|
126
|
+
if (!isRecord(entry)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const formatId = numberValue(entry['numFmtId']);
|
|
130
|
+
if (formatId === null || !Number.isSafeInteger(formatId)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const formatCode = customFormats.get(formatId) ?? builtinNumberFormatCode(formatId);
|
|
134
|
+
if (formatCode) {
|
|
135
|
+
formatsByStyleIndex.set(index, formatCode);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return formatsByStyleIndex;
|
|
139
|
+
}
|
|
140
|
+
function readXmlAttribute(tag, name) {
|
|
141
|
+
const doubleQuoted = new RegExp(`\\b${name}="([^"]*)"`, 'u').exec(tag);
|
|
142
|
+
if (doubleQuoted) {
|
|
143
|
+
return doubleQuoted[1] ?? null;
|
|
144
|
+
}
|
|
145
|
+
const singleQuoted = new RegExp(`\\b${name}='([^']*)'`, 'u').exec(tag);
|
|
146
|
+
return singleQuoted?.[1] ?? null;
|
|
147
|
+
}
|
|
148
|
+
function parseSheetStyleIndexes(sheetXml, candidateAddresses) {
|
|
149
|
+
const output = new Map();
|
|
150
|
+
if (candidateAddresses?.size === 0) {
|
|
151
|
+
return output;
|
|
152
|
+
}
|
|
153
|
+
let remainingCandidateCount = candidateAddresses?.size ?? null;
|
|
154
|
+
for (const match of sheetXml.matchAll(/<c\b[^>]*>/gu)) {
|
|
155
|
+
const cellTag = match[0];
|
|
156
|
+
const address = readXmlAttribute(cellTag, 'r');
|
|
157
|
+
if (!address) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (candidateAddresses) {
|
|
161
|
+
if (!candidateAddresses.has(address)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
remainingCandidateCount = remainingCandidateCount === null ? null : remainingCandidateCount - 1;
|
|
165
|
+
}
|
|
166
|
+
const styleIndexValue = readXmlAttribute(cellTag, 's');
|
|
167
|
+
if (styleIndexValue === null || styleIndexValue.trim().length === 0) {
|
|
168
|
+
if (remainingCandidateCount === 0) {
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const styleIndex = Number(styleIndexValue);
|
|
174
|
+
if (Number.isSafeInteger(styleIndex)) {
|
|
175
|
+
output.set(address, styleIndex);
|
|
176
|
+
}
|
|
177
|
+
if (remainingCandidateCount === 0) {
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return output;
|
|
182
|
+
}
|
|
183
|
+
export function readImportedWorkbookFileNumberFormats(workbook, sheetNames, options = {}, source) {
|
|
184
|
+
const files = workbookFiles(workbook);
|
|
185
|
+
const sourceZip = source ? readXlsxZipEntries(source) : null;
|
|
186
|
+
const stylePath = workbookStylePath(workbook);
|
|
187
|
+
const styleXml = stylePath ? getPackageText(files, sourceZip, stylePath) : null;
|
|
188
|
+
if (!styleXml) {
|
|
189
|
+
return new Map();
|
|
190
|
+
}
|
|
191
|
+
const formatsByStyleIndex = parseWorkbookNumberFormats(styleXml);
|
|
192
|
+
if (formatsByStyleIndex.size === 0) {
|
|
193
|
+
return new Map();
|
|
194
|
+
}
|
|
195
|
+
const sheetPathsByName = workbookSheetPathsByName(workbook);
|
|
196
|
+
const fallbackSheetPaths = workbookDirectorySheetPaths(workbook);
|
|
197
|
+
const output = new Map();
|
|
198
|
+
sheetNames.forEach((sheetName, index) => {
|
|
199
|
+
const candidateAddresses = options.formatCandidateAddressesBySheet?.get(sheetName);
|
|
200
|
+
if (candidateAddresses?.size === 0) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const sheetPath = workbookSheetPath(sheetPathsByName, fallbackSheetPaths, sheetName, index);
|
|
204
|
+
const sheetXml = sheetPath ? getPackageText(files, sourceZip, sheetPath) : null;
|
|
205
|
+
if (!sheetXml) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const styleIndexes = parseSheetStyleIndexes(sheetXml, candidateAddresses);
|
|
209
|
+
const formats = new Map();
|
|
210
|
+
for (const [address, styleIndex] of styleIndexes) {
|
|
211
|
+
const format = formatsByStyleIndex.get(styleIndex);
|
|
212
|
+
if (format) {
|
|
213
|
+
formats.set(address, format);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (formats.size > 0) {
|
|
217
|
+
output.set(sheetName, formats);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
return output;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=xlsx-number-formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx-number-formats.js","sourceRoot":"","sources":["../src/xlsx-number-formats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { WorkbookPivotArtifactsSnapshot, WorkbookSheetPivotArtifactsSnapshot, WorkbookSnapshot } from '@bilig/protocol';
|
|
2
|
+
import { type XlsxZipEntries } from './xlsx-zip.js';
|
|
3
|
+
export interface ParsedRelationship {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly target: string;
|
|
6
|
+
readonly type: string;
|
|
7
|
+
readonly targetMode?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const spreadsheetNamespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
|
10
|
+
export declare const officeRelationshipNamespace = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
11
|
+
export declare const pivotTableRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable";
|
|
12
|
+
export declare const pivotCacheDefinitionRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition";
|
|
13
|
+
export declare const pivotCacheRecordsRelationshipType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords";
|
|
14
|
+
export declare const pivotTableContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml";
|
|
15
|
+
export declare const pivotCacheDefinitionContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml";
|
|
16
|
+
export declare const pivotCacheRecordsContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml";
|
|
17
|
+
export declare function escapeXml(value: string): string;
|
|
18
|
+
export declare function setZipText(zip: XlsxZipEntries, path: string, text: string): void;
|
|
19
|
+
export declare function parseRelationships(xml: string | null): ParsedRelationship[];
|
|
20
|
+
export declare function nextRelationshipId(relationships: readonly ParsedRelationship[]): string;
|
|
21
|
+
export declare function buildRelationshipsXml(relationships: readonly ParsedRelationship[]): string;
|
|
22
|
+
export declare function addContentTypeOverride(contentTypesXml: string, partName: string, contentType: string): string;
|
|
23
|
+
export declare function resolveTargetPath(basePartPath: string, target: string): string;
|
|
24
|
+
export declare function ensureRelationshipNamespace(xml: string): string;
|
|
25
|
+
export declare function readImportedPivotArtifacts(zip: XlsxZipEntries, sheetNames: readonly string[]): {
|
|
26
|
+
readonly artifacts: WorkbookPivotArtifactsSnapshot | undefined;
|
|
27
|
+
readonly sheetArtifactsByName: Map<string, WorkbookSheetPivotArtifactsSnapshot>;
|
|
28
|
+
};
|
|
29
|
+
export declare function addExportPreservedPivotArtifactsToXlsxBytes(bytes: Uint8Array, snapshot: WorkbookSnapshot): Uint8Array;
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { strFromU8, strToU8, unzipSync, zipSync } from 'fflate';
|
|
2
|
+
import { XMLParser } from 'fast-xml-parser';
|
|
3
|
+
import { getZipText, normalizeZipPath } from './xlsx-zip.js';
|
|
4
|
+
export const spreadsheetNamespace = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main';
|
|
5
|
+
export const officeRelationshipNamespace = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
|
|
6
|
+
export const pivotTableRelationshipType = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable';
|
|
7
|
+
export const pivotCacheDefinitionRelationshipType = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition';
|
|
8
|
+
export const pivotCacheRecordsRelationshipType = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords';
|
|
9
|
+
export const pivotTableContentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml';
|
|
10
|
+
export const pivotCacheDefinitionContentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml';
|
|
11
|
+
export const pivotCacheRecordsContentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml';
|
|
12
|
+
const relationshipNamespace = 'http://schemas.openxmlformats.org/package/2006/relationships';
|
|
13
|
+
const pivotPackagePartPathPattern = /^xl\/(?:pivotTables|pivotCache)\/.+/u;
|
|
14
|
+
const pivotTableDefinitionElementPattern = /<(?:[A-Za-z_][\w.-]*:)?pivotTableDefinition\b[^>]*(?:\/>|>[\s\S]*?<\/(?:[A-Za-z_][\w.-]*:)?pivotTableDefinition>)/gu;
|
|
15
|
+
const xmlParser = new XMLParser({
|
|
16
|
+
ignoreAttributes: false,
|
|
17
|
+
attributeNamePrefix: '',
|
|
18
|
+
parseAttributeValue: false,
|
|
19
|
+
removeNSPrefix: true,
|
|
20
|
+
});
|
|
21
|
+
function isRecord(value) {
|
|
22
|
+
return typeof value === 'object' && value !== null;
|
|
23
|
+
}
|
|
24
|
+
function asArray(value) {
|
|
25
|
+
if (value === undefined || value === null) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
return Array.isArray(value) ? value : [value];
|
|
29
|
+
}
|
|
30
|
+
function recordChild(value, key) {
|
|
31
|
+
if (!isRecord(value)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const child = value[key];
|
|
35
|
+
return isRecord(child) ? child : null;
|
|
36
|
+
}
|
|
37
|
+
export function escapeXml(value) {
|
|
38
|
+
return value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
|
|
39
|
+
}
|
|
40
|
+
export function setZipText(zip, path, text) {
|
|
41
|
+
zip[normalizeZipPath(path)] = strToU8(text);
|
|
42
|
+
}
|
|
43
|
+
export function parseRelationships(xml) {
|
|
44
|
+
if (!xml) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
const parsed = xmlParser.parse(xml);
|
|
48
|
+
return asArray(recordChild(parsed, 'Relationships')?.['Relationship']).flatMap((entry) => {
|
|
49
|
+
if (!isRecord(entry) || typeof entry['Id'] !== 'string' || typeof entry['Target'] !== 'string' || typeof entry['Type'] !== 'string') {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
id: entry['Id'],
|
|
55
|
+
target: entry['Target'],
|
|
56
|
+
type: entry['Type'],
|
|
57
|
+
...(typeof entry['TargetMode'] === 'string' ? { targetMode: entry['TargetMode'] } : {}),
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function nextRelationshipId(relationships) {
|
|
63
|
+
let next = 1;
|
|
64
|
+
for (const relationship of relationships) {
|
|
65
|
+
const match = /^rId(\d+)$/u.exec(relationship.id);
|
|
66
|
+
if (match) {
|
|
67
|
+
next = Math.max(next, Number(match[1]) + 1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return `rId${String(next)}`;
|
|
71
|
+
}
|
|
72
|
+
export function buildRelationshipsXml(relationships) {
|
|
73
|
+
return [
|
|
74
|
+
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>',
|
|
75
|
+
`<Relationships xmlns="${relationshipNamespace}">`,
|
|
76
|
+
...relationships.map((relationship) => `<Relationship Id="${escapeXml(relationship.id)}" Type="${escapeXml(relationship.type)}" Target="${escapeXml(relationship.target)}"${relationship.targetMode ? ` TargetMode="${escapeXml(relationship.targetMode)}"` : ''}/>`),
|
|
77
|
+
'</Relationships>',
|
|
78
|
+
].join('');
|
|
79
|
+
}
|
|
80
|
+
export function addContentTypeOverride(contentTypesXml, partName, contentType) {
|
|
81
|
+
if (contentTypesXml.includes(`PartName="${partName}"`)) {
|
|
82
|
+
return contentTypesXml;
|
|
83
|
+
}
|
|
84
|
+
return contentTypesXml.replace('</Types>', `<Override PartName="${partName}" ContentType="${contentType}"/></Types>`);
|
|
85
|
+
}
|
|
86
|
+
export function resolveTargetPath(basePartPath, target) {
|
|
87
|
+
if (target.startsWith('/')) {
|
|
88
|
+
return normalizeZipPath(target);
|
|
89
|
+
}
|
|
90
|
+
const parts = basePartPath.split('/');
|
|
91
|
+
parts.pop();
|
|
92
|
+
for (const segment of target.split('/')) {
|
|
93
|
+
if (segment === '..') {
|
|
94
|
+
parts.pop();
|
|
95
|
+
}
|
|
96
|
+
else if (segment !== '.' && segment.length > 0) {
|
|
97
|
+
parts.push(segment);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return parts.join('/');
|
|
101
|
+
}
|
|
102
|
+
export function ensureRelationshipNamespace(xml) {
|
|
103
|
+
if (/xmlns:r=/u.test(xml)) {
|
|
104
|
+
return xml;
|
|
105
|
+
}
|
|
106
|
+
return xml.replace(/<([A-Za-z0-9:]+)\b([^>]*)>/u, `<$1$2 xmlns:r="${officeRelationshipNamespace}">`);
|
|
107
|
+
}
|
|
108
|
+
function relationshipSnapshot(relationship) {
|
|
109
|
+
return {
|
|
110
|
+
id: relationship.id,
|
|
111
|
+
type: relationship.type,
|
|
112
|
+
target: relationship.target,
|
|
113
|
+
...(relationship.targetMode ? { targetMode: relationship.targetMode } : {}),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function parsedRelationship(relationship) {
|
|
117
|
+
return {
|
|
118
|
+
id: relationship.id,
|
|
119
|
+
type: relationship.type,
|
|
120
|
+
target: relationship.target,
|
|
121
|
+
...(relationship.targetMode ? { targetMode: relationship.targetMode } : {}),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function addRelationshipsWithFreshIds(relationships, additions) {
|
|
125
|
+
const idMap = new Map();
|
|
126
|
+
for (const addition of additions ?? []) {
|
|
127
|
+
const nextId = nextRelationshipId(relationships);
|
|
128
|
+
relationships.push({ ...parsedRelationship(addition), id: nextId });
|
|
129
|
+
idMap.set(addition.id, nextId);
|
|
130
|
+
}
|
|
131
|
+
return idMap;
|
|
132
|
+
}
|
|
133
|
+
function replaceRelationshipIds(xml, relationshipIds) {
|
|
134
|
+
if (relationshipIds.size === 0) {
|
|
135
|
+
return xml;
|
|
136
|
+
}
|
|
137
|
+
return xml.replace(/\b(?:r:)?id=(["'])([\s\S]*?)\1/gu, (match, quote, id) => {
|
|
138
|
+
const nextId = relationshipIds.get(id);
|
|
139
|
+
return nextId ? match.replace(`${quote}${id}${quote}`, `${quote}${nextId}${quote}`) : match;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function pivotPartContentType(path) {
|
|
143
|
+
if (/^xl\/pivotTables\/pivotTable\d+\.xml$/u.test(path)) {
|
|
144
|
+
return pivotTableContentType;
|
|
145
|
+
}
|
|
146
|
+
if (/^xl\/pivotCache\/pivotCacheDefinition\d+\.xml$/u.test(path)) {
|
|
147
|
+
return pivotCacheDefinitionContentType;
|
|
148
|
+
}
|
|
149
|
+
if (/^xl\/pivotCache\/pivotCacheRecords\d+\.xml$/u.test(path)) {
|
|
150
|
+
return pivotCacheRecordsContentType;
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
function addPivotPartContentTypes(contentTypesXml, parts) {
|
|
155
|
+
let output = contentTypesXml;
|
|
156
|
+
for (const part of parts) {
|
|
157
|
+
const contentType = pivotPartContentType(part.path);
|
|
158
|
+
if (contentType) {
|
|
159
|
+
output = addContentTypeOverride(output, `/${part.path}`, contentType);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return output;
|
|
163
|
+
}
|
|
164
|
+
function workbookPivotCachesXml(workbookXml) {
|
|
165
|
+
return workbookXml?.match(/<(?:[A-Za-z_][\w.-]*:)?pivotCaches\b[^>]*(?:\/>|>[\s\S]*?<\/(?:[A-Za-z_][\w.-]*:)?pivotCaches>)/u)?.[0];
|
|
166
|
+
}
|
|
167
|
+
function insertWorkbookPivotCachesXml(workbookXml, pivotCachesXml, relationshipIds) {
|
|
168
|
+
const nextPivotCachesXml = replaceRelationshipIds(pivotCachesXml, relationshipIds);
|
|
169
|
+
const withoutPivotCaches = ensureRelationshipNamespace(workbookXml.replace(/<(?:[A-Za-z_][\w.-]*:)?pivotCaches\b[^>]*(?:\/>|>[\s\S]*?<\/(?:[A-Za-z_][\w.-]*:)?pivotCaches>)/u, ''));
|
|
170
|
+
if (withoutPivotCaches.includes('</calcPr>')) {
|
|
171
|
+
return withoutPivotCaches.replace('</calcPr>', `</calcPr>${nextPivotCachesXml}`);
|
|
172
|
+
}
|
|
173
|
+
if (withoutPivotCaches.includes('</definedNames>')) {
|
|
174
|
+
return withoutPivotCaches.replace('</definedNames>', `</definedNames>${nextPivotCachesXml}`);
|
|
175
|
+
}
|
|
176
|
+
if (withoutPivotCaches.includes('</sheets>')) {
|
|
177
|
+
return withoutPivotCaches.replace('</sheets>', `</sheets>${nextPivotCachesXml}`);
|
|
178
|
+
}
|
|
179
|
+
return withoutPivotCaches.replace('</workbook>', `${nextPivotCachesXml}</workbook>`);
|
|
180
|
+
}
|
|
181
|
+
function readPivotPackageParts(zip) {
|
|
182
|
+
return Object.keys(zip)
|
|
183
|
+
.filter((path) => pivotPackagePartPathPattern.test(path))
|
|
184
|
+
.toSorted()
|
|
185
|
+
.flatMap((path) => {
|
|
186
|
+
const bytes = zip[path];
|
|
187
|
+
return bytes ? [{ path, xml: strFromU8(bytes) }] : [];
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
function readPivotTableDefinitionsXml(sheetXml) {
|
|
191
|
+
if (!sheetXml) {
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
pivotTableDefinitionElementPattern.lastIndex = 0;
|
|
195
|
+
const definitions = [...sheetXml.matchAll(pivotTableDefinitionElementPattern)].map((match) => match[0]);
|
|
196
|
+
return definitions.length > 0 ? definitions.join('') : undefined;
|
|
197
|
+
}
|
|
198
|
+
function insertPivotTableDefinitionsXml(sheetXml, pivotTableDefinitionsXml, relationshipIds) {
|
|
199
|
+
if (!pivotTableDefinitionsXml) {
|
|
200
|
+
return sheetXml;
|
|
201
|
+
}
|
|
202
|
+
pivotTableDefinitionElementPattern.lastIndex = 0;
|
|
203
|
+
const withoutPivotTableDefinitions = ensureRelationshipNamespace(sheetXml.replace(pivotTableDefinitionElementPattern, ''));
|
|
204
|
+
const nextDefinitionsXml = replaceRelationshipIds(pivotTableDefinitionsXml, relationshipIds);
|
|
205
|
+
return withoutPivotTableDefinitions.replace('</worksheet>', `${nextDefinitionsXml}</worksheet>`);
|
|
206
|
+
}
|
|
207
|
+
export function readImportedPivotArtifacts(zip, sheetNames) {
|
|
208
|
+
const parts = readPivotPackageParts(zip);
|
|
209
|
+
const workbookRelationships = parseRelationships(getZipText(zip, 'xl/_rels/workbook.xml.rels'))
|
|
210
|
+
.filter((relationship) => relationship.type === pivotCacheDefinitionRelationshipType)
|
|
211
|
+
.map(relationshipSnapshot);
|
|
212
|
+
const pivotCachesXml = workbookPivotCachesXml(getZipText(zip, 'xl/workbook.xml'));
|
|
213
|
+
const sheetArtifactsByName = new Map();
|
|
214
|
+
sheetNames.forEach((sheetName, sheetIndex) => {
|
|
215
|
+
const relationships = parseRelationships(getZipText(zip, `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`))
|
|
216
|
+
.filter((relationship) => relationship.type === pivotTableRelationshipType)
|
|
217
|
+
.map(relationshipSnapshot);
|
|
218
|
+
const pivotTableDefinitionsXml = readPivotTableDefinitionsXml(getZipText(zip, `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`));
|
|
219
|
+
if (relationships.length > 0 || pivotTableDefinitionsXml) {
|
|
220
|
+
sheetArtifactsByName.set(sheetName, {
|
|
221
|
+
relationships,
|
|
222
|
+
...(pivotTableDefinitionsXml ? { pivotTableDefinitionsXml } : {}),
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
const artifacts = parts.length > 0 || workbookRelationships.length > 0 || pivotCachesXml
|
|
227
|
+
? {
|
|
228
|
+
parts,
|
|
229
|
+
...(pivotCachesXml ? { workbookPivotCachesXml: pivotCachesXml } : {}),
|
|
230
|
+
...(workbookRelationships.length > 0 ? { workbookRelationships } : {}),
|
|
231
|
+
}
|
|
232
|
+
: undefined;
|
|
233
|
+
return { artifacts, sheetArtifactsByName };
|
|
234
|
+
}
|
|
235
|
+
export function addExportPreservedPivotArtifactsToXlsxBytes(bytes, snapshot) {
|
|
236
|
+
const artifacts = snapshot.workbook.metadata?.pivotArtifacts;
|
|
237
|
+
if (!artifacts) {
|
|
238
|
+
return bytes;
|
|
239
|
+
}
|
|
240
|
+
const zip = unzipSync(bytes);
|
|
241
|
+
let changed = false;
|
|
242
|
+
for (const part of artifacts.parts) {
|
|
243
|
+
if (!pivotPackagePartPathPattern.test(part.path)) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
setZipText(zip, part.path, part.xml);
|
|
247
|
+
changed = true;
|
|
248
|
+
}
|
|
249
|
+
const contentTypesXml = getZipText(zip, '[Content_Types].xml') ?? '';
|
|
250
|
+
if (contentTypesXml.length > 0) {
|
|
251
|
+
const nextContentTypesXml = addPivotPartContentTypes(contentTypesXml, artifacts.parts);
|
|
252
|
+
if (nextContentTypesXml !== contentTypesXml) {
|
|
253
|
+
setZipText(zip, '[Content_Types].xml', nextContentTypesXml);
|
|
254
|
+
changed = true;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
const workbookRelationshipPath = 'xl/_rels/workbook.xml.rels';
|
|
258
|
+
const workbookRelationships = parseRelationships(getZipText(zip, workbookRelationshipPath));
|
|
259
|
+
const workbookRelationshipIds = addRelationshipsWithFreshIds(workbookRelationships, artifacts.workbookRelationships);
|
|
260
|
+
if ((artifacts.workbookRelationships?.length ?? 0) > 0) {
|
|
261
|
+
setZipText(zip, workbookRelationshipPath, buildRelationshipsXml(workbookRelationships));
|
|
262
|
+
changed = true;
|
|
263
|
+
}
|
|
264
|
+
const workbookXml = getZipText(zip, 'xl/workbook.xml');
|
|
265
|
+
if (workbookXml && artifacts.workbookPivotCachesXml) {
|
|
266
|
+
setZipText(zip, 'xl/workbook.xml', insertWorkbookPivotCachesXml(workbookXml, artifacts.workbookPivotCachesXml, workbookRelationshipIds));
|
|
267
|
+
changed = true;
|
|
268
|
+
}
|
|
269
|
+
snapshot.sheets
|
|
270
|
+
.toSorted((left, right) => left.order - right.order)
|
|
271
|
+
.forEach((sheet, sheetIndex) => {
|
|
272
|
+
const sheetArtifacts = sheet.metadata?.pivotArtifacts;
|
|
273
|
+
if (!sheetArtifacts) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const relationshipPath = `xl/worksheets/_rels/sheet${String(sheetIndex + 1)}.xml.rels`;
|
|
277
|
+
const relationships = parseRelationships(getZipText(zip, relationshipPath));
|
|
278
|
+
const relationshipIds = addRelationshipsWithFreshIds(relationships, sheetArtifacts.relationships);
|
|
279
|
+
if (sheetArtifacts.relationships.length > 0) {
|
|
280
|
+
setZipText(zip, relationshipPath, buildRelationshipsXml(relationships));
|
|
281
|
+
changed = true;
|
|
282
|
+
}
|
|
283
|
+
const sheetPath = `xl/worksheets/sheet${String(sheetIndex + 1)}.xml`;
|
|
284
|
+
const sheetXml = getZipText(zip, sheetPath);
|
|
285
|
+
if (sheetXml && sheetArtifacts.pivotTableDefinitionsXml) {
|
|
286
|
+
setZipText(zip, sheetPath, insertPivotTableDefinitionsXml(sheetXml, sheetArtifacts.pivotTableDefinitionsXml, relationshipIds));
|
|
287
|
+
changed = true;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
return changed ? zipSync(zip) : bytes;
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=xlsx-pivot-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx-pivot-artifacts.js","sourceRoot":"","sources":["../src/xlsx-pivot-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WorkbookDefinedNameSnapshot, WorkbookPivotArtifactsSnapshot, WorkbookPivotSnapshot, WorkbookSheetPivotArtifactsSnapshot, WorkbookSnapshot, WorkbookTableSnapshot } from '@bilig/protocol';
|
|
2
|
+
import { type XlsxZipSource } from './xlsx-zip.js';
|
|
3
|
+
export interface ImportedWorkbookPivots {
|
|
4
|
+
readonly pivots: WorkbookPivotSnapshot[] | undefined;
|
|
5
|
+
readonly hasExternalPivotCaches: boolean;
|
|
6
|
+
readonly artifacts: WorkbookPivotArtifactsSnapshot | undefined;
|
|
7
|
+
readonly sheetArtifactsByName: Map<string, WorkbookSheetPivotArtifactsSnapshot>;
|
|
8
|
+
}
|
|
9
|
+
export declare function addExportPivotsToXlsxBytes(bytes: Uint8Array, snapshot: WorkbookSnapshot, exportSheetNamesByOriginalName: ReadonlyMap<string, string>): Uint8Array;
|
|
10
|
+
export declare function readImportedWorkbookPivots(source: XlsxZipSource, sheetNames: readonly string[], tables?: readonly WorkbookTableSnapshot[], definedNames?: readonly WorkbookDefinedNameSnapshot[]): ImportedWorkbookPivots;
|