1use serde::{Deserialize, Serialize};
6
7use super::common::XlsxInnerXml;
8
9#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(rename = "table")]
13pub struct XlsxTable {
14 #[serde(rename = "@xmlns", default)]
15 pub xmlns: Option<String>,
16 #[serde(rename = "@id")]
17 pub id: i64,
18 #[serde(rename = "@name")]
19 pub name: String,
20 #[serde(rename = "@displayName", default)]
21 pub display_name: Option<String>,
22 #[serde(rename = "@comment", default)]
23 pub comment: Option<String>,
24 #[serde(rename = "@ref")]
25 pub r#ref: String,
26 #[serde(rename = "@tableType", default)]
27 pub table_type: Option<String>,
28 #[serde(rename = "@headerRowCount", default)]
29 pub header_row_count: Option<i64>,
30 #[serde(rename = "@insertRow", default)]
31 pub insert_row: bool,
32 #[serde(rename = "@insertRowShift", default)]
33 pub insert_row_shift: bool,
34 #[serde(rename = "@totalsRowCount", default)]
35 pub totals_row_count: i64,
36 #[serde(rename = "@totalsRowShown", default)]
37 pub totals_row_shown: Option<bool>,
38 #[serde(rename = "@published", default)]
39 pub published: bool,
40 #[serde(rename = "@headerRowDxfId", default)]
41 pub header_row_dxf_id: i64,
42 #[serde(rename = "@dataDxfId", default)]
43 pub data_dxf_id: i64,
44 #[serde(rename = "@totalsRowDxfId", default)]
45 pub totals_row_dxf_id: i64,
46 #[serde(rename = "@headerRowBorderDxfId", default)]
47 pub header_row_border_dxf_id: i64,
48 #[serde(rename = "@tableBorderDxfId", default)]
49 pub table_border_dxf_id: i64,
50 #[serde(rename = "@totalsRowBorderDxfId", default)]
51 pub totals_row_border_dxf_id: i64,
52 #[serde(rename = "@headerRowCellStyle", default)]
53 pub header_row_cell_style: Option<String>,
54 #[serde(rename = "@dataCellStyle", default)]
55 pub data_cell_style: Option<String>,
56 #[serde(rename = "@totalsRowCellStyle", default)]
57 pub totals_row_cell_style: Option<String>,
58 #[serde(rename = "@connectionId", default)]
59 pub connection_id: i64,
60 #[serde(rename = "autoFilter", default)]
61 pub auto_filter: Option<XlsxAutoFilter>,
62 #[serde(rename = "tableColumns", default)]
63 pub table_columns: Option<XlsxTableColumns>,
64 #[serde(rename = "tableStyleInfo", default)]
65 pub table_style_info: Option<XlsxTableStyleInfo>,
66}
67
68#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
71#[serde(rename = "autoFilter")]
72pub struct XlsxAutoFilter {
73 #[serde(rename = "@ref")]
74 pub r#ref: String,
75 #[serde(rename = "filterColumn", default)]
76 pub filter_column: Vec<XlsxFilterColumn>,
77}
78
79#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
82#[serde(rename = "filterColumn")]
83pub struct XlsxFilterColumn {
84 #[serde(rename = "@colId")]
85 pub col_id: i64,
86 #[serde(rename = "@hiddenButton", default)]
87 pub hidden_button: bool,
88 #[serde(rename = "@showButton", default)]
89 pub show_button: bool,
90 #[serde(rename = "customFilters", default)]
91 pub custom_filters: Option<XlsxCustomFilters>,
92 #[serde(rename = "filters", default)]
93 pub filters: Option<XlsxFilters>,
94 #[serde(rename = "colorFilter", default)]
95 pub color_filter: Option<XlsxColorFilter>,
96 #[serde(rename = "dynamicFilter", default)]
97 pub dynamic_filter: Option<XlsxDynamicFilter>,
98 #[serde(rename = "iconFilter", default)]
99 pub icon_filter: Option<XlsxIconFilter>,
100 #[serde(rename = "top10", default)]
101 pub top10: Option<XlsxTop10>,
102}
103
104#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
107#[serde(rename = "customFilters")]
108pub struct XlsxCustomFilters {
109 #[serde(rename = "@and", default)]
110 pub and: bool,
111 #[serde(rename = "customFilter", default)]
112 pub custom_filter: Vec<XlsxCustomFilter>,
113}
114
115#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
117#[serde(rename = "customFilter")]
118pub struct XlsxCustomFilter {
119 #[serde(rename = "@operator", default)]
120 pub operator: Option<String>,
121 #[serde(rename = "@val", default)]
122 pub val: Option<String>,
123}
124
125#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
128#[serde(rename = "filters")]
129pub struct XlsxFilters {
130 #[serde(rename = "@blank", default)]
131 pub blank: bool,
132 #[serde(rename = "@calendarType", default)]
133 pub calendar_type: Option<String>,
134 #[serde(rename = "filter", default)]
135 pub filter: Vec<XlsxFilter>,
136 #[serde(rename = "dateGroupItem", default)]
137 pub date_group_item: Vec<XlsxDateGroupItem>,
138}
139
140#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
142#[serde(rename = "filter")]
143pub struct XlsxFilter {
144 #[serde(rename = "@val", default)]
145 pub val: Option<String>,
146}
147
148#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
151#[serde(rename = "colorFilter")]
152pub struct XlsxColorFilter {
153 #[serde(rename = "@cellColor")]
154 pub cell_color: bool,
155 #[serde(rename = "@dxfId")]
156 pub dxf_id: i64,
157}
158
159#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
162#[serde(rename = "dynamicFilter")]
163pub struct XlsxDynamicFilter {
164 #[serde(rename = "@maxValIso", default)]
165 pub max_val_iso: Option<String>,
166 #[serde(rename = "@type", default)]
167 pub r#type: Option<String>,
168 #[serde(rename = "@val", default)]
169 pub val: Option<f64>,
170 #[serde(rename = "@valIso", default)]
171 pub val_iso: Option<String>,
172}
173
174#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
176#[serde(rename = "iconFilter")]
177pub struct XlsxIconFilter {
178 #[serde(rename = "@iconId")]
179 pub icon_id: i64,
180 #[serde(rename = "@iconSet", default)]
181 pub icon_set: Option<String>,
182}
183
184#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
186#[serde(rename = "top10")]
187pub struct XlsxTop10 {
188 #[serde(rename = "@filterVal", default)]
189 pub filter_val: Option<f64>,
190 #[serde(rename = "@percent", default)]
191 pub percent: bool,
192 #[serde(rename = "@top")]
193 pub top: bool,
194 #[serde(rename = "@val", default)]
195 pub val: Option<f64>,
196}
197
198#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
200#[serde(rename = "dateGroupItem")]
201pub struct XlsxDateGroupItem {
202 #[serde(rename = "@dateTimeGrouping", default)]
203 pub date_time_grouping: Option<String>,
204 #[serde(rename = "@day", default)]
205 pub day: i64,
206 #[serde(rename = "@hour", default)]
207 pub hour: i64,
208 #[serde(rename = "@minute", default)]
209 pub minute: i64,
210 #[serde(rename = "@month", default)]
211 pub month: i64,
212 #[serde(rename = "@second", default)]
213 pub second: i64,
214 #[serde(rename = "@year", default)]
215 pub year: i64,
216}
217
218#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
220#[serde(rename = "tableColumns")]
221pub struct XlsxTableColumns {
222 #[serde(rename = "@count")]
223 pub count: i64,
224 #[serde(rename = "tableColumn", default)]
225 pub table_column: Vec<XlsxTableColumn>,
226}
227
228#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
230#[serde(rename = "tableColumn")]
231pub struct XlsxTableColumn {
232 #[serde(rename = "@id")]
233 pub id: i64,
234 #[serde(rename = "@uniqueName", default)]
235 pub unique_name: Option<String>,
236 #[serde(rename = "@name")]
237 pub name: String,
238 #[serde(rename = "@totalsRowFunction", default)]
239 pub totals_row_function: Option<String>,
240 #[serde(rename = "@totalsRowLabel", default)]
241 pub totals_row_label: Option<String>,
242 #[serde(rename = "@queryTableFieldId", default)]
243 pub query_table_field_id: i64,
244 #[serde(rename = "@headerRowDxfId", default)]
245 pub header_row_dxf_id: i64,
246 #[serde(rename = "@dataDxfId", default)]
247 pub data_dxf_id: i64,
248 #[serde(rename = "@totalsRowDxfId", default)]
249 pub totals_row_dxf_id: i64,
250 #[serde(rename = "@headerRowCellStyle", default)]
251 pub header_row_cell_style: Option<String>,
252 #[serde(rename = "@dataCellStyle", default)]
253 pub data_cell_style: Option<String>,
254 #[serde(rename = "@totalsRowCellStyle", default)]
255 pub totals_row_cell_style: Option<String>,
256}
257
258#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
261#[serde(rename = "tableStyleInfo")]
262pub struct XlsxTableStyleInfo {
263 #[serde(rename = "@name", default)]
264 pub name: Option<String>,
265 #[serde(rename = "@showFirstColumn")]
266 pub show_first_column: bool,
267 #[serde(rename = "@showLastColumn")]
268 pub show_last_column: bool,
269 #[serde(rename = "@showRowStripes")]
270 pub show_row_stripes: bool,
271 #[serde(rename = "@showColumnStripes")]
272 pub show_column_stripes: bool,
273}
274
275#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
277#[serde(rename = "singleXmlCells")]
278pub struct XlsxSingleXmlCells {
279 #[serde(rename = "singleXmlCell", default)]
280 pub single_xml_cell: Vec<XlsxSingleXmlCell>,
281}
282
283#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
285#[serde(rename = "singleXmlCell")]
286pub struct XlsxSingleXmlCell {
287 #[serde(rename = "@id")]
288 pub id: i64,
289 #[serde(rename = "@r")]
290 pub r: String,
291 #[serde(rename = "@connectionId")]
292 pub connection_id: i64,
293 #[serde(rename = "xmlCellPr")]
294 pub xml_cell_pr: XlsxXmlCellPr,
295 #[serde(rename = "extLst", default)]
296 pub ext_lst: Option<XlsxInnerXml>,
297}
298
299#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
301#[serde(rename = "xmlCellPr")]
302pub struct XlsxXmlCellPr {
303 #[serde(rename = "@id")]
304 pub id: i64,
305 #[serde(rename = "@uniqueName", default)]
306 pub unique_name: Option<String>,
307 #[serde(rename = "xmlPr", default)]
308 pub xml_pr: Option<XlsxInnerXml>,
309 #[serde(rename = "extLst", default)]
310 pub ext_lst: Option<XlsxInnerXml>,
311}
312
313#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
315pub struct Table {
316 pub t_id: i64,
317 pub r_id: String,
318 pub table_xml: String,
319 pub range: String,
320 pub name: String,
321 pub style_name: String,
322 pub show_column_stripes: bool,
323 pub show_first_column: bool,
324 pub show_header_row: Option<bool>,
325 pub show_last_column: bool,
326 pub show_row_stripes: Option<bool>,
327}
328
329#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
331pub struct AutoFilterOptions {
332 pub column: String,
333 pub expression: String,
334}