2
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
3
xmlns:o="urn:schemas-microsoft-com:office:office"
4
xmlns:x="urn:schemas-microsoft-com:office:excel"
5
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
6
xmlns:html="http://www.w3.org/TR/REC-html40">
7
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
8
<Title>${title}</Title>
12
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
15
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
16
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
17
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
18
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
21
<Style ss:ID="ssBorder">
22
<NumberFormat ss:Format="Standard"/>
23
<Alignment ss:Vertical="Center" ss:WrapText="1"/>
25
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
26
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
27
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
28
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
31
<Style ss:ID="sShortDate">
32
<NumberFormat ss:Format="Short Date"/>
33
<Alignment ss:Vertical="Center" ss:WrapText="1"/>
35
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
36
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
37
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
38
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
42
<NumberFormat ss:Format="General Date"/>
43
<Alignment ss:Vertical="Center" ss:WrapText="1"/>
45
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
46
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
47
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
48
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
52
<Worksheet ss:Name="Sheet">
53
<Table ss:ExpandedColumnCount="${len(fields)}" ss:ExpandedRowCount="${len(result)+1}" x:FullColumns="1"
56
<Column ss:AutoFitWidth="1" ss:Width="70" />
59
% for header in fields:
60
<Cell ss:StyleID="ssH"><Data ss:Type="String">${header}</Data></Cell>
67
% if d in ('True', 'False'):
68
<Cell ss:StyleID="ssBorder">
69
<Data ss:Type="Boolean">${d=='True' and '1' or '0'}</Data>
70
% elif d and re.match('^[0-9]{4}-[0-9]{2}-[0-9]{2}$', d):
71
<Cell ss:StyleID="sShortDate">
72
<Data ss:Type="DateTime">${d}T00:00:00.000</Data>
73
% elif d and re.match('^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$', d):
74
<Cell ss:StyleID="sDate">
75
<Data ss:Type="DateTime">${d.replace(' ','T')}.000</Data>
76
% elif d and re.match('^-?[0-9]+\.?[0-9]*$', d):
77
<Cell ss:StyleID="ssBorder">
78
<Data ss:Type="Number">${d}</Data>
80
<Cell ss:StyleID="ssBorder">
81
<Data ss:Type="String">${d or ''}</Data>
88
<AutoFilter x:Range="R1C1:R1C${len(fields)}" xmlns="urn:schemas-microsoft-com:office:excel">