to-spreadsheet 0.0.1 → 0.0.2
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/.github/workflows/automation.yaml +29 -0
- package/LICENSE +21 -21
- package/README.md +2 -2
- package/package.json +13 -3
- package/src/_rels/.rels.ts +10 -0
- package/src/content-types.xml.ts +15 -0
- package/src/docProps/app.xml.ts +51 -0
- package/src/docProps/core.xml.ts +24 -0
- package/src/generate-excel.ts +66 -0
- package/src/index.ts +42 -0
- package/src/xl/_rels/workbook.xml.rels.ts +10 -0
- package/src/xl/styles.xml.ts +52 -0
- package/src/xl/theme/theme1.xml.ts +297 -0
- package/src/xl/workbook.xml.ts +35 -0
- package/src/xl/worksheets/sheet1.xml.ts +54 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Publish to NPM
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
node-version: [16.x]
|
|
14
|
+
registry-url: ['https://registry.npmjs.org']
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v2
|
|
18
|
+
- uses: actions/setup-node@v2
|
|
19
|
+
with:
|
|
20
|
+
node-version: ${{ matrix.node-version }}
|
|
21
|
+
registry-url: ${{ matrix.registry-url }}
|
|
22
|
+
- name: 'Installing deps'
|
|
23
|
+
run: npm i
|
|
24
|
+
- name: 'Build'
|
|
25
|
+
run: npm run build
|
|
26
|
+
- name: 'Publish'
|
|
27
|
+
run: npm publish
|
|
28
|
+
env:
|
|
29
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2022 Maifee Ul Asad
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Maifee Ul Asad
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
# to-spreadsheet
|
|
2
|
-
npm to package to create spreadsheet in node environment
|
|
1
|
+
# to-spreadsheet
|
|
2
|
+
npm to package to create spreadsheet in node environment
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "to-spreadsheet",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "npm to package to create spreadsheet in node environment",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"
|
|
6
|
+
"build": "npx tsc",
|
|
7
|
+
"test:compile": "npx ts-node src/index.ts"
|
|
7
8
|
},
|
|
8
9
|
"repository": {
|
|
9
10
|
"type": "git",
|
|
@@ -14,5 +15,14 @@
|
|
|
14
15
|
"bugs": {
|
|
15
16
|
"url": "https://github.com/maifeeulasad/to-spreadsheet/issues"
|
|
16
17
|
},
|
|
17
|
-
"homepage": "https://github.com/maifeeulasad/to-spreadsheet#readme"
|
|
18
|
+
"homepage": "https://github.com/maifeeulasad/to-spreadsheet#readme",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"archiver": "^5.3.1",
|
|
21
|
+
"date-fns": "^2.29.3"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/node": "^17.0.35",
|
|
25
|
+
"ts-node": "^10.8.0",
|
|
26
|
+
"typescript": "^4.7.2"
|
|
27
|
+
}
|
|
18
28
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const generateRels = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
4
|
+
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml" />
|
|
5
|
+
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml" />
|
|
6
|
+
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml" />
|
|
7
|
+
</Relationships>
|
|
8
|
+
`;
|
|
9
|
+
|
|
10
|
+
export { generateRels };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const generateContentTypesXml = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
|
4
|
+
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
|
|
5
|
+
<Default Extension="xml" ContentType="application/xml" />
|
|
6
|
+
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />
|
|
7
|
+
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />
|
|
8
|
+
<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml" />
|
|
9
|
+
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />
|
|
10
|
+
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml" />
|
|
11
|
+
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" />
|
|
12
|
+
</Types>
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export {generateContentTypesXml}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const generateAppXml = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
|
|
4
|
+
<Application>
|
|
5
|
+
Microsoft Excel
|
|
6
|
+
</Application>
|
|
7
|
+
<DocSecurity>
|
|
8
|
+
0
|
|
9
|
+
</DocSecurity>
|
|
10
|
+
<ScaleCrop>
|
|
11
|
+
false
|
|
12
|
+
</ScaleCrop>
|
|
13
|
+
<HeadingPairs>
|
|
14
|
+
<vector size="2" baseType="variant">
|
|
15
|
+
<variant>
|
|
16
|
+
<lpstr>
|
|
17
|
+
Worksheets
|
|
18
|
+
</lpstr>
|
|
19
|
+
</variant>
|
|
20
|
+
<variant>
|
|
21
|
+
<i4>
|
|
22
|
+
1
|
|
23
|
+
</i4>
|
|
24
|
+
</variant>
|
|
25
|
+
</vector>
|
|
26
|
+
</HeadingPairs>
|
|
27
|
+
<TitlesOfParts>
|
|
28
|
+
<vector size="1" baseType="lpstr">
|
|
29
|
+
<lpstr>
|
|
30
|
+
Sheet1
|
|
31
|
+
</lpstr>
|
|
32
|
+
</vector>
|
|
33
|
+
</TitlesOfParts>
|
|
34
|
+
<Company>
|
|
35
|
+
</Company>
|
|
36
|
+
<LinksUpToDate>
|
|
37
|
+
false
|
|
38
|
+
</LinksUpToDate>
|
|
39
|
+
<SharedDoc>
|
|
40
|
+
false
|
|
41
|
+
</SharedDoc>
|
|
42
|
+
<HyperlinksChanged>
|
|
43
|
+
false
|
|
44
|
+
</HyperlinksChanged>
|
|
45
|
+
<AppVersion>
|
|
46
|
+
16.0300
|
|
47
|
+
</AppVersion>
|
|
48
|
+
</Properties>
|
|
49
|
+
`;
|
|
50
|
+
|
|
51
|
+
export {generateAppXml}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { format } from 'date-fns'
|
|
2
|
+
|
|
3
|
+
const generateCoreXml = (username: string = "to-spreadsheet") => {
|
|
4
|
+
const date = format(Date.now(), 'yyyy-MM-dd') + 'T' + format(Date.now(), 'HH:mm:ss') + 'Z'
|
|
5
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
6
|
+
<coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
7
|
+
<creator>
|
|
8
|
+
${username}
|
|
9
|
+
</creator>
|
|
10
|
+
<lastModifiedBy>
|
|
11
|
+
${username}
|
|
12
|
+
</lastModifiedBy>
|
|
13
|
+
<created xsi:type="dcterms:W3CDTF">
|
|
14
|
+
${date}
|
|
15
|
+
</created>
|
|
16
|
+
<modified xsi:type="dcterms:W3CDTF">
|
|
17
|
+
${date}
|
|
18
|
+
</modified>
|
|
19
|
+
</coreProperties>
|
|
20
|
+
`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
export {generateCoreXml}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {generateRels} from "./_rels/.rels";
|
|
2
|
+
import {generateAppXml} from "./docProps/app.xml";
|
|
3
|
+
import { generateCoreXml} from "./docProps/core.xml";
|
|
4
|
+
import {generateContentTypesXml} from "./content-types.xml";
|
|
5
|
+
import {generateWorkBookXmlRels} from "./xl/_rels/workbook.xml.rels";
|
|
6
|
+
import {generateTheme1} from "./xl/theme/theme1.xml";
|
|
7
|
+
import {generateSheet1Xml, ICellEntry} from "./xl/worksheets/sheet1.xml";
|
|
8
|
+
import {generateStyleXml} from "./xl/styles.xml";
|
|
9
|
+
import {generateWorkBookXml} from "./xl/workbook.xml";
|
|
10
|
+
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const archiver = require('archiver');
|
|
13
|
+
|
|
14
|
+
const generateTree = (data:ICellEntry[][]) => { return{
|
|
15
|
+
"[Content_Types].xml": generateContentTypesXml(),
|
|
16
|
+
"_rels/.rels" : generateRels(),
|
|
17
|
+
"docProps/app.xml": generateAppXml() ,
|
|
18
|
+
"docProps/core.xml": generateCoreXml() ,
|
|
19
|
+
"xl/_rels/workbook.xml.rels": generateWorkBookXmlRels(),
|
|
20
|
+
"xl/theme/theme1.xml": generateTheme1() ,
|
|
21
|
+
"xl/worksheets/sheet1.xml": generateSheet1Xml(data) ,
|
|
22
|
+
"xl/styles.xml": generateStyleXml(),
|
|
23
|
+
"xl/workbook.xml": generateWorkBookXml(),
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
const generateExcel = (data:ICellEntry[][]) => {
|
|
29
|
+
const output = fs.createWriteStream(__dirname + '/example.xlsx');
|
|
30
|
+
const archive = archiver('zip', {
|
|
31
|
+
zlib: { level: 9 }
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
output.on('close', function() {
|
|
35
|
+
console.debug(archive.pointer() + ' total bytes');
|
|
36
|
+
console.debug('archiver has been finalized and the output file descriptor has closed.');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
output.on('end', function() {
|
|
40
|
+
console.debug('Data has been drained');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
archive.on('warning', function(err:any) {
|
|
44
|
+
if (err.code === 'ENOENT') {
|
|
45
|
+
// log warning
|
|
46
|
+
} else {
|
|
47
|
+
// throw error
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
archive.on('error', function(err:any) {
|
|
53
|
+
throw err;
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
archive.pipe(output);
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
Object.entries(generateTree(data)).map((value)=>{
|
|
60
|
+
archive.append(value[1], { name: value[0] });
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
archive.finalize();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {generateExcel}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {generateExcel} from "./generate-excel";
|
|
2
|
+
|
|
3
|
+
let data = [
|
|
4
|
+
[
|
|
5
|
+
{ readOnly: true, value: "" },
|
|
6
|
+
{ value: "A", readOnly: true },
|
|
7
|
+
{ value: "B", readOnly: true },
|
|
8
|
+
{ value: "C", readOnly: true },
|
|
9
|
+
{ value: "D", readOnly: true },
|
|
10
|
+
{ value: "D", readOnly: true },
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
{ readOnly: true, value: 1 },
|
|
14
|
+
{ value: 1 },
|
|
15
|
+
{ value: 3 },
|
|
16
|
+
{ value: 3 },
|
|
17
|
+
{ value: 3 },
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
{ readOnly: true, value: 2 },
|
|
21
|
+
{ value: 2 },
|
|
22
|
+
{ value: 4 },
|
|
23
|
+
{ value: 4 },
|
|
24
|
+
{ value: 4 },
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
{ readOnly: true, value: 3 },
|
|
28
|
+
{ value: 1 },
|
|
29
|
+
{ value: 3 },
|
|
30
|
+
{ value: 3 },
|
|
31
|
+
{ value: 3 },
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
{ readOnly: true, value: 4 },
|
|
35
|
+
{ value: 2 },
|
|
36
|
+
{ value: 4 },
|
|
37
|
+
{ value: 4 },
|
|
38
|
+
{ value: 4 },
|
|
39
|
+
],
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
generateExcel(data);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const generateWorkBookXmlRels = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
4
|
+
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" />
|
|
5
|
+
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml" />
|
|
6
|
+
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml" />
|
|
7
|
+
</Relationships>
|
|
8
|
+
`;
|
|
9
|
+
|
|
10
|
+
export {generateWorkBookXmlRels}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const generateStyleXml = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2 xr" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision">
|
|
4
|
+
<fonts count="1" x14ac:knownFonts="1">
|
|
5
|
+
<font>
|
|
6
|
+
<sz val="11" />
|
|
7
|
+
<color theme="1" />
|
|
8
|
+
<name val="Calibri" />
|
|
9
|
+
<family val="2" />
|
|
10
|
+
<scheme val="minor" />
|
|
11
|
+
</font>
|
|
12
|
+
</fonts>
|
|
13
|
+
<fills count="2">
|
|
14
|
+
<fill>
|
|
15
|
+
<patternFill patternType="none" />
|
|
16
|
+
</fill>
|
|
17
|
+
<fill>
|
|
18
|
+
<patternFill patternType="gray125" />
|
|
19
|
+
</fill>
|
|
20
|
+
</fills>
|
|
21
|
+
<borders count="1">
|
|
22
|
+
<border>
|
|
23
|
+
<left />
|
|
24
|
+
<right />
|
|
25
|
+
<top />
|
|
26
|
+
<bottom />
|
|
27
|
+
<diagonal />
|
|
28
|
+
</border>
|
|
29
|
+
</borders>
|
|
30
|
+
<cellStyleXfs count="1">
|
|
31
|
+
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />
|
|
32
|
+
</cellStyleXfs>
|
|
33
|
+
<cellXfs count="1">
|
|
34
|
+
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />
|
|
35
|
+
</cellXfs>
|
|
36
|
+
<cellStyles count="1">
|
|
37
|
+
<cellStyle name="Normal" xfId="0" builtinId="0" />
|
|
38
|
+
</cellStyles>
|
|
39
|
+
<dxfs count="0" />
|
|
40
|
+
<tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16" />
|
|
41
|
+
<extLst>
|
|
42
|
+
<ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main">
|
|
43
|
+
<slicerStyles defaultSlicerStyle="SlicerStyleLight1" />
|
|
44
|
+
</ext>
|
|
45
|
+
<ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">
|
|
46
|
+
<timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1" />
|
|
47
|
+
</ext>
|
|
48
|
+
</extLst>
|
|
49
|
+
</styleSheet>
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
export {generateStyleXml}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
const generateTheme1 = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">
|
|
4
|
+
<themeElements>
|
|
5
|
+
<clrScheme name="Office">
|
|
6
|
+
<dk1>
|
|
7
|
+
<sysClr val="windowText" lastClr="000000" />
|
|
8
|
+
</dk1>
|
|
9
|
+
<lt1>
|
|
10
|
+
<sysClr val="window" lastClr="FFFFFF" />
|
|
11
|
+
</lt1>
|
|
12
|
+
<dk2>
|
|
13
|
+
<srgbClr val="44546A" />
|
|
14
|
+
</dk2>
|
|
15
|
+
<lt2>
|
|
16
|
+
<srgbClr val="E7E6E6" />
|
|
17
|
+
</lt2>
|
|
18
|
+
<accent1>
|
|
19
|
+
<srgbClr val="4472C4" />
|
|
20
|
+
</accent1>
|
|
21
|
+
<accent2>
|
|
22
|
+
<srgbClr val="ED7D31" />
|
|
23
|
+
</accent2>
|
|
24
|
+
<accent3>
|
|
25
|
+
<srgbClr val="A5A5A5" />
|
|
26
|
+
</accent3>
|
|
27
|
+
<accent4>
|
|
28
|
+
<srgbClr val="FFC000" />
|
|
29
|
+
</accent4>
|
|
30
|
+
<accent5>
|
|
31
|
+
<srgbClr val="5B9BD5" />
|
|
32
|
+
</accent5>
|
|
33
|
+
<accent6>
|
|
34
|
+
<srgbClr val="70AD47" />
|
|
35
|
+
</accent6>
|
|
36
|
+
<hlink>
|
|
37
|
+
<srgbClr val="0563C1" />
|
|
38
|
+
</hlink>
|
|
39
|
+
<folHlink>
|
|
40
|
+
<srgbClr val="954F72" />
|
|
41
|
+
</folHlink>
|
|
42
|
+
</clrScheme>
|
|
43
|
+
<fontScheme name="Office">
|
|
44
|
+
<majorFont>
|
|
45
|
+
<latin typeface="Calibri Light" panose="020F0302020204030204" />
|
|
46
|
+
<ea typeface="" />
|
|
47
|
+
<cs typeface="" />
|
|
48
|
+
<font script="Jpan" typeface="游ゴシック Light" />
|
|
49
|
+
<font script="Hang" typeface="맑은 고딕" />
|
|
50
|
+
<font script="Hans" typeface="等线 Light" />
|
|
51
|
+
<font script="Hant" typeface="新細明體" />
|
|
52
|
+
<font script="Arab" typeface="Times New Roman" />
|
|
53
|
+
<font script="Hebr" typeface="Times New Roman" />
|
|
54
|
+
<font script="Thai" typeface="Tahoma" />
|
|
55
|
+
<font script="Ethi" typeface="Nyala" />
|
|
56
|
+
<font script="Beng" typeface="Vrinda" />
|
|
57
|
+
<font script="Gujr" typeface="Shruti" />
|
|
58
|
+
<font script="Khmr" typeface="MoolBoran" />
|
|
59
|
+
<font script="Knda" typeface="Tunga" />
|
|
60
|
+
<font script="Guru" typeface="Raavi" />
|
|
61
|
+
<font script="Cans" typeface="Euphemia" />
|
|
62
|
+
<font script="Cher" typeface="Plantagenet Cherokee" />
|
|
63
|
+
<font script="Yiii" typeface="Microsoft Yi Baiti" />
|
|
64
|
+
<font script="Tibt" typeface="Microsoft Himalaya" />
|
|
65
|
+
<font script="Thaa" typeface="MV Boli" />
|
|
66
|
+
<font script="Deva" typeface="Mangal" />
|
|
67
|
+
<font script="Telu" typeface="Gautami" />
|
|
68
|
+
<font script="Taml" typeface="Latha" />
|
|
69
|
+
<font script="Syrc" typeface="Estrangelo Edessa" />
|
|
70
|
+
<font script="Orya" typeface="Kalinga" />
|
|
71
|
+
<font script="Mlym" typeface="Kartika" />
|
|
72
|
+
<font script="Laoo" typeface="DokChampa" />
|
|
73
|
+
<font script="Sinh" typeface="Iskoola Pota" />
|
|
74
|
+
<font script="Mong" typeface="Mongolian Baiti" />
|
|
75
|
+
<font script="Viet" typeface="Times New Roman" />
|
|
76
|
+
<font script="Uigh" typeface="Microsoft Uighur" />
|
|
77
|
+
<font script="Geor" typeface="Sylfaen" />
|
|
78
|
+
<font script="Armn" typeface="Arial" />
|
|
79
|
+
<font script="Bugi" typeface="Leelawadee UI" />
|
|
80
|
+
<font script="Bopo" typeface="Microsoft JhengHei" />
|
|
81
|
+
<font script="Java" typeface="Javanese Text" />
|
|
82
|
+
<font script="Lisu" typeface="Segoe UI" />
|
|
83
|
+
<font script="Mymr" typeface="Myanmar Text" />
|
|
84
|
+
<font script="Nkoo" typeface="Ebrima" />
|
|
85
|
+
<font script="Olck" typeface="Nirmala UI" />
|
|
86
|
+
<font script="Osma" typeface="Ebrima" />
|
|
87
|
+
<font script="Phag" typeface="Phagspa" />
|
|
88
|
+
<font script="Syrn" typeface="Estrangelo Edessa" />
|
|
89
|
+
<font script="Syrj" typeface="Estrangelo Edessa" />
|
|
90
|
+
<font script="Syre" typeface="Estrangelo Edessa" />
|
|
91
|
+
<font script="Sora" typeface="Nirmala UI" />
|
|
92
|
+
<font script="Tale" typeface="Microsoft Tai Le" />
|
|
93
|
+
<font script="Talu" typeface="Microsoft New Tai Lue" />
|
|
94
|
+
<font script="Tfng" typeface="Ebrima" />
|
|
95
|
+
</majorFont>
|
|
96
|
+
<minorFont>
|
|
97
|
+
<latin typeface="Calibri" panose="020F0502020204030204" />
|
|
98
|
+
<ea typeface="" />
|
|
99
|
+
<cs typeface="" />
|
|
100
|
+
<font script="Jpan" typeface="游ゴシック" />
|
|
101
|
+
<font script="Hang" typeface="맑은 고딕" />
|
|
102
|
+
<font script="Hans" typeface="等线" />
|
|
103
|
+
<font script="Hant" typeface="新細明體" />
|
|
104
|
+
<font script="Arab" typeface="Arial" />
|
|
105
|
+
<font script="Hebr" typeface="Arial" />
|
|
106
|
+
<font script="Thai" typeface="Tahoma" />
|
|
107
|
+
<font script="Ethi" typeface="Nyala" />
|
|
108
|
+
<font script="Beng" typeface="Vrinda" />
|
|
109
|
+
<font script="Gujr" typeface="Shruti" />
|
|
110
|
+
<font script="Khmr" typeface="DaunPenh" />
|
|
111
|
+
<font script="Knda" typeface="Tunga" />
|
|
112
|
+
<font script="Guru" typeface="Raavi" />
|
|
113
|
+
<font script="Cans" typeface="Euphemia" />
|
|
114
|
+
<font script="Cher" typeface="Plantagenet Cherokee" />
|
|
115
|
+
<font script="Yiii" typeface="Microsoft Yi Baiti" />
|
|
116
|
+
<font script="Tibt" typeface="Microsoft Himalaya" />
|
|
117
|
+
<font script="Thaa" typeface="MV Boli" />
|
|
118
|
+
<font script="Deva" typeface="Mangal" />
|
|
119
|
+
<font script="Telu" typeface="Gautami" />
|
|
120
|
+
<font script="Taml" typeface="Latha" />
|
|
121
|
+
<font script="Syrc" typeface="Estrangelo Edessa" />
|
|
122
|
+
<font script="Orya" typeface="Kalinga" />
|
|
123
|
+
<font script="Mlym" typeface="Kartika" />
|
|
124
|
+
<font script="Laoo" typeface="DokChampa" />
|
|
125
|
+
<font script="Sinh" typeface="Iskoola Pota" />
|
|
126
|
+
<font script="Mong" typeface="Mongolian Baiti" />
|
|
127
|
+
<font script="Viet" typeface="Arial" />
|
|
128
|
+
<font script="Uigh" typeface="Microsoft Uighur" />
|
|
129
|
+
<font script="Geor" typeface="Sylfaen" />
|
|
130
|
+
<font script="Armn" typeface="Arial" />
|
|
131
|
+
<font script="Bugi" typeface="Leelawadee UI" />
|
|
132
|
+
<font script="Bopo" typeface="Microsoft JhengHei" />
|
|
133
|
+
<font script="Java" typeface="Javanese Text" />
|
|
134
|
+
<font script="Lisu" typeface="Segoe UI" />
|
|
135
|
+
<font script="Mymr" typeface="Myanmar Text" />
|
|
136
|
+
<font script="Nkoo" typeface="Ebrima" />
|
|
137
|
+
<font script="Olck" typeface="Nirmala UI" />
|
|
138
|
+
<font script="Osma" typeface="Ebrima" />
|
|
139
|
+
<font script="Phag" typeface="Phagspa" />
|
|
140
|
+
<font script="Syrn" typeface="Estrangelo Edessa" />
|
|
141
|
+
<font script="Syrj" typeface="Estrangelo Edessa" />
|
|
142
|
+
<font script="Syre" typeface="Estrangelo Edessa" />
|
|
143
|
+
<font script="Sora" typeface="Nirmala UI" />
|
|
144
|
+
<font script="Tale" typeface="Microsoft Tai Le" />
|
|
145
|
+
<font script="Talu" typeface="Microsoft New Tai Lue" />
|
|
146
|
+
<font script="Tfng" typeface="Ebrima" />
|
|
147
|
+
</minorFont>
|
|
148
|
+
</fontScheme>
|
|
149
|
+
<fmtScheme name="Office">
|
|
150
|
+
<fillStyleLst>
|
|
151
|
+
<solidFill>
|
|
152
|
+
<schemeClr val="phClr" />
|
|
153
|
+
</solidFill>
|
|
154
|
+
<gradFill rotWithShape="1">
|
|
155
|
+
<gsLst>
|
|
156
|
+
<gs pos="0">
|
|
157
|
+
<schemeClr val="phClr">
|
|
158
|
+
<lumMod val="110000" />
|
|
159
|
+
<satMod val="105000" />
|
|
160
|
+
<tint val="67000" />
|
|
161
|
+
</schemeClr>
|
|
162
|
+
</gs>
|
|
163
|
+
<gs pos="50000">
|
|
164
|
+
<schemeClr val="phClr">
|
|
165
|
+
<lumMod val="105000" />
|
|
166
|
+
<satMod val="103000" />
|
|
167
|
+
<tint val="73000" />
|
|
168
|
+
</schemeClr>
|
|
169
|
+
</gs>
|
|
170
|
+
<gs pos="100000">
|
|
171
|
+
<schemeClr val="phClr">
|
|
172
|
+
<lumMod val="105000" />
|
|
173
|
+
<satMod val="109000" />
|
|
174
|
+
<tint val="81000" />
|
|
175
|
+
</schemeClr>
|
|
176
|
+
</gs>
|
|
177
|
+
</gsLst>
|
|
178
|
+
<lin ang="5400000" scaled="0" />
|
|
179
|
+
</gradFill>
|
|
180
|
+
<gradFill rotWithShape="1">
|
|
181
|
+
<gsLst>
|
|
182
|
+
<gs pos="0">
|
|
183
|
+
<schemeClr val="phClr">
|
|
184
|
+
<satMod val="103000" />
|
|
185
|
+
<lumMod val="102000" />
|
|
186
|
+
<tint val="94000" />
|
|
187
|
+
</schemeClr>
|
|
188
|
+
</gs>
|
|
189
|
+
<gs pos="50000">
|
|
190
|
+
<schemeClr val="phClr">
|
|
191
|
+
<satMod val="110000" />
|
|
192
|
+
<lumMod val="100000" />
|
|
193
|
+
<shade val="100000" />
|
|
194
|
+
</schemeClr>
|
|
195
|
+
</gs>
|
|
196
|
+
<gs pos="100000">
|
|
197
|
+
<schemeClr val="phClr">
|
|
198
|
+
<lumMod val="99000" />
|
|
199
|
+
<satMod val="120000" />
|
|
200
|
+
<shade val="78000" />
|
|
201
|
+
</schemeClr>
|
|
202
|
+
</gs>
|
|
203
|
+
</gsLst>
|
|
204
|
+
<lin ang="5400000" scaled="0" />
|
|
205
|
+
</gradFill>
|
|
206
|
+
</fillStyleLst>
|
|
207
|
+
<lnStyleLst>
|
|
208
|
+
<ln w="6350" cap="flat" cmpd="sng" algn="ctr">
|
|
209
|
+
<solidFill>
|
|
210
|
+
<schemeClr val="phClr" />
|
|
211
|
+
</solidFill>
|
|
212
|
+
<prstDash val="solid" />
|
|
213
|
+
<miter lim="800000" />
|
|
214
|
+
</ln>
|
|
215
|
+
<ln w="12700" cap="flat" cmpd="sng" algn="ctr">
|
|
216
|
+
<solidFill>
|
|
217
|
+
<schemeClr val="phClr" />
|
|
218
|
+
</solidFill>
|
|
219
|
+
<prstDash val="solid" />
|
|
220
|
+
<miter lim="800000" />
|
|
221
|
+
</ln>
|
|
222
|
+
<ln w="19050" cap="flat" cmpd="sng" algn="ctr">
|
|
223
|
+
<solidFill>
|
|
224
|
+
<schemeClr val="phClr" />
|
|
225
|
+
</solidFill>
|
|
226
|
+
<prstDash val="solid" />
|
|
227
|
+
<miter lim="800000" />
|
|
228
|
+
</ln>
|
|
229
|
+
</lnStyleLst>
|
|
230
|
+
<effectStyleLst>
|
|
231
|
+
<effectStyle>
|
|
232
|
+
<effectLst />
|
|
233
|
+
</effectStyle>
|
|
234
|
+
<effectStyle>
|
|
235
|
+
<effectLst />
|
|
236
|
+
</effectStyle>
|
|
237
|
+
<effectStyle>
|
|
238
|
+
<effectLst>
|
|
239
|
+
<outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0">
|
|
240
|
+
<srgbClr val="000000">
|
|
241
|
+
<alpha val="63000" />
|
|
242
|
+
</srgbClr>
|
|
243
|
+
</outerShdw>
|
|
244
|
+
</effectLst>
|
|
245
|
+
</effectStyle>
|
|
246
|
+
</effectStyleLst>
|
|
247
|
+
<bgFillStyleLst>
|
|
248
|
+
<solidFill>
|
|
249
|
+
<schemeClr val="phClr" />
|
|
250
|
+
</solidFill>
|
|
251
|
+
<solidFill>
|
|
252
|
+
<schemeClr val="phClr">
|
|
253
|
+
<tint val="95000" />
|
|
254
|
+
<satMod val="170000" />
|
|
255
|
+
</schemeClr>
|
|
256
|
+
</solidFill>
|
|
257
|
+
<gradFill rotWithShape="1">
|
|
258
|
+
<gsLst>
|
|
259
|
+
<gs pos="0">
|
|
260
|
+
<schemeClr val="phClr">
|
|
261
|
+
<tint val="93000" />
|
|
262
|
+
<satMod val="150000" />
|
|
263
|
+
<shade val="98000" />
|
|
264
|
+
<lumMod val="102000" />
|
|
265
|
+
</schemeClr>
|
|
266
|
+
</gs>
|
|
267
|
+
<gs pos="50000">
|
|
268
|
+
<schemeClr val="phClr">
|
|
269
|
+
<tint val="98000" />
|
|
270
|
+
<satMod val="130000" />
|
|
271
|
+
<shade val="90000" />
|
|
272
|
+
<lumMod val="103000" />
|
|
273
|
+
</schemeClr>
|
|
274
|
+
</gs>
|
|
275
|
+
<gs pos="100000">
|
|
276
|
+
<schemeClr val="phClr">
|
|
277
|
+
<shade val="63000" />
|
|
278
|
+
<satMod val="120000" />
|
|
279
|
+
</schemeClr>
|
|
280
|
+
</gs>
|
|
281
|
+
</gsLst>
|
|
282
|
+
<lin ang="5400000" scaled="0" />
|
|
283
|
+
</gradFill>
|
|
284
|
+
</bgFillStyleLst>
|
|
285
|
+
</fmtScheme>
|
|
286
|
+
</themeElements>
|
|
287
|
+
<objectDefaults />
|
|
288
|
+
<extraClrSchemeLst />
|
|
289
|
+
<extLst>
|
|
290
|
+
<ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}">
|
|
291
|
+
<themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}" />
|
|
292
|
+
</ext>
|
|
293
|
+
</extLst>
|
|
294
|
+
</theme>
|
|
295
|
+
`;
|
|
296
|
+
|
|
297
|
+
export {generateTheme1}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const generateWorkBookXml = () =>
|
|
2
|
+
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
3
|
+
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15 xr xr6 xr10 xr2" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr6="http://schemas.microsoft.com/office/spreadsheetml/2016/revision6" xmlns:xr10="http://schemas.microsoft.com/office/spreadsheetml/2016/revision10" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2">
|
|
4
|
+
<fileVersion appName="xl" lastEdited="7" lowestEdited="7" rupBuild="25427" />
|
|
5
|
+
<workbookPr defaultThemeVersion="166925" />
|
|
6
|
+
<AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
|
|
7
|
+
<Choice Requires="x15">
|
|
8
|
+
<absPath url="D:\\projects\ o-spreadsheet\\files\\" xmlns:x15ac="http://schemas.microsoft.com/office/spreadsheetml/2010/11/ac" />
|
|
9
|
+
</Choice>
|
|
10
|
+
</AlternateContent>
|
|
11
|
+
<revisionPtr revIDLastSave="0" documentId="13_ncr:1_{0266953E-4E47-4F87-8C93-A72373D927CC}" xr6:coauthVersionLast="47" xr6:coauthVersionMax="47" xr10:uidLastSave="{00000000-0000-0000-0000-000000000000}" />
|
|
12
|
+
<bookViews>
|
|
13
|
+
<workbookView xWindow="825" yWindow="-120" windowWidth="28095" windowHeight="16440" xr2:uid="{BABDBE04-4BCD-4C42-B58D-30BEF5B5054D}" />
|
|
14
|
+
</bookViews>
|
|
15
|
+
<sheets>
|
|
16
|
+
<sheet name="Sheet1" sheetId="1" r:id="rId1" />
|
|
17
|
+
</sheets>
|
|
18
|
+
<calcPr calcId="181029" />
|
|
19
|
+
<extLst>
|
|
20
|
+
<ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">
|
|
21
|
+
<workbookPr chartTrackingRefBase="1" />
|
|
22
|
+
</ext>
|
|
23
|
+
<ext uri="{B58B0392-4F1F-4190-BB64-5DF3571DCE5F}" xmlns:xcalcf="http://schemas.microsoft.com/office/spreadsheetml/2018/calcfeatures">
|
|
24
|
+
<calcFeatures>
|
|
25
|
+
<feature name="microsoft.com:RD" />
|
|
26
|
+
<feature name="microsoft.com:FV" />
|
|
27
|
+
<feature name="microsoft.com:LET_WF" />
|
|
28
|
+
<feature name="microsoft.com:LAMBDA_WF" />
|
|
29
|
+
</calcFeatures>
|
|
30
|
+
</ext>
|
|
31
|
+
</extLst>
|
|
32
|
+
</workbook>
|
|
33
|
+
`
|
|
34
|
+
|
|
35
|
+
export {generateWorkBookXml}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
interface ICellEntry {
|
|
2
|
+
readonly?: boolean;
|
|
3
|
+
value: number | string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
// 1->a, 2->b, 26->z, 27->aa
|
|
7
|
+
const index = (value: number) => {
|
|
8
|
+
const base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
|
|
9
|
+
value++;
|
|
10
|
+
let result = "";
|
|
11
|
+
do {
|
|
12
|
+
const remainder = value % 26;
|
|
13
|
+
result = base[(remainder || 26) - 1] + result;
|
|
14
|
+
value = Math.floor(value / 26);
|
|
15
|
+
} while (value > 0);
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const row = (row: number, cellValues: ICellEntry[]) =>
|
|
20
|
+
`<row r="${row}" spans="1:${cellValues.length}">${cellValues
|
|
21
|
+
.map((item: ICellEntry, i: number) => cell(index(i) + row, item))
|
|
22
|
+
.join("")}</row>\n`;
|
|
23
|
+
|
|
24
|
+
const cell = (row: string, value: ICellEntry) =>
|
|
25
|
+
` <c r="${row}">${cellValue(value)}</c>\n`;
|
|
26
|
+
|
|
27
|
+
const cellValue = (value: ICellEntry) => `<v>${value.value}</v>`;
|
|
28
|
+
|
|
29
|
+
const generateSheetData = (grid: ICellEntry[][]) =>
|
|
30
|
+
`<sheetData>${grid
|
|
31
|
+
.map((ro: ICellEntry[], index: number) => row(index, ro))
|
|
32
|
+
.join("")}</sheetData>`;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
const generateSheet1Xml = (
|
|
38
|
+
grid: ICellEntry[][]
|
|
39
|
+
) => `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
40
|
+
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{6A0CD924-A203-41BB-8331-42E46B7D5F20}">
|
|
41
|
+
<dimension ref="B3:I7" />
|
|
42
|
+
<sheetViews>
|
|
43
|
+
<sheetView tabSelected="1" workbookViewId="0">
|
|
44
|
+
<selection activeCell="B3" sqref="B3:D4" />
|
|
45
|
+
</sheetView>
|
|
46
|
+
</sheetViews>
|
|
47
|
+
<sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25" />
|
|
48
|
+
${generateSheetData(grid)}
|
|
49
|
+
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />
|
|
50
|
+
</worksheet>
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
export { ICellEntry, generateSheet1Xml };
|