use super::builder::*;
pub fn basic_types() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" t="str"><v>日本語Text</v></c>
<c r="B1"><v>42</v></c>
<c r="C1"><v>19.99</v></c>
<c r="D1" s="1"><v>45000</v></c>
<c r="E1" t="b"><v>1</v></c>
<c r="F1" t="b"><v>0</v></c>
<c r="G1" t="e"><v>#N/A</v></c>
</row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DATE_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn wrap_text_styles() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" s="0"><v>1</v></c>
<c r="B1" s="1"><v>2</v></c>
</row>"#;
let styles = br#"<styleSheet><cellXfs>
<xf numFmtId="0"><alignment wrapText="1"/></xf>
<xf numFmtId="0"/>
</cellXfs></styleSheet>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", styles),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn font_styles() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" s="0"><v>1</v></c>
<c r="B1" s="1"><v>2</v></c>
</row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", FONT_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn alignment_styles() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" s="0"><v>1</v></c>
<c r="B1" s="1"><v>2</v></c>
</row>"#;
let styles = br#"<styleSheet><cellXfs>
<xf numFmtId="0"><alignment horizontal="center"/></xf>
<xf numFmtId="0"/>
</cellXfs></styleSheet>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", styles),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn number_format_styles() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" s="0"><v>0.5</v></c>
<c r="B1" s="1"><v>1234.5</v></c>
</row>"#;
let styles = r##"<styleSheet>
<numFmts><numFmt numFmtId="164" formatCode="#,##0.00 "円""/></numFmts>
<cellXfs>
<xf numFmtId="9"/>
<xf numFmtId="164"/>
</cellXfs>
</styleSheet>"##;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", styles.as_bytes()),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn column_widths() -> Vec<u8> {
let worksheet = r#"<worksheet>
<sheetFormatPr defaultColWidth="9.1" defaultRowHeight="15"/>
<cols>
<col min="1" max="3" width="12.5" customWidth="1"/>
<col min="5" max="5" width="30"/>
</cols>
<sheetData>
<row r="1">
<c r="A1"><v>1</v></c>
<c r="E1"><v>2</v></c>
</row>
</sheetData>
</worksheet>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
("xl/worksheets/sheet1.xml", worksheet.as_bytes()),
])
}
pub fn date1904_styles() -> Vec<u8> {
let workbook_xml = br#"<?xml version="1.0"?>
<workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<workbookPr date1904="1"/>
<sheets>
<sheet name="Sheet1" sheetId="1" r:id="rId1"/>
</sheets>
</workbook>"#;
let rows = r#"<row r="1">
<c r="A1" s="1"><v>1</v></c>
</row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
("xl/workbook.xml", workbook_xml),
("xl/styles.xml", DATE_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn shared_strings() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" t="s"><v>0</v></c>
<c r="B1" t="s"><v>1</v></c>
<c r="C1" t="s"><v>0</v></c>
</row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
("rId3", "sharedStrings", "sharedStrings.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
(
"xl/sharedStrings.xml",
shared_strings_xml(&["Apple", "Banana"]).as_bytes(),
),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}
pub fn inline_strings() -> Vec<u8> {
let rows = r#"<row r="1">
<c r="A1" t="inlineStr"><is><t>Inline One</t></is></c>
<c r="B1" t="inlineStr"><is><t>Inline Two</t></is></c>
</row>"#;
build_zip(&[
(
"xl/_rels/workbook.xml.rels",
rels_xml(&[
("rId1", "worksheet", "worksheets/sheet1.xml"),
("rId2", "styles", "styles.xml"),
])
.as_bytes(),
),
(
"xl/workbook.xml",
workbook_xml(&[("Sheet1", "rId1", None)]).as_bytes(),
),
("xl/styles.xml", DEFAULT_STYLES_XML),
(
"xl/worksheets/sheet1.xml",
worksheet_xml(rows, "").as_bytes(),
),
])
}