1use serde::{Deserialize, Serialize};
6
7use super::common::{XlsxColor, XlsxExtLst, XlsxInnerXml, XlsxPhoneticPr};
8use super::shared_strings::XlsxSi;
9use super::table::XlsxAutoFilter;
10use super::workbook::XlsxAlternateContent;
11
12fn is_false(v: &Option<bool>) -> bool {
15 !v.unwrap_or(false)
16}
17
18#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
20#[serde(rename = "worksheet")]
21pub struct XlsxWorksheet {
22 #[serde(rename = "sheetPr", default, skip_serializing_if = "Option::is_none")]
23 pub sheet_pr: Option<XlsxSheetPr>,
24 #[serde(rename = "dimension", default, skip_serializing_if = "Option::is_none")]
25 pub dimension: Option<XlsxDimension>,
26 #[serde(
27 rename = "sheetViews",
28 default,
29 skip_serializing_if = "Option::is_none"
30 )]
31 pub sheet_views: Option<XlsxSheetViews>,
32 #[serde(
33 rename = "sheetFormatPr",
34 default,
35 skip_serializing_if = "Option::is_none"
36 )]
37 pub sheet_format_pr: Option<XlsxSheetFormatPr>,
38 #[serde(rename = "cols", default, skip_serializing_if = "Option::is_none")]
39 pub cols: Option<XlsxCols>,
40 #[serde(rename = "sheetData", default)]
41 pub sheet_data: XlsxSheetData,
42 #[serde(
43 rename = "sheetCalcPr",
44 default,
45 skip_serializing_if = "Option::is_none"
46 )]
47 pub sheet_calc_pr: Option<XlsxInnerXml>,
48 #[serde(
49 rename = "sheetProtection",
50 default,
51 skip_serializing_if = "Option::is_none"
52 )]
53 pub sheet_protection: Option<XlsxSheetProtection>,
54 #[serde(
55 rename = "protectedRanges",
56 default,
57 skip_serializing_if = "Option::is_none"
58 )]
59 pub protected_ranges: Option<XlsxInnerXml>,
60 #[serde(rename = "scenarios", default, skip_serializing_if = "Option::is_none")]
61 pub scenarios: Option<XlsxInnerXml>,
62 #[serde(
63 rename = "autoFilter",
64 default,
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub auto_filter: Option<XlsxAutoFilter>,
68 #[serde(rename = "sortState", default, skip_serializing_if = "Option::is_none")]
69 pub sort_state: Option<XlsxSortState>,
70 #[serde(
71 rename = "dataConsolidate",
72 default,
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub data_consolidate: Option<XlsxInnerXml>,
76 #[serde(
77 rename = "customSheetViews",
78 default,
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub custom_sheet_views: Option<XlsxCustomSheetViews>,
82 #[serde(
83 rename = "mergeCells",
84 default,
85 skip_serializing_if = "Option::is_none"
86 )]
87 pub merge_cells: Option<XlsxMergeCells>,
88 #[serde(
89 rename = "phoneticPr",
90 default,
91 skip_serializing_if = "Option::is_none"
92 )]
93 pub phonetic_pr: Option<XlsxPhoneticPr>,
94 #[serde(rename = "conditionalFormatting", default)]
95 pub conditional_formatting: Vec<XlsxConditionalFormatting>,
96 #[serde(
97 rename = "dataValidations",
98 default,
99 skip_serializing_if = "Option::is_none"
100 )]
101 pub data_validations: Option<XlsxDataValidations>,
102 #[serde(
103 rename = "hyperlinks",
104 default,
105 skip_serializing_if = "Option::is_none"
106 )]
107 pub hyperlinks: Option<XlsxHyperlinks>,
108 #[serde(
109 rename = "printOptions",
110 default,
111 skip_serializing_if = "Option::is_none"
112 )]
113 pub print_options: Option<XlsxPrintOptions>,
114 #[serde(
115 rename = "pageMargins",
116 default,
117 skip_serializing_if = "Option::is_none"
118 )]
119 pub page_margins: Option<XlsxPageMargins>,
120 #[serde(rename = "pageSetup", default, skip_serializing_if = "Option::is_none")]
121 pub page_setup: Option<XlsxPageSetUp>,
122 #[serde(
123 rename = "headerFooter",
124 default,
125 skip_serializing_if = "Option::is_none"
126 )]
127 pub header_footer: Option<XlsxHeaderFooter>,
128 #[serde(rename = "rowBreaks", default, skip_serializing_if = "Option::is_none")]
129 pub row_breaks: Option<XlsxRowBreaks>,
130 #[serde(rename = "colBreaks", default, skip_serializing_if = "Option::is_none")]
131 pub col_breaks: Option<XlsxColBreaks>,
132 #[serde(
133 rename = "customProperties",
134 default,
135 skip_serializing_if = "Option::is_none"
136 )]
137 pub custom_properties: Option<XlsxInnerXml>,
138 #[serde(
139 rename = "cellWatches",
140 default,
141 skip_serializing_if = "Option::is_none"
142 )]
143 pub cell_watches: Option<XlsxInnerXml>,
144 #[serde(
145 rename = "ignoredErrors",
146 default,
147 skip_serializing_if = "Option::is_none"
148 )]
149 pub ignored_errors: Option<XlsxIgnoredErrors>,
150 #[serde(rename = "smartTags", default, skip_serializing_if = "Option::is_none")]
151 pub smart_tags: Option<XlsxInnerXml>,
152 #[serde(rename = "drawing", default, skip_serializing_if = "Option::is_none")]
153 pub drawing: Option<XlsxDrawing>,
154 #[serde(
155 rename = "legacyDrawing",
156 default,
157 skip_serializing_if = "Option::is_none"
158 )]
159 pub legacy_drawing: Option<XlsxLegacyDrawing>,
160 #[serde(
161 rename = "legacyDrawingHF",
162 default,
163 skip_serializing_if = "Option::is_none"
164 )]
165 pub legacy_drawing_hf: Option<XlsxLegacyDrawingHF>,
166 #[serde(rename = "drawingHF", default, skip_serializing_if = "Option::is_none")]
167 pub drawing_hf: Option<XlsxDrawingHF>,
168 #[serde(rename = "picture", default, skip_serializing_if = "Option::is_none")]
169 pub picture: Option<XlsxPicture>,
170 #[serde(
171 rename = "oleObjects",
172 default,
173 skip_serializing_if = "Option::is_none"
174 )]
175 pub ole_objects: Option<XlsxInnerXml>,
176 #[serde(rename = "controls", default, skip_serializing_if = "Option::is_none")]
177 pub controls: Option<XlsxInnerXml>,
178 #[serde(
179 rename = "webPublishItems",
180 default,
181 skip_serializing_if = "Option::is_none"
182 )]
183 pub web_publish_items: Option<XlsxInnerXml>,
184 #[serde(
185 rename = "mc:AlternateContent",
186 default,
187 skip_serializing_if = "Option::is_none"
188 )]
189 pub alternate_content: Option<XlsxAlternateContent>,
190 #[serde(
191 rename = "tableParts",
192 default,
193 skip_serializing_if = "Option::is_none"
194 )]
195 pub table_parts: Option<XlsxTableParts>,
196 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
197 pub ext_lst: Option<XlsxExtLst>,
198 #[serde(
199 rename = "http://schemas.openxmlformats.org/markup-compatibility/2006 AlternateContent",
200 default,
201 skip_serializing
202 )]
203 pub decode_alternate_content: Option<XlsxInnerXml>,
204}
205
206#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
208#[serde(rename = "drawing")]
209pub struct XlsxDrawing {
210 #[serde(
211 rename = "@r:id",
212 alias = "@id",
213 default,
214 skip_serializing_if = "Option::is_none"
215 )]
216 pub rid: Option<String>,
217}
218
219#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
221#[serde(rename = "headerFooter")]
222pub struct XlsxHeaderFooter {
223 #[serde(
224 rename = "@differentOddEven",
225 default,
226 skip_serializing_if = "Option::is_none"
227 )]
228 pub different_odd_even: Option<bool>,
229 #[serde(
230 rename = "@differentFirst",
231 default,
232 skip_serializing_if = "Option::is_none"
233 )]
234 pub different_first: Option<bool>,
235 #[serde(
236 rename = "@scaleWithDoc",
237 default,
238 skip_serializing_if = "Option::is_none"
239 )]
240 pub scale_with_doc: Option<bool>,
241 #[serde(
242 rename = "@alignWithMargins",
243 default,
244 skip_serializing_if = "Option::is_none"
245 )]
246 pub align_with_margins: Option<bool>,
247 #[serde(rename = "oddHeader", default, skip_serializing_if = "Option::is_none")]
248 pub odd_header: Option<String>,
249 #[serde(rename = "oddFooter", default, skip_serializing_if = "Option::is_none")]
250 pub odd_footer: Option<String>,
251 #[serde(
252 rename = "evenHeader",
253 default,
254 skip_serializing_if = "Option::is_none"
255 )]
256 pub even_header: Option<String>,
257 #[serde(
258 rename = "evenFooter",
259 default,
260 skip_serializing_if = "Option::is_none"
261 )]
262 pub even_footer: Option<String>,
263 #[serde(
264 rename = "firstHeader",
265 default,
266 skip_serializing_if = "Option::is_none"
267 )]
268 pub first_header: Option<String>,
269 #[serde(
270 rename = "firstFooter",
271 default,
272 skip_serializing_if = "Option::is_none"
273 )]
274 pub first_footer: Option<String>,
275}
276
277#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
279pub struct XlsxDrawingHF {
280 #[serde(rename = "$value", default)]
281 pub content: String,
282}
283
284#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
286#[serde(rename = "pageSetup")]
287pub struct XlsxPageSetUp {
288 #[serde(
289 rename = "@blackAndWhite",
290 default,
291 skip_serializing_if = "Option::is_none"
292 )]
293 pub black_and_white: Option<bool>,
294 #[serde(
295 rename = "@cellComments",
296 default,
297 skip_serializing_if = "Option::is_none"
298 )]
299 pub cell_comments: Option<String>,
300 #[serde(rename = "@copies", default, skip_serializing_if = "Option::is_none")]
301 pub copies: Option<i64>,
302 #[serde(rename = "@draft", default, skip_serializing_if = "Option::is_none")]
303 pub draft: Option<bool>,
304 #[serde(rename = "@errors", default, skip_serializing_if = "Option::is_none")]
305 pub errors: Option<String>,
306 #[serde(
307 rename = "@firstPageNumber",
308 default,
309 skip_serializing_if = "Option::is_none"
310 )]
311 pub first_page_number: Option<String>,
312 #[serde(
313 rename = "@fitToHeight",
314 default,
315 skip_serializing_if = "Option::is_none"
316 )]
317 pub fit_to_height: Option<i64>,
318 #[serde(
319 rename = "@fitToWidth",
320 default,
321 skip_serializing_if = "Option::is_none"
322 )]
323 pub fit_to_width: Option<i64>,
324 #[serde(
325 rename = "@horizontalDpi",
326 default,
327 skip_serializing_if = "Option::is_none"
328 )]
329 pub horizontal_dpi: Option<String>,
330 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
331 pub rid: Option<String>,
332 #[serde(
333 rename = "@orientation",
334 default,
335 skip_serializing_if = "Option::is_none"
336 )]
337 pub orientation: Option<String>,
338 #[serde(
339 rename = "@pageOrder",
340 default,
341 skip_serializing_if = "Option::is_none"
342 )]
343 pub page_order: Option<String>,
344 #[serde(
345 rename = "@paperHeight",
346 default,
347 skip_serializing_if = "Option::is_none"
348 )]
349 pub paper_height: Option<String>,
350 #[serde(
351 rename = "@paperSize",
352 default,
353 skip_serializing_if = "Option::is_none"
354 )]
355 pub paper_size: Option<i64>,
356 #[serde(
357 rename = "@paperWidth",
358 default,
359 skip_serializing_if = "Option::is_none"
360 )]
361 pub paper_width: Option<String>,
362 #[serde(rename = "@scale", default, skip_serializing_if = "Option::is_none")]
363 pub scale: Option<i64>,
364 #[serde(
365 rename = "@useFirstPageNumber",
366 default,
367 skip_serializing_if = "Option::is_none"
368 )]
369 pub use_first_page_number: Option<bool>,
370 #[serde(
371 rename = "@usePrinterDefaults",
372 default,
373 skip_serializing_if = "Option::is_none"
374 )]
375 pub use_printer_defaults: Option<bool>,
376 #[serde(
377 rename = "@verticalDpi",
378 default,
379 skip_serializing_if = "Option::is_none"
380 )]
381 pub vertical_dpi: Option<String>,
382}
383
384#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
386#[serde(rename = "printOptions")]
387pub struct XlsxPrintOptions {
388 #[serde(
389 rename = "@gridLines",
390 default,
391 skip_serializing_if = "Option::is_none"
392 )]
393 pub grid_lines: Option<bool>,
394 #[serde(
395 rename = "@gridLinesSet",
396 default,
397 skip_serializing_if = "Option::is_none"
398 )]
399 pub grid_lines_set: Option<bool>,
400 #[serde(rename = "@headings", default, skip_serializing_if = "Option::is_none")]
401 pub headings: Option<bool>,
402 #[serde(
403 rename = "@horizontalCentered",
404 default,
405 skip_serializing_if = "Option::is_none"
406 )]
407 pub horizontal_centered: Option<bool>,
408 #[serde(
409 rename = "@verticalCentered",
410 default,
411 skip_serializing_if = "Option::is_none"
412 )]
413 pub vertical_centered: Option<bool>,
414}
415
416#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
418#[serde(rename = "pageMargins")]
419pub struct XlsxPageMargins {
420 #[serde(rename = "@left")]
421 pub left: f64,
422 #[serde(rename = "@right")]
423 pub right: f64,
424 #[serde(rename = "@top")]
425 pub top: f64,
426 #[serde(rename = "@bottom")]
427 pub bottom: f64,
428 #[serde(rename = "@header")]
429 pub header: f64,
430 #[serde(rename = "@footer")]
431 pub footer: f64,
432}
433
434#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
436#[serde(rename = "sheetFormatPr")]
437pub struct XlsxSheetFormatPr {
438 #[serde(
439 rename = "@baseColWidth",
440 default,
441 skip_serializing_if = "Option::is_none"
442 )]
443 pub base_col_width: Option<u8>,
444 #[serde(
445 rename = "@defaultColWidth",
446 default,
447 skip_serializing_if = "Option::is_none"
448 )]
449 pub default_col_width: Option<f64>,
450 #[serde(rename = "@defaultRowHeight")]
451 pub default_row_height: f64,
452 #[serde(
453 rename = "@customHeight",
454 default,
455 skip_serializing_if = "Option::is_none"
456 )]
457 pub custom_height: Option<bool>,
458 #[serde(
459 rename = "@zeroHeight",
460 default,
461 skip_serializing_if = "Option::is_none"
462 )]
463 pub zero_height: Option<bool>,
464 #[serde(rename = "@thickTop", default, skip_serializing_if = "Option::is_none")]
465 pub thick_top: Option<bool>,
466 #[serde(
467 rename = "@thickBottom",
468 default,
469 skip_serializing_if = "Option::is_none"
470 )]
471 pub thick_bottom: Option<bool>,
472 #[serde(
473 rename = "@outlineLevelRow",
474 default,
475 skip_serializing_if = "Option::is_none"
476 )]
477 pub outline_level_row: Option<u8>,
478 #[serde(
479 rename = "@outlineLevelCol",
480 default,
481 skip_serializing_if = "Option::is_none"
482 )]
483 pub outline_level_col: Option<u8>,
484}
485
486#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
488#[serde(rename = "sheetViews")]
489pub struct XlsxSheetViews {
490 #[serde(rename = "sheetView", default)]
491 pub sheet_view: Vec<XlsxSheetView>,
492}
493
494#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
496#[serde(rename = "sheetView")]
497pub struct XlsxSheetView {
498 #[serde(
499 rename = "@windowProtection",
500 default,
501 skip_serializing_if = "Option::is_none"
502 )]
503 pub window_protection: Option<bool>,
504 #[serde(
505 rename = "@showFormulas",
506 default,
507 skip_serializing_if = "Option::is_none"
508 )]
509 pub show_formulas: Option<bool>,
510 #[serde(
511 rename = "@showGridLines",
512 default,
513 skip_serializing_if = "Option::is_none"
514 )]
515 pub show_grid_lines: Option<bool>,
516 #[serde(
517 rename = "@showRowColHeaders",
518 default,
519 skip_serializing_if = "Option::is_none"
520 )]
521 pub show_row_col_headers: Option<bool>,
522 #[serde(
523 rename = "@showZeros",
524 default,
525 skip_serializing_if = "Option::is_none"
526 )]
527 pub show_zeros: Option<bool>,
528 #[serde(
529 rename = "@rightToLeft",
530 default,
531 skip_serializing_if = "Option::is_none"
532 )]
533 pub right_to_left: Option<bool>,
534 #[serde(
535 rename = "@tabSelected",
536 default,
537 skip_serializing_if = "Option::is_none"
538 )]
539 pub tab_selected: Option<bool>,
540 #[serde(
541 rename = "@showRuler",
542 default,
543 skip_serializing_if = "Option::is_none"
544 )]
545 pub show_ruler: Option<bool>,
546 #[serde(
547 rename = "@showWhiteSpace",
548 default,
549 skip_serializing_if = "Option::is_none"
550 )]
551 pub show_white_space: Option<bool>,
552 #[serde(
553 rename = "@showOutlineSymbols",
554 default,
555 skip_serializing_if = "Option::is_none"
556 )]
557 pub show_outline_symbols: Option<bool>,
558 #[serde(
559 rename = "@defaultGridColor",
560 default,
561 skip_serializing_if = "Option::is_none"
562 )]
563 pub default_grid_color: Option<bool>,
564 #[serde(rename = "@view", default, skip_serializing_if = "Option::is_none")]
565 pub view: Option<String>,
566 #[serde(
567 rename = "@topLeftCell",
568 default,
569 skip_serializing_if = "Option::is_none"
570 )]
571 pub top_left_cell: Option<String>,
572 #[serde(rename = "@colorId", default, skip_serializing_if = "Option::is_none")]
573 pub color_id: Option<i64>,
574 #[serde(
575 rename = "@zoomScale",
576 default,
577 skip_serializing_if = "Option::is_none"
578 )]
579 pub zoom_scale: Option<f64>,
580 #[serde(
581 rename = "@zoomScaleNormal",
582 default,
583 skip_serializing_if = "Option::is_none"
584 )]
585 pub zoom_scale_normal: Option<f64>,
586 #[serde(
587 rename = "@zoomScalePageLayoutView",
588 default,
589 skip_serializing_if = "Option::is_none"
590 )]
591 pub zoom_scale_page_layout_view: Option<f64>,
592 #[serde(
593 rename = "@zoomScaleSheetLayoutView",
594 default,
595 skip_serializing_if = "Option::is_none"
596 )]
597 pub zoom_scale_sheet_layout_view: Option<f64>,
598 #[serde(rename = "@workbookViewId")]
599 pub workbook_view_id: i64,
600 #[serde(rename = "pane", default, skip_serializing_if = "Option::is_none")]
601 pub pane: Option<XlsxPane>,
602 #[serde(rename = "selection", default)]
603 pub selection: Vec<XlsxSelection>,
604}
605
606#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
608#[serde(rename = "selection")]
609pub struct XlsxSelection {
610 #[serde(
611 rename = "@activeCell",
612 default,
613 skip_serializing_if = "Option::is_none"
614 )]
615 pub active_cell: Option<String>,
616 #[serde(
617 rename = "@activeCellId",
618 default,
619 skip_serializing_if = "Option::is_none"
620 )]
621 pub active_cell_id: Option<i64>,
622 #[serde(rename = "@pane", default, skip_serializing_if = "Option::is_none")]
623 pub pane: Option<String>,
624 #[serde(rename = "@sqref", default, skip_serializing_if = "Option::is_none")]
625 pub sqref: Option<String>,
626}
627
628#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
630#[serde(rename = "pane")]
631pub struct XlsxPane {
632 #[serde(
633 rename = "@activePane",
634 default,
635 skip_serializing_if = "Option::is_none"
636 )]
637 pub active_pane: Option<String>,
638 #[serde(rename = "@state", default, skip_serializing_if = "Option::is_none")]
639 pub state: Option<String>,
640 #[serde(
641 rename = "@topLeftCell",
642 default,
643 skip_serializing_if = "Option::is_none"
644 )]
645 pub top_left_cell: Option<String>,
646 #[serde(rename = "@xSplit", default, skip_serializing_if = "Option::is_none")]
647 pub x_split: Option<f64>,
648 #[serde(rename = "@ySplit", default, skip_serializing_if = "Option::is_none")]
649 pub y_split: Option<f64>,
650}
651
652#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
654#[serde(rename = "sheetPr")]
655pub struct XlsxSheetPr {
656 #[serde(
657 rename = "@syncHorizontal",
658 default,
659 skip_serializing_if = "Option::is_none"
660 )]
661 pub sync_horizontal: Option<bool>,
662 #[serde(
663 rename = "@syncVertical",
664 default,
665 skip_serializing_if = "Option::is_none"
666 )]
667 pub sync_vertical: Option<bool>,
668 #[serde(rename = "@syncRef", default, skip_serializing_if = "Option::is_none")]
669 pub sync_ref: Option<String>,
670 #[serde(
671 rename = "@transitionEvaluation",
672 default,
673 skip_serializing_if = "Option::is_none"
674 )]
675 pub transition_evaluation: Option<bool>,
676 #[serde(
677 rename = "@transitionEntry",
678 default,
679 skip_serializing_if = "Option::is_none"
680 )]
681 pub transition_entry: Option<bool>,
682 #[serde(
683 rename = "@published",
684 default,
685 skip_serializing_if = "Option::is_none"
686 )]
687 pub published: Option<bool>,
688 #[serde(rename = "@codeName", default, skip_serializing_if = "Option::is_none")]
689 pub code_name: Option<String>,
690 #[serde(
691 rename = "@filterMode",
692 default,
693 skip_serializing_if = "Option::is_none"
694 )]
695 pub filter_mode: Option<bool>,
696 #[serde(
697 rename = "@enableFormatConditionsCalculation",
698 default,
699 skip_serializing_if = "Option::is_none"
700 )]
701 pub enable_format_conditions_calculation: Option<bool>,
702 #[serde(rename = "tabColor", default, skip_serializing_if = "Option::is_none")]
703 pub tab_color: Option<XlsxColor>,
704 #[serde(rename = "outlinePr", default, skip_serializing_if = "Option::is_none")]
705 pub outline_pr: Option<XlsxOutlinePr>,
706 #[serde(
707 rename = "pageSetUpPr",
708 default,
709 skip_serializing_if = "Option::is_none"
710 )]
711 pub page_set_up_pr: Option<XlsxPageSetUpPr>,
712}
713
714#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
716#[serde(rename = "outlinePr")]
717pub struct XlsxOutlinePr {
718 #[serde(
719 rename = "@applyStyles",
720 default,
721 skip_serializing_if = "Option::is_none"
722 )]
723 pub apply_styles: Option<bool>,
724 #[serde(
725 rename = "@summaryBelow",
726 default,
727 skip_serializing_if = "Option::is_none"
728 )]
729 pub summary_below: Option<bool>,
730 #[serde(
731 rename = "@summaryRight",
732 default,
733 skip_serializing_if = "Option::is_none"
734 )]
735 pub summary_right: Option<bool>,
736 #[serde(
737 rename = "@showOutlineSymbols",
738 default,
739 skip_serializing_if = "Option::is_none"
740 )]
741 pub show_outline_symbols: Option<bool>,
742}
743
744#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
746#[serde(rename = "pageSetUpPr")]
747pub struct XlsxPageSetUpPr {
748 #[serde(
749 rename = "@autoPageBreaks",
750 default,
751 skip_serializing_if = "Option::is_none"
752 )]
753 pub auto_page_breaks: Option<bool>,
754 #[serde(
755 rename = "@fitToPage",
756 default,
757 skip_serializing_if = "Option::is_none"
758 )]
759 pub fit_to_page: Option<bool>,
760}
761
762#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
764#[serde(rename = "cols")]
765pub struct XlsxCols {
766 #[serde(rename = "col", default)]
767 pub col: Vec<XlsxCol>,
768}
769
770#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
772#[serde(rename = "col")]
773pub struct XlsxCol {
774 #[serde(rename = "@bestFit", default, skip_serializing_if = "Option::is_none")]
775 pub best_fit: Option<bool>,
776 #[serde(
777 rename = "@collapsed",
778 default,
779 skip_serializing_if = "Option::is_none"
780 )]
781 pub collapsed: Option<bool>,
782 #[serde(
783 rename = "@customWidth",
784 default,
785 skip_serializing_if = "Option::is_none"
786 )]
787 pub custom_width: Option<bool>,
788 #[serde(rename = "@hidden", default, skip_serializing_if = "Option::is_none")]
789 pub hidden: Option<bool>,
790 #[serde(rename = "@max")]
791 pub max: i64,
792 #[serde(rename = "@min")]
793 pub min: i64,
794 #[serde(
795 rename = "@outlineLevel",
796 default,
797 skip_serializing_if = "Option::is_none"
798 )]
799 pub outline_level: Option<u8>,
800 #[serde(rename = "@phonetic", default, skip_serializing_if = "Option::is_none")]
801 pub phonetic: Option<bool>,
802 #[serde(rename = "@style", default, skip_serializing_if = "Option::is_none")]
803 pub style: Option<i64>,
804 #[serde(rename = "@width", default, skip_serializing_if = "Option::is_none")]
805 pub width: Option<f64>,
806}
807
808#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
810#[serde(rename = "dimension")]
811pub struct XlsxDimension {
812 #[serde(rename = "@ref")]
813 pub r#ref: String,
814}
815
816#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
818#[serde(rename = "sheetData")]
819pub struct XlsxSheetData {
820 #[serde(rename = "row", default)]
821 pub row: Vec<XlsxRow>,
822}
823
824#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
826#[serde(rename = "row")]
827pub struct XlsxRow {
828 #[serde(rename = "c", default)]
829 pub c: Vec<XlsxC>,
830 #[serde(rename = "@r", default, skip_serializing_if = "Option::is_none")]
831 pub r: Option<i64>,
832 #[serde(rename = "@spans", default, skip_serializing_if = "Option::is_none")]
833 pub spans: Option<String>,
834 #[serde(rename = "@s", default, skip_serializing_if = "Option::is_none")]
835 pub s: Option<i64>,
836 #[serde(
837 rename = "@customFormat",
838 default,
839 skip_serializing_if = "Option::is_none"
840 )]
841 pub custom_format: Option<bool>,
842 #[serde(rename = "@ht", default, skip_serializing_if = "Option::is_none")]
843 pub ht: Option<f64>,
844 #[serde(rename = "@hidden", default, skip_serializing_if = "Option::is_none")]
845 pub hidden: Option<bool>,
846 #[serde(
847 rename = "@customHeight",
848 default,
849 skip_serializing_if = "Option::is_none"
850 )]
851 pub custom_height: Option<bool>,
852 #[serde(
853 rename = "@outlineLevel",
854 default,
855 skip_serializing_if = "Option::is_none"
856 )]
857 pub outline_level: Option<u8>,
858 #[serde(
859 rename = "@collapsed",
860 default,
861 skip_serializing_if = "Option::is_none"
862 )]
863 pub collapsed: Option<bool>,
864 #[serde(rename = "@thickTop", default, skip_serializing_if = "Option::is_none")]
865 pub thick_top: Option<bool>,
866 #[serde(rename = "@thickBot", default, skip_serializing_if = "Option::is_none")]
867 pub thick_bot: Option<bool>,
868 #[serde(rename = "@ph", default, skip_serializing_if = "Option::is_none")]
869 pub ph: Option<bool>,
870}
871
872#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
874#[serde(rename = "c")]
875pub struct XlsxC {
876 #[serde(
877 rename = "@xml:space",
878 default,
879 skip_serializing_if = "Option::is_none"
880 )]
881 pub xml_space: Option<String>,
882 #[serde(rename = "@r", default, skip_serializing_if = "Option::is_none")]
883 pub r: Option<String>,
884 #[serde(rename = "@s", default, skip_serializing_if = "Option::is_none")]
885 pub s: Option<i64>,
886 #[serde(rename = "@t", default, skip_serializing_if = "Option::is_none")]
887 pub t: Option<String>,
888 #[serde(rename = "@cm", default, skip_serializing_if = "Option::is_none")]
889 pub cm: Option<u64>,
890 #[serde(rename = "@vm", default, skip_serializing_if = "Option::is_none")]
891 pub vm: Option<u64>,
892 #[serde(rename = "@ph", default, skip_serializing_if = "Option::is_none")]
893 pub ph: Option<bool>,
894 #[serde(rename = "f", default, skip_serializing_if = "Option::is_none")]
895 pub f: Option<XlsxF>,
896 #[serde(rename = "v", default, skip_serializing_if = "Option::is_none")]
897 pub v: Option<String>,
898 #[serde(rename = "is", default, skip_serializing_if = "Option::is_none")]
899 pub is: Option<XlsxSi>,
900}
901
902#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
904#[serde(rename = "f")]
905pub struct XlsxF {
906 #[serde(rename = "$value", default)]
907 pub content: String,
908 #[serde(rename = "@t", default, skip_serializing_if = "Option::is_none")]
909 pub t: Option<String>,
910 #[serde(rename = "@aca", default, skip_serializing_if = "Option::is_none")]
911 pub aca: Option<bool>,
912 #[serde(rename = "@ref", default, skip_serializing_if = "Option::is_none")]
913 pub r#ref: Option<String>,
914 #[serde(rename = "@dt2D", default, skip_serializing_if = "Option::is_none")]
915 pub dt2_d: Option<bool>,
916 #[serde(rename = "@dtr", default, skip_serializing_if = "Option::is_none")]
917 pub dtr: Option<bool>,
918 #[serde(rename = "@del1", default, skip_serializing_if = "Option::is_none")]
919 pub del1: Option<bool>,
920 #[serde(rename = "@del2", default, skip_serializing_if = "Option::is_none")]
921 pub del2: Option<bool>,
922 #[serde(rename = "@r1", default, skip_serializing_if = "Option::is_none")]
923 pub r1: Option<String>,
924 #[serde(rename = "@r2", default, skip_serializing_if = "Option::is_none")]
925 pub r2: Option<String>,
926 #[serde(rename = "@ca", default, skip_serializing_if = "Option::is_none")]
927 pub ca: Option<bool>,
928 #[serde(rename = "@si", default, skip_serializing_if = "Option::is_none")]
929 pub si: Option<i64>,
930 #[serde(rename = "@bx", default, skip_serializing_if = "Option::is_none")]
931 pub bx: Option<bool>,
932}
933
934#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
936#[serde(rename = "sheetProtection")]
937pub struct XlsxSheetProtection {
938 #[serde(
939 rename = "@algorithmName",
940 default,
941 skip_serializing_if = "Option::is_none"
942 )]
943 pub algorithm_name: Option<String>,
944 #[serde(rename = "@password", default, skip_serializing_if = "Option::is_none")]
945 pub password: Option<String>,
946 #[serde(
947 rename = "@hashValue",
948 default,
949 skip_serializing_if = "Option::is_none"
950 )]
951 pub hash_value: Option<String>,
952 #[serde(
953 rename = "@saltValue",
954 default,
955 skip_serializing_if = "Option::is_none"
956 )]
957 pub salt_value: Option<String>,
958 #[serde(
959 rename = "@spinCount",
960 default,
961 skip_serializing_if = "Option::is_none"
962 )]
963 pub spin_count: Option<i64>,
964 #[serde(rename = "@sheet")]
965 pub sheet: bool,
966 #[serde(rename = "@objects")]
967 pub objects: bool,
968 #[serde(rename = "@scenarios")]
969 pub scenarios: bool,
970 #[serde(rename = "@formatCells")]
971 pub format_cells: bool,
972 #[serde(rename = "@formatColumns")]
973 pub format_columns: bool,
974 #[serde(rename = "@formatRows")]
975 pub format_rows: bool,
976 #[serde(rename = "@insertColumns")]
977 pub insert_columns: bool,
978 #[serde(rename = "@insertRows")]
979 pub insert_rows: bool,
980 #[serde(rename = "@insertHyperlinks")]
981 pub insert_hyperlinks: bool,
982 #[serde(rename = "@deleteColumns")]
983 pub delete_columns: bool,
984 #[serde(rename = "@deleteRows")]
985 pub delete_rows: bool,
986 #[serde(rename = "@selectLockedCells")]
987 pub select_locked_cells: bool,
988 #[serde(rename = "@sort")]
989 pub sort: bool,
990 #[serde(rename = "@autoFilter")]
991 pub auto_filter: bool,
992 #[serde(rename = "@pivotTables")]
993 pub pivot_tables: bool,
994 #[serde(rename = "@selectUnlockedCells")]
995 pub select_unlocked_cells: bool,
996}
997
998#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1000#[serde(rename = "sortState")]
1001pub struct XlsxSortState {
1002 #[serde(
1003 rename = "@columnSort",
1004 default,
1005 skip_serializing_if = "Option::is_none"
1006 )]
1007 pub column_sort: Option<bool>,
1008 #[serde(
1009 rename = "@caseSensitive",
1010 default,
1011 skip_serializing_if = "Option::is_none"
1012 )]
1013 pub case_sensitive: Option<bool>,
1014 #[serde(
1015 rename = "@sortMethod",
1016 default,
1017 skip_serializing_if = "Option::is_none"
1018 )]
1019 pub sort_method: Option<String>,
1020 #[serde(rename = "@ref")]
1021 pub r#ref: String,
1022 #[serde(rename = "$value", default)]
1023 pub content: String,
1024}
1025
1026#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1028#[serde(rename = "customSheetViews")]
1029pub struct XlsxCustomSheetViews {
1030 #[serde(rename = "customSheetView", default)]
1031 pub custom_sheet_view: Vec<XlsxCustomSheetView>,
1032}
1033
1034#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1036#[serde(rename = "brk")]
1037pub struct XlsxBrk {
1038 #[serde(rename = "@id", default, skip_serializing_if = "Option::is_none")]
1039 pub id: Option<i64>,
1040 #[serde(rename = "@min", default, skip_serializing_if = "Option::is_none")]
1041 pub min: Option<i64>,
1042 #[serde(rename = "@max", default, skip_serializing_if = "Option::is_none")]
1043 pub max: Option<i64>,
1044 #[serde(rename = "@man", default, skip_serializing_if = "Option::is_none")]
1045 pub man: Option<bool>,
1046 #[serde(rename = "@pt", default, skip_serializing_if = "Option::is_none")]
1047 pub pt: Option<bool>,
1048}
1049
1050#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1052pub struct XlsxBreaks {
1053 #[serde(rename = "brk", default)]
1054 pub brk: Vec<XlsxBrk>,
1055 #[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
1056 pub count: Option<i64>,
1057 #[serde(
1058 rename = "@manualBreakCount",
1059 default,
1060 skip_serializing_if = "Option::is_none"
1061 )]
1062 pub manual_break_count: Option<i64>,
1063}
1064
1065#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1067#[serde(rename = "rowBreaks")]
1068pub struct XlsxRowBreaks {
1069 #[serde(flatten)]
1070 pub breaks: XlsxBreaks,
1071}
1072
1073#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1075#[serde(rename = "colBreaks")]
1076pub struct XlsxColBreaks {
1077 #[serde(flatten)]
1078 pub breaks: XlsxBreaks,
1079}
1080
1081#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1083#[serde(rename = "customSheetView")]
1084pub struct XlsxCustomSheetView {
1085 #[serde(rename = "pane", default, skip_serializing_if = "Option::is_none")]
1086 pub pane: Option<XlsxPane>,
1087 #[serde(rename = "selection", default, skip_serializing_if = "Option::is_none")]
1088 pub selection: Option<XlsxSelection>,
1089 #[serde(rename = "rowBreaks", default, skip_serializing_if = "Option::is_none")]
1090 pub row_breaks: Option<XlsxBreaks>,
1091 #[serde(rename = "colBreaks", default, skip_serializing_if = "Option::is_none")]
1092 pub col_breaks: Option<XlsxBreaks>,
1093 #[serde(
1094 rename = "pageMargins",
1095 default,
1096 skip_serializing_if = "Option::is_none"
1097 )]
1098 pub page_margins: Option<XlsxPageMargins>,
1099 #[serde(
1100 rename = "printOptions",
1101 default,
1102 skip_serializing_if = "Option::is_none"
1103 )]
1104 pub print_options: Option<XlsxPrintOptions>,
1105 #[serde(rename = "pageSetup", default, skip_serializing_if = "Option::is_none")]
1106 pub page_setup: Option<XlsxPageSetUp>,
1107 #[serde(
1108 rename = "headerFooter",
1109 default,
1110 skip_serializing_if = "Option::is_none"
1111 )]
1112 pub header_footer: Option<XlsxHeaderFooter>,
1113 #[serde(
1114 rename = "autoFilter",
1115 default,
1116 skip_serializing_if = "Option::is_none"
1117 )]
1118 pub auto_filter: Option<XlsxAutoFilter>,
1119 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1120 pub ext_lst: Option<XlsxExtLst>,
1121 #[serde(rename = "@guid")]
1122 pub guid: String,
1123 #[serde(rename = "@scale", default, skip_serializing_if = "Option::is_none")]
1124 pub scale: Option<i64>,
1125 #[serde(rename = "@colorId", default, skip_serializing_if = "Option::is_none")]
1126 pub color_id: Option<i64>,
1127 #[serde(
1128 rename = "@showPageBreaks",
1129 default,
1130 skip_serializing_if = "Option::is_none"
1131 )]
1132 pub show_page_breaks: Option<bool>,
1133 #[serde(
1134 rename = "@showFormulas",
1135 default,
1136 skip_serializing_if = "Option::is_none"
1137 )]
1138 pub show_formulas: Option<bool>,
1139 #[serde(
1140 rename = "@showGridLines",
1141 default,
1142 skip_serializing_if = "Option::is_none"
1143 )]
1144 pub show_grid_lines: Option<bool>,
1145 #[serde(
1146 rename = "@showRowCol",
1147 default,
1148 skip_serializing_if = "Option::is_none"
1149 )]
1150 pub show_row_col: Option<bool>,
1151 #[serde(
1152 rename = "@outlineSymbols",
1153 default,
1154 skip_serializing_if = "Option::is_none"
1155 )]
1156 pub outline_symbols: Option<bool>,
1157 #[serde(
1158 rename = "@zeroValues",
1159 default,
1160 skip_serializing_if = "Option::is_none"
1161 )]
1162 pub zero_values: Option<bool>,
1163 #[serde(
1164 rename = "@fitToPage",
1165 default,
1166 skip_serializing_if = "Option::is_none"
1167 )]
1168 pub fit_to_page: Option<bool>,
1169 #[serde(
1170 rename = "@printArea",
1171 default,
1172 skip_serializing_if = "Option::is_none"
1173 )]
1174 pub print_area: Option<bool>,
1175 #[serde(rename = "@filter", default, skip_serializing_if = "Option::is_none")]
1176 pub filter: Option<bool>,
1177 #[serde(
1178 rename = "@showAutoFilter",
1179 default,
1180 skip_serializing_if = "Option::is_none"
1181 )]
1182 pub show_auto_filter: Option<bool>,
1183 #[serde(
1184 rename = "@hiddenRows",
1185 default,
1186 skip_serializing_if = "Option::is_none"
1187 )]
1188 pub hidden_rows: Option<bool>,
1189 #[serde(
1190 rename = "@hiddenColumns",
1191 default,
1192 skip_serializing_if = "Option::is_none"
1193 )]
1194 pub hidden_columns: Option<bool>,
1195 #[serde(rename = "@state", default, skip_serializing_if = "Option::is_none")]
1196 pub state: Option<String>,
1197 #[serde(
1198 rename = "@filterUnique",
1199 default,
1200 skip_serializing_if = "Option::is_none"
1201 )]
1202 pub filter_unique: Option<bool>,
1203 #[serde(rename = "@view", default, skip_serializing_if = "Option::is_none")]
1204 pub view: Option<String>,
1205 #[serde(
1206 rename = "@showRuler",
1207 default,
1208 skip_serializing_if = "Option::is_none"
1209 )]
1210 pub show_ruler: Option<bool>,
1211 #[serde(
1212 rename = "@topLeftCell",
1213 default,
1214 skip_serializing_if = "Option::is_none"
1215 )]
1216 pub top_left_cell: Option<String>,
1217}
1218
1219#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1221#[serde(rename = "mergeCell")]
1222pub struct XlsxMergeCell {
1223 #[serde(rename = "@ref", default, skip_serializing_if = "Option::is_none")]
1224 pub r#ref: Option<String>,
1225}
1226
1227#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1229#[serde(rename = "mergeCells")]
1230pub struct XlsxMergeCells {
1231 #[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
1232 pub count: Option<i64>,
1233 #[serde(rename = "mergeCell", default)]
1234 pub cells: Vec<XlsxMergeCell>,
1235}
1236
1237#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1239#[serde(rename = "dataValidations")]
1240pub struct XlsxDataValidations {
1241 #[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
1242 pub count: Option<i64>,
1243 #[serde(
1244 rename = "@disablePrompts",
1245 default,
1246 skip_serializing_if = "Option::is_none"
1247 )]
1248 pub disable_prompts: Option<bool>,
1249 #[serde(rename = "@xWindow", default, skip_serializing_if = "Option::is_none")]
1250 pub x_window: Option<i64>,
1251 #[serde(rename = "@yWindow", default, skip_serializing_if = "Option::is_none")]
1252 pub y_window: Option<i64>,
1253 #[serde(rename = "dataValidation", default)]
1254 pub data_validation: Vec<XlsxDataValidation>,
1255}
1256
1257#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1259#[serde(rename = "dataValidation")]
1260pub struct XlsxDataValidation {
1261 #[serde(
1262 rename = "@allowBlank",
1263 default,
1264 skip_serializing_if = "Option::is_none"
1265 )]
1266 pub allow_blank: Option<bool>,
1267 #[serde(rename = "@error", default, skip_serializing_if = "Option::is_none")]
1268 pub error: Option<String>,
1269 #[serde(
1270 rename = "@errorStyle",
1271 default,
1272 skip_serializing_if = "Option::is_none"
1273 )]
1274 pub error_style: Option<String>,
1275 #[serde(
1276 rename = "@errorTitle",
1277 default,
1278 skip_serializing_if = "Option::is_none"
1279 )]
1280 pub error_title: Option<String>,
1281 #[serde(rename = "@operator", default, skip_serializing_if = "Option::is_none")]
1282 pub operator: Option<String>,
1283 #[serde(rename = "@prompt", default, skip_serializing_if = "Option::is_none")]
1284 pub prompt: Option<String>,
1285 #[serde(
1286 rename = "@promptTitle",
1287 default,
1288 skip_serializing_if = "Option::is_none"
1289 )]
1290 pub prompt_title: Option<String>,
1291 #[serde(rename = "@showDropDown", default, skip_serializing_if = "is_false")]
1292 pub show_drop_down: Option<bool>,
1293 #[serde(
1294 rename = "@showErrorMessage",
1295 default,
1296 skip_serializing_if = "is_false"
1297 )]
1298 pub show_error_message: Option<bool>,
1299 #[serde(
1300 rename = "@showInputMessage",
1301 default,
1302 skip_serializing_if = "is_false"
1303 )]
1304 pub show_input_message: Option<bool>,
1305 #[serde(rename = "@sqref")]
1306 pub sqref: String,
1307 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1308 pub r#type: Option<String>,
1309 #[serde(rename = "formula1", default, skip_serializing_if = "Option::is_none")]
1310 pub formula1: Option<XlsxInnerXml>,
1311 #[serde(rename = "formula2", default, skip_serializing_if = "Option::is_none")]
1312 pub formula2: Option<XlsxInnerXml>,
1313 #[serde(rename = "sqref", default, skip_serializing_if = "Option::is_none")]
1314 pub xm_sqref: Option<String>,
1315}
1316
1317#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1319#[serde(rename = "x14:dataValidation")]
1320pub struct XlsxX14DataValidation {
1321 #[serde(
1322 rename = "@allowBlank",
1323 default,
1324 skip_serializing_if = "Option::is_none"
1325 )]
1326 pub allow_blank: Option<bool>,
1327 #[serde(rename = "@error", default, skip_serializing_if = "Option::is_none")]
1328 pub error: Option<String>,
1329 #[serde(
1330 rename = "@errorStyle",
1331 default,
1332 skip_serializing_if = "Option::is_none"
1333 )]
1334 pub error_style: Option<String>,
1335 #[serde(
1336 rename = "@errorTitle",
1337 default,
1338 skip_serializing_if = "Option::is_none"
1339 )]
1340 pub error_title: Option<String>,
1341 #[serde(rename = "@operator", default, skip_serializing_if = "Option::is_none")]
1342 pub operator: Option<String>,
1343 #[serde(rename = "@prompt", default, skip_serializing_if = "Option::is_none")]
1344 pub prompt: Option<String>,
1345 #[serde(
1346 rename = "@promptTitle",
1347 default,
1348 skip_serializing_if = "Option::is_none"
1349 )]
1350 pub prompt_title: Option<String>,
1351 #[serde(rename = "@showDropDown", default, skip_serializing_if = "is_false")]
1352 pub show_drop_down: Option<bool>,
1353 #[serde(
1354 rename = "@showErrorMessage",
1355 default,
1356 skip_serializing_if = "is_false"
1357 )]
1358 pub show_error_message: Option<bool>,
1359 #[serde(
1360 rename = "@showInputMessage",
1361 default,
1362 skip_serializing_if = "is_false"
1363 )]
1364 pub show_input_message: Option<bool>,
1365 #[serde(rename = "@sqref")]
1366 pub sqref: String,
1367 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1368 pub r#type: Option<String>,
1369 #[serde(
1370 rename = "x14:formula1",
1371 default,
1372 skip_serializing_if = "Option::is_none"
1373 )]
1374 pub formula1: Option<XlsxInnerXml>,
1375 #[serde(
1376 rename = "x14:formula2",
1377 default,
1378 skip_serializing_if = "Option::is_none"
1379 )]
1380 pub formula2: Option<XlsxInnerXml>,
1381 #[serde(rename = "xm:sqref", default, skip_serializing_if = "Option::is_none")]
1382 pub xm_sqref: Option<String>,
1383}
1384
1385#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1387#[serde(rename = "x14:dataValidations")]
1388pub struct XlsxX14DataValidations {
1389 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
1390 pub xmlns_xm: Option<String>,
1391 #[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
1392 pub count: Option<i64>,
1393 #[serde(
1394 rename = "@disablePrompts",
1395 default,
1396 skip_serializing_if = "Option::is_none"
1397 )]
1398 pub disable_prompts: Option<bool>,
1399 #[serde(rename = "@xWindow", default, skip_serializing_if = "Option::is_none")]
1400 pub x_window: Option<i64>,
1401 #[serde(rename = "@yWindow", default, skip_serializing_if = "Option::is_none")]
1402 pub y_window: Option<i64>,
1403 #[serde(rename = "x14:dataValidation", default)]
1404 pub data_validation: Vec<XlsxX14DataValidation>,
1405}
1406
1407#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1409#[serde(rename = "conditionalFormatting")]
1410pub struct XlsxConditionalFormatting {
1411 #[serde(rename = "@pivot", default, skip_serializing_if = "Option::is_none")]
1412 pub pivot: Option<bool>,
1413 #[serde(rename = "@sqref", default, skip_serializing_if = "Option::is_none")]
1414 pub sqref: Option<String>,
1415 #[serde(rename = "cfRule", default)]
1416 pub cf_rule: Vec<XlsxCfRule>,
1417}
1418
1419#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1421#[serde(rename = "cfRule")]
1422pub struct XlsxCfRule {
1423 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1424 pub r#type: Option<String>,
1425 #[serde(rename = "@dxfId", default, skip_serializing_if = "Option::is_none")]
1426 pub dxf_id: Option<i64>,
1427 #[serde(rename = "@priority", default, skip_serializing_if = "Option::is_none")]
1428 pub priority: Option<i64>,
1429 #[serde(
1430 rename = "@stopIfTrue",
1431 default,
1432 skip_serializing_if = "Option::is_none"
1433 )]
1434 pub stop_if_true: Option<bool>,
1435 #[serde(
1436 rename = "@aboveAverage",
1437 default,
1438 skip_serializing_if = "Option::is_none"
1439 )]
1440 pub above_average: Option<bool>,
1441 #[serde(rename = "@percent", default, skip_serializing_if = "Option::is_none")]
1442 pub percent: Option<bool>,
1443 #[serde(rename = "@bottom", default, skip_serializing_if = "Option::is_none")]
1444 pub bottom: Option<bool>,
1445 #[serde(rename = "@operator", default, skip_serializing_if = "Option::is_none")]
1446 pub operator: Option<String>,
1447 #[serde(rename = "@text", default, skip_serializing_if = "Option::is_none")]
1448 pub text: Option<String>,
1449 #[serde(
1450 rename = "@timePeriod",
1451 default,
1452 skip_serializing_if = "Option::is_none"
1453 )]
1454 pub time_period: Option<String>,
1455 #[serde(rename = "@rank", default, skip_serializing_if = "Option::is_none")]
1456 pub rank: Option<i64>,
1457 #[serde(rename = "@stdDev", default, skip_serializing_if = "Option::is_none")]
1458 pub std_dev: Option<i64>,
1459 #[serde(
1460 rename = "@equalAverage",
1461 default,
1462 skip_serializing_if = "Option::is_none"
1463 )]
1464 pub equal_average: Option<bool>,
1465 #[serde(rename = "formula", default)]
1466 pub formula: Vec<String>,
1467 #[serde(
1468 rename = "colorScale",
1469 default,
1470 skip_serializing_if = "Option::is_none"
1471 )]
1472 pub color_scale: Option<XlsxColorScale>,
1473 #[serde(rename = "dataBar", default, skip_serializing_if = "Option::is_none")]
1474 pub data_bar: Option<XlsxDataBar>,
1475 #[serde(rename = "iconSet", default, skip_serializing_if = "Option::is_none")]
1476 pub icon_set: Option<XlsxIconSet>,
1477 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1478 pub ext_lst: Option<XlsxExtLst>,
1479}
1480
1481#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1483#[serde(rename = "colorScale")]
1484pub struct XlsxColorScale {
1485 #[serde(rename = "cfvo", default)]
1486 pub cfvo: Vec<XlsxCfvo>,
1487 #[serde(rename = "color", default)]
1488 pub color: Vec<XlsxColor>,
1489}
1490
1491#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1493#[serde(rename = "dataBar")]
1494pub struct XlsxDataBar {
1495 #[serde(
1496 rename = "@maxLength",
1497 default,
1498 skip_serializing_if = "Option::is_none"
1499 )]
1500 pub max_length: Option<i64>,
1501 #[serde(
1502 rename = "@minLength",
1503 default,
1504 skip_serializing_if = "Option::is_none"
1505 )]
1506 pub min_length: Option<i64>,
1507 #[serde(
1508 rename = "@showValue",
1509 default,
1510 skip_serializing_if = "Option::is_none"
1511 )]
1512 pub show_value: Option<bool>,
1513 #[serde(rename = "cfvo", default)]
1514 pub cfvo: Vec<XlsxCfvo>,
1515 #[serde(rename = "color", default)]
1516 pub color: Vec<XlsxColor>,
1517}
1518
1519#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1521#[serde(rename = "iconSet")]
1522pub struct XlsxIconSet {
1523 #[serde(rename = "cfvo", default)]
1524 pub cfvo: Vec<XlsxCfvo>,
1525 #[serde(rename = "@iconSet", default, skip_serializing_if = "Option::is_none")]
1526 pub icon_set: Option<String>,
1527 #[serde(
1528 rename = "@showValue",
1529 default,
1530 skip_serializing_if = "Option::is_none"
1531 )]
1532 pub show_value: Option<bool>,
1533 #[serde(rename = "@percent", default, skip_serializing_if = "Option::is_none")]
1534 pub percent: Option<bool>,
1535 #[serde(rename = "@reverse", default, skip_serializing_if = "Option::is_none")]
1536 pub reverse: Option<bool>,
1537}
1538
1539#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1541#[serde(rename = "cfvo")]
1542pub struct XlsxCfvo {
1543 #[serde(rename = "@gte", default, skip_serializing_if = "Option::is_none")]
1544 pub gte: Option<bool>,
1545 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1546 pub r#type: Option<String>,
1547 #[serde(rename = "@val", default, skip_serializing_if = "Option::is_none")]
1548 pub val: Option<String>,
1549 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1550 pub ext_lst: Option<XlsxExtLst>,
1551}
1552
1553#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1555#[serde(rename = "hyperlinks")]
1556pub struct XlsxHyperlinks {
1557 #[serde(rename = "hyperlink", default)]
1558 pub hyperlink: Vec<XlsxHyperlink>,
1559}
1560
1561#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1563#[serde(rename = "hyperlink")]
1564pub struct XlsxHyperlink {
1565 #[serde(rename = "@ref")]
1566 pub r#ref: String,
1567 #[serde(rename = "@location", default, skip_serializing_if = "Option::is_none")]
1568 pub location: Option<String>,
1569 #[serde(rename = "@display", default, skip_serializing_if = "Option::is_none")]
1570 pub display: Option<String>,
1571 #[serde(rename = "@tooltip", default, skip_serializing_if = "Option::is_none")]
1572 pub tooltip: Option<String>,
1573 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
1574 pub rid: Option<String>,
1575}
1576
1577#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1579#[serde(rename = "tableParts")]
1580pub struct XlsxTableParts {
1581 #[serde(rename = "@count", default, skip_serializing_if = "Option::is_none")]
1582 pub count: Option<i64>,
1583 #[serde(rename = "tablePart", default)]
1584 pub table_part: Vec<XlsxTablePart>,
1585}
1586
1587#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1589#[serde(rename = "tablePart")]
1590pub struct XlsxTablePart {
1591 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
1592 pub rid: Option<String>,
1593}
1594
1595#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1597#[serde(rename = "picture")]
1598pub struct XlsxPicture {
1599 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
1600 pub rid: Option<String>,
1601}
1602
1603#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1605#[serde(rename = "ignoredError")]
1606pub struct XlsxIgnoredError {
1607 #[serde(rename = "@sqref")]
1608 pub sqref: String,
1609 #[serde(
1610 rename = "@evalError",
1611 default,
1612 skip_serializing_if = "Option::is_none"
1613 )]
1614 pub eval_error: Option<bool>,
1615 #[serde(
1616 rename = "@twoDigitTextYear",
1617 default,
1618 skip_serializing_if = "Option::is_none"
1619 )]
1620 pub two_digit_text_year: Option<bool>,
1621 #[serde(
1622 rename = "@numberStoredAsText",
1623 default,
1624 skip_serializing_if = "Option::is_none"
1625 )]
1626 pub number_stored_as_text: Option<bool>,
1627 #[serde(rename = "@formula", default, skip_serializing_if = "Option::is_none")]
1628 pub formula: Option<bool>,
1629 #[serde(
1630 rename = "@formulaRange",
1631 default,
1632 skip_serializing_if = "Option::is_none"
1633 )]
1634 pub formula_range: Option<bool>,
1635 #[serde(
1636 rename = "@unlockedFormula",
1637 default,
1638 skip_serializing_if = "Option::is_none"
1639 )]
1640 pub unlocked_formula: Option<bool>,
1641 #[serde(
1642 rename = "@emptyCellReference",
1643 default,
1644 skip_serializing_if = "Option::is_none"
1645 )]
1646 pub empty_cell_reference: Option<bool>,
1647 #[serde(
1648 rename = "@listDataValidation",
1649 default,
1650 skip_serializing_if = "Option::is_none"
1651 )]
1652 pub list_data_validation: Option<bool>,
1653 #[serde(
1654 rename = "@calculatedColumn",
1655 default,
1656 skip_serializing_if = "Option::is_none"
1657 )]
1658 pub calculated_column: Option<bool>,
1659}
1660
1661#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1663#[serde(rename = "ignoredErrors")]
1664pub struct XlsxIgnoredErrors {
1665 #[serde(rename = "ignoredError", default)]
1666 pub ignored_error: Vec<XlsxIgnoredError>,
1667 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1668 pub ext_lst: Option<XlsxExtLst>,
1669}
1670
1671#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1673#[serde(rename = "legacyDrawing")]
1674pub struct XlsxLegacyDrawing {
1675 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
1676 pub rid: Option<String>,
1677}
1678
1679#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1681#[serde(rename = "legacyDrawingHF")]
1682pub struct XlsxLegacyDrawingHF {
1683 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
1684 pub rid: Option<String>,
1685}
1686
1687#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1693#[serde(rename = "sparklineGroups")]
1694pub struct DecodeX14SparklineGroups {
1695 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
1696 pub xmlns_xm: Option<String>,
1697 #[serde(rename = "$value", default)]
1698 pub content: String,
1699}
1700
1701#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1703#[serde(rename = "ext")]
1704pub struct DecodeX14ConditionalFormattingExt {
1705 #[serde(rename = "@id", default, skip_serializing_if = "Option::is_none")]
1706 pub id: Option<String>,
1707}
1708
1709#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1711#[serde(rename = "conditionalFormattings")]
1712pub struct DecodeX14ConditionalFormattings {
1713 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
1714 pub xmlns_xm: Option<String>,
1715 #[serde(rename = "$value", default)]
1716 pub content: String,
1717}
1718
1719#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1721#[serde(rename = "conditionalFormattings")]
1722pub struct DecodeX14ConditionalFormattingRules {
1723 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
1724 pub xmlns_xm: Option<String>,
1725 #[serde(rename = "conditionalFormatting", default)]
1726 pub cond_fmt: Vec<DecodeX14ConditionalFormatting>,
1727}
1728
1729#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1731#[serde(rename = "conditionalFormatting")]
1732pub struct DecodeX14ConditionalFormatting {
1733 #[serde(rename = "@pivot", default, skip_serializing_if = "Option::is_none")]
1734 pub pivot: Option<bool>,
1735 #[serde(rename = "cfRule", default)]
1736 pub cf_rule: Vec<DecodeX14CfRule>,
1737 #[serde(rename = "sqref", default, skip_serializing_if = "Option::is_none")]
1738 pub sqref: Option<String>,
1739 #[serde(
1740 rename = "x14:extLst",
1741 default,
1742 skip_serializing_if = "Option::is_none"
1743 )]
1744 pub ext_lst: Option<XlsxExtLst>,
1745}
1746
1747#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1749#[serde(rename = "cfRule")]
1750pub struct DecodeX14CfRule {
1751 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1752 pub r#type: Option<String>,
1753 #[serde(rename = "@priority", default, skip_serializing_if = "Option::is_none")]
1754 pub priority: Option<i64>,
1755 #[serde(
1756 rename = "@stopIfTrue",
1757 default,
1758 skip_serializing_if = "Option::is_none"
1759 )]
1760 pub stop_if_true: Option<bool>,
1761 #[serde(
1762 rename = "@aboveAverage",
1763 default,
1764 skip_serializing_if = "Option::is_none"
1765 )]
1766 pub above_average: Option<bool>,
1767 #[serde(rename = "@percent", default, skip_serializing_if = "Option::is_none")]
1768 pub percent: Option<bool>,
1769 #[serde(rename = "@bottom", default, skip_serializing_if = "Option::is_none")]
1770 pub bottom: Option<bool>,
1771 #[serde(rename = "@operator", default, skip_serializing_if = "Option::is_none")]
1772 pub operator: Option<String>,
1773 #[serde(rename = "@text", default, skip_serializing_if = "Option::is_none")]
1774 pub text: Option<String>,
1775 #[serde(
1776 rename = "@timePeriod",
1777 default,
1778 skip_serializing_if = "Option::is_none"
1779 )]
1780 pub time_period: Option<String>,
1781 #[serde(rename = "@rank", default, skip_serializing_if = "Option::is_none")]
1782 pub rank: Option<i64>,
1783 #[serde(rename = "@stdDev", default, skip_serializing_if = "Option::is_none")]
1784 pub std_dev: Option<i64>,
1785 #[serde(
1786 rename = "@equalAverage",
1787 default,
1788 skip_serializing_if = "Option::is_none"
1789 )]
1790 pub equal_average: Option<bool>,
1791 #[serde(
1792 rename = "@activePresent",
1793 default,
1794 skip_serializing_if = "Option::is_none"
1795 )]
1796 pub active_present: Option<bool>,
1797 #[serde(rename = "@id", default, skip_serializing_if = "Option::is_none")]
1798 pub id: Option<String>,
1799 #[serde(rename = "f", default)]
1800 pub f: Vec<String>,
1801 #[serde(
1802 rename = "colorScale",
1803 default,
1804 skip_serializing_if = "Option::is_none"
1805 )]
1806 pub color_scale: Option<XlsxInnerXml>,
1807 #[serde(rename = "dataBar", default, skip_serializing_if = "Option::is_none")]
1808 pub data_bar: Option<DecodeX14DataBar>,
1809 #[serde(rename = "iconSet", default, skip_serializing_if = "Option::is_none")]
1810 pub icon_set: Option<DecodeX14IconSet>,
1811 #[serde(rename = "dxf", default, skip_serializing_if = "Option::is_none")]
1812 pub dxf: Option<XlsxInnerXml>,
1813 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1814 pub ext_lst: Option<XlsxExtLst>,
1815}
1816
1817#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1819#[serde(rename = "dataBar")]
1820pub struct DecodeX14DataBar {
1821 #[serde(
1822 rename = "@maxLength",
1823 default,
1824 skip_serializing_if = "Option::is_none"
1825 )]
1826 pub max_length: Option<i64>,
1827 #[serde(
1828 rename = "@minLength",
1829 default,
1830 skip_serializing_if = "Option::is_none"
1831 )]
1832 pub min_length: Option<i64>,
1833 #[serde(rename = "@border", default, skip_serializing_if = "Option::is_none")]
1834 pub border: Option<bool>,
1835 #[serde(rename = "@gradient", default, skip_serializing_if = "Option::is_none")]
1836 pub gradient: Option<bool>,
1837 #[serde(
1838 rename = "@showValue",
1839 default,
1840 skip_serializing_if = "Option::is_none"
1841 )]
1842 pub show_value: Option<bool>,
1843 #[serde(
1844 rename = "@direction",
1845 default,
1846 skip_serializing_if = "Option::is_none"
1847 )]
1848 pub direction: Option<String>,
1849 #[serde(rename = "cfvo", default)]
1850 pub cfvo: Vec<DecodeX14Cfvo>,
1851 #[serde(
1852 rename = "borderColor",
1853 default,
1854 skip_serializing_if = "Option::is_none"
1855 )]
1856 pub border_color: Option<XlsxColor>,
1857 #[serde(
1858 rename = "negativeFillColor",
1859 default,
1860 skip_serializing_if = "Option::is_none"
1861 )]
1862 pub negative_fill_color: Option<XlsxColor>,
1863 #[serde(rename = "axisColor", default, skip_serializing_if = "Option::is_none")]
1864 pub axis_color: Option<XlsxColor>,
1865}
1866
1867#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1869#[serde(rename = "iconSet")]
1870pub struct DecodeX14IconSet {
1871 #[serde(rename = "@iconSet", default, skip_serializing_if = "Option::is_none")]
1872 pub icon_set: Option<String>,
1873 #[serde(
1874 rename = "@showValue",
1875 default,
1876 skip_serializing_if = "Option::is_none"
1877 )]
1878 pub show_value: Option<bool>,
1879 #[serde(rename = "@percent", default, skip_serializing_if = "Option::is_none")]
1880 pub percent: Option<bool>,
1881 #[serde(rename = "@reverse", default, skip_serializing_if = "Option::is_none")]
1882 pub reverse: Option<bool>,
1883 #[serde(rename = "@custom", default, skip_serializing_if = "Option::is_none")]
1884 pub custom: Option<bool>,
1885 #[serde(rename = "cfvo", default)]
1886 pub cfvo: Vec<DecodeX14Cfvo>,
1887 #[serde(rename = "cfIcon", default)]
1888 pub cf_icon: Vec<XlsxInnerXml>,
1889}
1890
1891#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1893#[serde(rename = "cfvo")]
1894pub struct DecodeX14Cfvo {
1895 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1896 pub r#type: Option<String>,
1897 #[serde(rename = "@gte", default, skip_serializing_if = "Option::is_none")]
1898 pub gte: Option<bool>,
1899 #[serde(rename = "f", default, skip_serializing_if = "Option::is_none")]
1900 pub f: Option<String>,
1901 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
1902 pub ext_lst: Option<XlsxExtLst>,
1903}
1904
1905#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
1907#[serde(rename = "x14:conditionalFormattings")]
1908pub struct XlsxX14ConditionalFormattings {
1909 #[serde(rename = "$value", default)]
1910 pub content: String,
1911}
1912
1913#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1915#[serde(rename = "x14:conditionalFormatting")]
1916pub struct XlsxX14ConditionalFormatting {
1917 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
1918 pub xmlns_xm: Option<String>,
1919 #[serde(rename = "@pivot", default, skip_serializing_if = "Option::is_none")]
1920 pub pivot: Option<bool>,
1921 #[serde(rename = "x14:cfRule", default)]
1922 pub cf_rule: Vec<XlsxX14CfRule>,
1923 #[serde(rename = "xm:sqref", default, skip_serializing_if = "Option::is_none")]
1924 pub sqref: Option<String>,
1925 #[serde(
1926 rename = "x14:extLst",
1927 default,
1928 skip_serializing_if = "Option::is_none"
1929 )]
1930 pub ext_lst: Option<XlsxExtLst>,
1931}
1932
1933#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
1935#[serde(rename = "x14:cfRule")]
1936pub struct XlsxX14CfRule {
1937 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
1938 pub r#type: Option<String>,
1939 #[serde(rename = "@priority", default, skip_serializing_if = "Option::is_none")]
1940 pub priority: Option<i64>,
1941 #[serde(rename = "@stopIfTrue", default, skip_serializing_if = "is_false")]
1942 pub stop_if_true: Option<bool>,
1943 #[serde(rename = "@aboveAverage", default, skip_serializing_if = "is_false")]
1944 pub above_average: Option<bool>,
1945 #[serde(rename = "@percent", default, skip_serializing_if = "is_false")]
1946 pub percent: Option<bool>,
1947 #[serde(rename = "@bottom", default, skip_serializing_if = "is_false")]
1948 pub bottom: Option<bool>,
1949 #[serde(rename = "@operator", default, skip_serializing_if = "Option::is_none")]
1950 pub operator: Option<String>,
1951 #[serde(rename = "@text", default, skip_serializing_if = "Option::is_none")]
1952 pub text: Option<String>,
1953 #[serde(
1954 rename = "@timePeriod",
1955 default,
1956 skip_serializing_if = "Option::is_none"
1957 )]
1958 pub time_period: Option<String>,
1959 #[serde(rename = "@rank", default, skip_serializing_if = "Option::is_none")]
1960 pub rank: Option<i64>,
1961 #[serde(rename = "@stdDev", default, skip_serializing_if = "Option::is_none")]
1962 pub std_dev: Option<i64>,
1963 #[serde(rename = "@equalAverage", default, skip_serializing_if = "is_false")]
1964 pub equal_average: Option<bool>,
1965 #[serde(rename = "@activePresent", default, skip_serializing_if = "is_false")]
1966 pub active_present: Option<bool>,
1967 #[serde(rename = "@id", default, skip_serializing_if = "Option::is_none")]
1968 pub id: Option<String>,
1969 #[serde(rename = "xm:f", default)]
1970 pub f: Vec<String>,
1971 #[serde(
1972 rename = "x14:colorScale",
1973 default,
1974 skip_serializing_if = "Option::is_none"
1975 )]
1976 pub color_scale: Option<XlsxInnerXml>,
1977 #[serde(
1978 rename = "x14:dataBar",
1979 default,
1980 skip_serializing_if = "Option::is_none"
1981 )]
1982 pub data_bar: Option<Xlsx14DataBar>,
1983 #[serde(
1984 rename = "x14:iconSet",
1985 default,
1986 skip_serializing_if = "Option::is_none"
1987 )]
1988 pub icon_set: Option<Xlsx14IconSet>,
1989 #[serde(rename = "x14:dxf", default, skip_serializing_if = "Option::is_none")]
1990 pub dxf: Option<XlsxInnerXml>,
1991 #[serde(
1992 rename = "x14:extLst",
1993 default,
1994 skip_serializing_if = "Option::is_none"
1995 )]
1996 pub ext_lst: Option<XlsxExtLst>,
1997}
1998
1999#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2001#[serde(rename = "x14:dataBar")]
2002pub struct Xlsx14DataBar {
2003 #[serde(
2004 rename = "@maxLength",
2005 default,
2006 skip_serializing_if = "Option::is_none"
2007 )]
2008 pub max_length: Option<i64>,
2009 #[serde(
2010 rename = "@minLength",
2011 default,
2012 skip_serializing_if = "Option::is_none"
2013 )]
2014 pub min_length: Option<i64>,
2015 #[serde(rename = "@border", default, skip_serializing_if = "Option::is_none")]
2016 pub border: Option<bool>,
2017 #[serde(rename = "@gradient", default, skip_serializing_if = "Option::is_none")]
2018 pub gradient: Option<bool>,
2019 #[serde(
2020 rename = "@showValue",
2021 default,
2022 skip_serializing_if = "Option::is_none"
2023 )]
2024 pub show_value: Option<bool>,
2025 #[serde(
2026 rename = "@direction",
2027 default,
2028 skip_serializing_if = "Option::is_none"
2029 )]
2030 pub direction: Option<String>,
2031 #[serde(rename = "x14:cfvo", default)]
2032 pub cfvo: Vec<Xlsx14Cfvo>,
2033 #[serde(
2034 rename = "x14:borderColor",
2035 default,
2036 skip_serializing_if = "Option::is_none"
2037 )]
2038 pub border_color: Option<XlsxColor>,
2039 #[serde(
2040 rename = "x14:negativeFillColor",
2041 default,
2042 skip_serializing_if = "Option::is_none"
2043 )]
2044 pub negative_fill_color: Option<XlsxColor>,
2045 #[serde(
2046 rename = "x14:axisColor",
2047 default,
2048 skip_serializing_if = "Option::is_none"
2049 )]
2050 pub axis_color: Option<XlsxColor>,
2051}
2052
2053#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2055#[serde(rename = "x14:iconSet")]
2056pub struct Xlsx14IconSet {
2057 #[serde(rename = "@iconSet", default, skip_serializing_if = "Option::is_none")]
2058 pub icon_set: Option<String>,
2059 #[serde(
2060 rename = "@showValue",
2061 default,
2062 skip_serializing_if = "Option::is_none"
2063 )]
2064 pub show_value: Option<bool>,
2065 #[serde(rename = "@percent", default, skip_serializing_if = "Option::is_none")]
2066 pub percent: Option<bool>,
2067 #[serde(rename = "@reverse", default, skip_serializing_if = "Option::is_none")]
2068 pub reverse: Option<bool>,
2069 #[serde(rename = "@custom", default, skip_serializing_if = "Option::is_none")]
2070 pub custom: Option<bool>,
2071 #[serde(rename = "x14:cfvo", default)]
2072 pub cfvo: Vec<Xlsx14Cfvo>,
2073 #[serde(rename = "x14:cfIcon", default)]
2074 pub cf_icon: Vec<XlsxInnerXml>,
2075}
2076
2077#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2079#[serde(rename = "x14:cfvo")]
2080pub struct Xlsx14Cfvo {
2081 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
2082 pub r#type: Option<String>,
2083 #[serde(rename = "@gte", default, skip_serializing_if = "Option::is_none")]
2084 pub gte: Option<bool>,
2085 #[serde(rename = "xm:f", default, skip_serializing_if = "Option::is_none")]
2086 pub f: Option<String>,
2087 #[serde(
2088 rename = "x14:extLst",
2089 default,
2090 skip_serializing_if = "Option::is_none"
2091 )]
2092 pub ext_lst: Option<XlsxExtLst>,
2093}
2094
2095#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2097#[serde(rename = "x14:sparklineGroups")]
2098pub struct XlsxX14SparklineGroups {
2099 #[serde(rename = "@xmlns:xm", default, skip_serializing_if = "Option::is_none")]
2100 pub xmlns_xm: Option<String>,
2101 #[serde(rename = "x14:sparklineGroup", default)]
2102 pub sparkline_groups: Vec<XlsxX14SparklineGroup>,
2103 #[serde(rename = "$value", default)]
2104 pub content: String,
2105}
2106
2107#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2109#[serde(rename = "x14:sparklineGroup")]
2110pub struct XlsxX14SparklineGroup {
2111 #[serde(
2112 rename = "@manualMax",
2113 default,
2114 skip_serializing_if = "Option::is_none"
2115 )]
2116 pub manual_max: Option<i64>,
2117 #[serde(
2118 rename = "@manualMin",
2119 default,
2120 skip_serializing_if = "Option::is_none"
2121 )]
2122 pub manual_min: Option<i64>,
2123 #[serde(
2124 rename = "@lineWeight",
2125 default,
2126 skip_serializing_if = "Option::is_none"
2127 )]
2128 pub line_weight: Option<f64>,
2129 #[serde(rename = "@type", default, skip_serializing_if = "Option::is_none")]
2130 pub r#type: Option<String>,
2131 #[serde(rename = "@dateAxis", default, skip_serializing_if = "Option::is_none")]
2132 pub date_axis: Option<bool>,
2133 #[serde(
2134 rename = "@displayEmptyCellsAs",
2135 default,
2136 skip_serializing_if = "Option::is_none"
2137 )]
2138 pub display_empty_cells_as: Option<String>,
2139 #[serde(rename = "@markers", default, skip_serializing_if = "Option::is_none")]
2140 pub markers: Option<bool>,
2141 #[serde(rename = "@high", default, skip_serializing_if = "Option::is_none")]
2142 pub high: Option<bool>,
2143 #[serde(rename = "@low", default, skip_serializing_if = "Option::is_none")]
2144 pub low: Option<bool>,
2145 #[serde(rename = "@first", default, skip_serializing_if = "Option::is_none")]
2146 pub first: Option<bool>,
2147 #[serde(rename = "@last", default, skip_serializing_if = "Option::is_none")]
2148 pub last: Option<bool>,
2149 #[serde(rename = "@negative", default, skip_serializing_if = "Option::is_none")]
2150 pub negative: Option<bool>,
2151 #[serde(
2152 rename = "@displayXAxis",
2153 default,
2154 skip_serializing_if = "Option::is_none"
2155 )]
2156 pub display_x_axis: Option<bool>,
2157 #[serde(
2158 rename = "@displayHidden",
2159 default,
2160 skip_serializing_if = "Option::is_none"
2161 )]
2162 pub display_hidden: Option<bool>,
2163 #[serde(
2164 rename = "@minAxisType",
2165 default,
2166 skip_serializing_if = "Option::is_none"
2167 )]
2168 pub min_axis_type: Option<String>,
2169 #[serde(
2170 rename = "@maxAxisType",
2171 default,
2172 skip_serializing_if = "Option::is_none"
2173 )]
2174 pub max_axis_type: Option<String>,
2175 #[serde(
2176 rename = "@rightToLeft",
2177 default,
2178 skip_serializing_if = "Option::is_none"
2179 )]
2180 pub right_to_left: Option<bool>,
2181 #[serde(
2182 rename = "x14:colorSeries",
2183 default,
2184 skip_serializing_if = "Option::is_none"
2185 )]
2186 pub color_series: Option<XlsxColor>,
2187 #[serde(
2188 rename = "x14:colorNegative",
2189 default,
2190 skip_serializing_if = "Option::is_none"
2191 )]
2192 pub color_negative: Option<XlsxColor>,
2193 #[serde(
2194 rename = "x14:colorAxis",
2195 default,
2196 skip_serializing_if = "Option::is_none"
2197 )]
2198 pub color_axis: Option<XlsxColor>,
2199 #[serde(
2200 rename = "x14:colorMarkers",
2201 default,
2202 skip_serializing_if = "Option::is_none"
2203 )]
2204 pub color_markers: Option<XlsxColor>,
2205 #[serde(
2206 rename = "x14:colorFirst",
2207 default,
2208 skip_serializing_if = "Option::is_none"
2209 )]
2210 pub color_first: Option<XlsxColor>,
2211 #[serde(
2212 rename = "x14:colorLast",
2213 default,
2214 skip_serializing_if = "Option::is_none"
2215 )]
2216 pub color_last: Option<XlsxColor>,
2217 #[serde(
2218 rename = "x14:colorHigh",
2219 default,
2220 skip_serializing_if = "Option::is_none"
2221 )]
2222 pub color_high: Option<XlsxColor>,
2223 #[serde(
2224 rename = "x14:colorLow",
2225 default,
2226 skip_serializing_if = "Option::is_none"
2227 )]
2228 pub color_low: Option<XlsxColor>,
2229 #[serde(rename = "x14:sparklines", default)]
2230 pub sparklines: XlsxX14Sparklines,
2231}
2232
2233#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2235#[serde(rename = "x14:sparklines")]
2236pub struct XlsxX14Sparklines {
2237 #[serde(rename = "x14:sparkline", default)]
2238 pub sparkline: Vec<XlsxX14Sparkline>,
2239}
2240
2241#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2243#[serde(rename = "x14:sparkline")]
2244pub struct XlsxX14Sparkline {
2245 #[serde(rename = "xm:f", default)]
2246 pub f: String,
2247 #[serde(rename = "xm:sqref", default)]
2248 pub sqref: String,
2249}
2250
2251#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2257pub struct DataValidation {
2258 pub allow_blank: bool,
2259 pub error: Option<String>,
2260 pub error_style: Option<String>,
2261 pub error_title: Option<String>,
2262 pub operator: String,
2263 pub prompt: Option<String>,
2264 pub prompt_title: Option<String>,
2265 pub show_drop_down: bool,
2266 pub show_error_message: bool,
2267 pub show_input_message: bool,
2268 pub sqref: String,
2269 pub r#type: String,
2270 pub formula1: String,
2271 pub formula2: String,
2272}
2273
2274#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2276pub struct SparklineOptions {
2277 pub location: Vec<String>,
2278 pub range: Vec<String>,
2279 pub max: i64,
2280 pub cust_max: i64,
2281 pub min: i64,
2282 pub cust_min: i64,
2283 pub r#type: String,
2284 pub weight: f64,
2285 pub date_axis: bool,
2286 pub markers: bool,
2287 pub high: bool,
2288 pub low: bool,
2289 pub first: bool,
2290 pub last: bool,
2291 pub negative: bool,
2292 pub axis: bool,
2293 pub hidden: bool,
2294 pub reverse: bool,
2295 pub style: i64,
2296 pub series_color: String,
2297 pub negative_color: String,
2298 pub markers_color: String,
2299 pub first_color: String,
2300 pub last_color: String,
2301 pub hight_color: String,
2302 pub low_color: String,
2303 pub empty_cells: String,
2304}
2305
2306#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2308pub struct Selection {
2309 pub sqref: String,
2310 pub active_cell: String,
2311 pub pane: String,
2312}
2313
2314#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2316pub struct Panes {
2317 pub freeze: bool,
2318 pub split: bool,
2319 pub x_split: i64,
2320 pub y_split: i64,
2321 pub top_left_cell: String,
2322 pub active_pane: String,
2323 pub selection: Vec<Selection>,
2324}
2325
2326#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2328pub struct ConditionalFormatOptions {
2329 pub r#type: String,
2330 pub above_average: bool,
2331 pub percent: bool,
2332 pub format: Option<i64>,
2333 pub criteria: String,
2334 pub value: String,
2335 pub min_type: String,
2336 pub mid_type: String,
2337 pub max_type: String,
2338 pub min_value: String,
2339 pub mid_value: String,
2340 pub max_value: String,
2341 pub min_color: String,
2342 pub mid_color: String,
2343 pub max_color: String,
2344 pub bar_color: String,
2345 pub bar_border_color: String,
2346 pub bar_direction: String,
2347 pub bar_only: bool,
2348 pub bar_solid: bool,
2349 pub icon_style: String,
2350 pub reverse_icons: bool,
2351 pub icons_only: bool,
2352 pub stop_if_true: bool,
2353}
2354
2355#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2357pub struct SheetProtectionOptions {
2358 pub algorithm_name: String,
2359 pub auto_filter: bool,
2360 pub delete_columns: bool,
2361 pub delete_rows: bool,
2362 pub edit_objects: bool,
2363 pub edit_scenarios: bool,
2364 pub format_cells: bool,
2365 pub format_columns: bool,
2366 pub format_rows: bool,
2367 pub insert_columns: bool,
2368 pub insert_hyperlinks: bool,
2369 pub insert_rows: bool,
2370 pub password: String,
2371 pub pivot_tables: bool,
2372 pub select_locked_cells: bool,
2373 pub select_unlocked_cells: bool,
2374 pub sort: bool,
2375}
2376
2377#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
2379pub struct HeaderFooterOptions {
2380 pub align_with_margins: Option<bool>,
2381 pub different_first: bool,
2382 pub different_odd_even: bool,
2383 pub scale_with_doc: Option<bool>,
2384 pub odd_header: String,
2385 pub odd_footer: String,
2386 pub even_header: String,
2387 pub even_footer: String,
2388 pub first_header: String,
2389 pub first_footer: String,
2390}
2391
2392#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2394pub struct PageLayoutMarginsOptions {
2395 pub bottom: Option<f64>,
2396 pub footer: Option<f64>,
2397 pub header: Option<f64>,
2398 pub left: Option<f64>,
2399 pub right: Option<f64>,
2400 pub top: Option<f64>,
2401 pub horizontally: Option<bool>,
2402 pub vertically: Option<bool>,
2403}
2404
2405#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2407pub struct PageLayoutOptions {
2408 pub size: Option<i64>,
2409 pub orientation: Option<String>,
2410 pub first_page_number: Option<u64>,
2411 pub adjust_to: Option<u64>,
2412 pub fit_to_height: Option<i64>,
2413 pub fit_to_width: Option<i64>,
2414 pub black_and_white: Option<bool>,
2415 pub page_order: Option<String>,
2416}
2417
2418#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2420pub struct ViewOptions {
2421 pub default_grid_color: Option<bool>,
2422 pub right_to_left: Option<bool>,
2423 pub show_formulas: Option<bool>,
2424 pub show_grid_lines: Option<bool>,
2425 pub show_row_col_headers: Option<bool>,
2426 pub show_ruler: Option<bool>,
2427 pub show_zeros: Option<bool>,
2428 pub top_left_cell: Option<String>,
2429 pub view: Option<String>,
2430 pub zoom_scale: Option<f64>,
2431}
2432
2433#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
2435pub struct SheetPropsOptions {
2436 pub code_name: Option<String>,
2437 pub enable_format_conditions_calculation: Option<bool>,
2438 pub published: Option<bool>,
2439 pub auto_page_breaks: Option<bool>,
2440 pub fit_to_page: Option<bool>,
2441 pub tab_color_indexed: Option<i64>,
2442 pub tab_color_rgb: Option<String>,
2443 pub tab_color_theme: Option<i64>,
2444 pub tab_color_tint: Option<f64>,
2445 pub outline_summary_below: Option<bool>,
2446 pub outline_summary_right: Option<bool>,
2447 pub base_col_width: Option<u8>,
2448 pub default_col_width: Option<f64>,
2449 pub default_row_height: Option<f64>,
2450 pub custom_height: Option<bool>,
2451 pub zero_height: Option<bool>,
2452 pub thick_top: Option<bool>,
2453 pub thick_bottom: Option<bool>,
2454}