-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWorkbook.ts
More file actions
66 lines (59 loc) · 2.43 KB
/
Workbook.ts
File metadata and controls
66 lines (59 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
export const Workbook: OpenXmlIo.ReadWrite<OpenXml.Workbook> = {
read(xmlDoc, elem) {
xmlDoc.validator.expectNode(elem, "workbook", "root element of SpreadsheetML Workbook part");
var sheetsElem = xmlDoc.queryOneChild(elem, "sheets");
return {
sheets: Sheets.read(xmlDoc, sheetsElem),
bookViews: xmlDoc.queryOneChild(elem, "bookViews", false),
calcPr: xmlDoc.queryOneChild(elem, "calcPr", false),
fileVersion: xmlDoc.queryOneChild(elem, "fileVersion", false),
workbookPr: xmlDoc.queryOneChild(elem, "workbookPr", false),
extLst: xmlDoc.queryOneChild(elem, "extLst", false),
};
},
write(xmlDoc, inst) {
var elem = xmlDoc.dom.createElement("workbook");
if (inst.fileVersion) { elem.appendChild(<Element>inst.fileVersion); }
if (inst.workbookPr) { elem.appendChild(<Element>inst.workbookPr); }
if (inst.bookViews) { elem.appendChild(<Element>inst.bookViews); }
elem.appendChild(Sheets.write(xmlDoc, inst.sheets));
if (inst.calcPr) { elem.appendChild(<Element>inst.calcPr); }
if (inst.extLst) { elem.appendChild(<Element>inst.extLst); }
return elem;
}
};
export const Sheet: OpenXmlIo.ReadWrite<OpenXml.Sheet> = {
read(xmlDoc, elem) {
xmlDoc.validator.expectNode(elem, "sheet", "sheets");
return {
id: xmlDoc.attrString(elem, "r:id") ?? "",
name: xmlDoc.attrString(elem, "name") ?? "",
sheetId: xmlDoc.attrInt(elem, "sheetId") ?? 0,
state: <OpenXml.ST_SheetState | null>xmlDoc.attrString(elem, "state"),
};
},
write(xmlDoc, inst) {
var elem = xmlDoc.domBldr.create("sheet")
.attrString("r:id", inst.id)
.attrString("name", inst.name)
.attrInt("sheetId", inst.sheetId)
.attrString("state", inst.state, true)
.element;
return elem;
}
};
export const Sheets: OpenXmlIo.ReadWrite<OpenXml.Sheets> = {
read(xmlDoc, elem) {
xmlDoc.validator.expectNode(elem, "sheets", "workbook");
var sheetElems = xmlDoc.queryAllChilds(elem, "sheet");
return {
sheets: xmlDoc.readMulti(Sheet.read, sheetElems),
};
},
write(xmlDoc, inst) {
var elem = xmlDoc.dom.createElement("sheets");
xmlDoc.addChilds(elem, xmlDoc.writeMulti(Sheet.write, inst.sheets));
return elem;
}
};