Skip to main content

ooxml_sml/
generated.rs

1// Generated from ECMA-376 RELAX NG schema.
2// Do not edit manually.
3
4use serde::{Deserialize, Serialize};
5
6/// XML namespace URIs used in this schema.
7pub mod ns {
8    /// Namespace prefix: o
9    pub const O: &str = "urn:schemas-microsoft-com:office:office";
10    /// Namespace prefix: s
11    pub const S: &str = "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes";
12    /// Namespace prefix: v
13    pub const V: &str = "urn:schemas-microsoft-com:vml";
14    /// Namespace prefix: w10
15    pub const W10: &str = "urn:schemas-microsoft-com:office:word";
16    /// Namespace prefix: x
17    pub const X: &str = "urn:schemas-microsoft-com:office:excel";
18    /// Namespace prefix: r
19    pub const R: &str = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
20    /// Default namespace (prefix: sml)
21    pub const SML: &str = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
22    /// Namespace prefix: xdr
23    pub const XDR: &str = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing";
24}
25
26pub type Language = String;
27
28pub type HexColorRgb = Vec<u8>;
29
30pub type Panose = Vec<u8>;
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
33pub enum CalendarType {
34    #[serde(rename = "gregorian")]
35    Gregorian,
36    #[serde(rename = "gregorianUs")]
37    GregorianUs,
38    #[serde(rename = "gregorianMeFrench")]
39    GregorianMeFrench,
40    #[serde(rename = "gregorianArabic")]
41    GregorianArabic,
42    #[serde(rename = "hijri")]
43    Hijri,
44    #[serde(rename = "hebrew")]
45    Hebrew,
46    #[serde(rename = "taiwan")]
47    Taiwan,
48    #[serde(rename = "japan")]
49    Japan,
50    #[serde(rename = "thai")]
51    Thai,
52    #[serde(rename = "korea")]
53    Korea,
54    #[serde(rename = "saka")]
55    Saka,
56    #[serde(rename = "gregorianXlitEnglish")]
57    GregorianXlitEnglish,
58    #[serde(rename = "gregorianXlitFrench")]
59    GregorianXlitFrench,
60    #[serde(rename = "none")]
61    None,
62}
63
64impl std::fmt::Display for CalendarType {
65    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
66        match self {
67            Self::Gregorian => write!(f, "gregorian"),
68            Self::GregorianUs => write!(f, "gregorianUs"),
69            Self::GregorianMeFrench => write!(f, "gregorianMeFrench"),
70            Self::GregorianArabic => write!(f, "gregorianArabic"),
71            Self::Hijri => write!(f, "hijri"),
72            Self::Hebrew => write!(f, "hebrew"),
73            Self::Taiwan => write!(f, "taiwan"),
74            Self::Japan => write!(f, "japan"),
75            Self::Thai => write!(f, "thai"),
76            Self::Korea => write!(f, "korea"),
77            Self::Saka => write!(f, "saka"),
78            Self::GregorianXlitEnglish => write!(f, "gregorianXlitEnglish"),
79            Self::GregorianXlitFrench => write!(f, "gregorianXlitFrench"),
80            Self::None => write!(f, "none"),
81        }
82    }
83}
84
85impl std::str::FromStr for CalendarType {
86    type Err = String;
87
88    fn from_str(s: &str) -> Result<Self, Self::Err> {
89        match s {
90            "gregorian" => Ok(Self::Gregorian),
91            "gregorianUs" => Ok(Self::GregorianUs),
92            "gregorianMeFrench" => Ok(Self::GregorianMeFrench),
93            "gregorianArabic" => Ok(Self::GregorianArabic),
94            "hijri" => Ok(Self::Hijri),
95            "hebrew" => Ok(Self::Hebrew),
96            "taiwan" => Ok(Self::Taiwan),
97            "japan" => Ok(Self::Japan),
98            "thai" => Ok(Self::Thai),
99            "korea" => Ok(Self::Korea),
100            "saka" => Ok(Self::Saka),
101            "gregorianXlitEnglish" => Ok(Self::GregorianXlitEnglish),
102            "gregorianXlitFrench" => Ok(Self::GregorianXlitFrench),
103            "none" => Ok(Self::None),
104            _ => Err(format!("unknown CalendarType value: {}", s)),
105        }
106    }
107}
108
109#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
110pub enum STAlgClass {
111    #[serde(rename = "hash")]
112    Hash,
113    #[serde(rename = "custom")]
114    Custom,
115}
116
117impl std::fmt::Display for STAlgClass {
118    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
119        match self {
120            Self::Hash => write!(f, "hash"),
121            Self::Custom => write!(f, "custom"),
122        }
123    }
124}
125
126impl std::str::FromStr for STAlgClass {
127    type Err = String;
128
129    fn from_str(s: &str) -> Result<Self, Self::Err> {
130        match s {
131            "hash" => Ok(Self::Hash),
132            "custom" => Ok(Self::Custom),
133            _ => Err(format!("unknown STAlgClass value: {}", s)),
134        }
135    }
136}
137
138#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
139pub enum STCryptProv {
140    #[serde(rename = "rsaAES")]
141    RsaAES,
142    #[serde(rename = "rsaFull")]
143    RsaFull,
144    #[serde(rename = "custom")]
145    Custom,
146}
147
148impl std::fmt::Display for STCryptProv {
149    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
150        match self {
151            Self::RsaAES => write!(f, "rsaAES"),
152            Self::RsaFull => write!(f, "rsaFull"),
153            Self::Custom => write!(f, "custom"),
154        }
155    }
156}
157
158impl std::str::FromStr for STCryptProv {
159    type Err = String;
160
161    fn from_str(s: &str) -> Result<Self, Self::Err> {
162        match s {
163            "rsaAES" => Ok(Self::RsaAES),
164            "rsaFull" => Ok(Self::RsaFull),
165            "custom" => Ok(Self::Custom),
166            _ => Err(format!("unknown STCryptProv value: {}", s)),
167        }
168    }
169}
170
171#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
172pub enum STAlgType {
173    #[serde(rename = "typeAny")]
174    TypeAny,
175    #[serde(rename = "custom")]
176    Custom,
177}
178
179impl std::fmt::Display for STAlgType {
180    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
181        match self {
182            Self::TypeAny => write!(f, "typeAny"),
183            Self::Custom => write!(f, "custom"),
184        }
185    }
186}
187
188impl std::str::FromStr for STAlgType {
189    type Err = String;
190
191    fn from_str(s: &str) -> Result<Self, Self::Err> {
192        match s {
193            "typeAny" => Ok(Self::TypeAny),
194            "custom" => Ok(Self::Custom),
195            _ => Err(format!("unknown STAlgType value: {}", s)),
196        }
197    }
198}
199
200pub type STColorType = String;
201
202pub type Guid = String;
203
204pub type OnOff = String;
205
206#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
207pub enum STOnOff1 {
208    #[serde(rename = "on")]
209    On,
210    #[serde(rename = "off")]
211    Off,
212}
213
214impl std::fmt::Display for STOnOff1 {
215    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
216        match self {
217            Self::On => write!(f, "on"),
218            Self::Off => write!(f, "off"),
219        }
220    }
221}
222
223impl std::str::FromStr for STOnOff1 {
224    type Err = String;
225
226    fn from_str(s: &str) -> Result<Self, Self::Err> {
227        match s {
228            "on" => Ok(Self::On),
229            "off" => Ok(Self::Off),
230            _ => Err(format!("unknown STOnOff1 value: {}", s)),
231        }
232    }
233}
234
235pub type STString = String;
236
237pub type STXmlName = String;
238
239#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
240pub enum TrueFalse {
241    #[serde(rename = "t")]
242    T,
243    #[serde(rename = "f")]
244    F,
245    #[serde(rename = "true")]
246    True,
247    #[serde(rename = "false")]
248    False,
249}
250
251impl std::fmt::Display for TrueFalse {
252    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
253        match self {
254            Self::T => write!(f, "t"),
255            Self::F => write!(f, "f"),
256            Self::True => write!(f, "true"),
257            Self::False => write!(f, "false"),
258        }
259    }
260}
261
262impl std::str::FromStr for TrueFalse {
263    type Err = String;
264
265    fn from_str(s: &str) -> Result<Self, Self::Err> {
266        match s {
267            "t" => Ok(Self::T),
268            "f" => Ok(Self::F),
269            "true" => Ok(Self::True),
270            "false" => Ok(Self::False),
271            _ => Err(format!("unknown TrueFalse value: {}", s)),
272        }
273    }
274}
275
276#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
277pub enum STTrueFalseBlank {
278    #[serde(rename = "t")]
279    T,
280    #[serde(rename = "f")]
281    F,
282    #[serde(rename = "true")]
283    True,
284    #[serde(rename = "false")]
285    False,
286    #[serde(rename = "")]
287    Empty,
288}
289
290impl std::fmt::Display for STTrueFalseBlank {
291    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
292        match self {
293            Self::T => write!(f, "t"),
294            Self::F => write!(f, "f"),
295            Self::True => write!(f, "true"),
296            Self::False => write!(f, "false"),
297            Self::Empty => write!(f, ""),
298        }
299    }
300}
301
302impl std::str::FromStr for STTrueFalseBlank {
303    type Err = String;
304
305    fn from_str(s: &str) -> Result<Self, Self::Err> {
306        match s {
307            "t" => Ok(Self::T),
308            "f" => Ok(Self::F),
309            "true" => Ok(Self::True),
310            "false" => Ok(Self::False),
311            "" => Ok(Self::Empty),
312            "True" => Ok(Self::True),
313            "False" => Ok(Self::False),
314            _ => Err(format!("unknown STTrueFalseBlank value: {}", s)),
315        }
316    }
317}
318
319pub type STUnsignedDecimalNumber = u64;
320
321pub type STTwipsMeasure = String;
322
323#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
324pub enum VerticalAlignRun {
325    #[serde(rename = "baseline")]
326    Baseline,
327    #[serde(rename = "superscript")]
328    Superscript,
329    #[serde(rename = "subscript")]
330    Subscript,
331}
332
333impl std::fmt::Display for VerticalAlignRun {
334    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
335        match self {
336            Self::Baseline => write!(f, "baseline"),
337            Self::Superscript => write!(f, "superscript"),
338            Self::Subscript => write!(f, "subscript"),
339        }
340    }
341}
342
343impl std::str::FromStr for VerticalAlignRun {
344    type Err = String;
345
346    fn from_str(s: &str) -> Result<Self, Self::Err> {
347        match s {
348            "baseline" => Ok(Self::Baseline),
349            "superscript" => Ok(Self::Superscript),
350            "subscript" => Ok(Self::Subscript),
351            _ => Err(format!("unknown VerticalAlignRun value: {}", s)),
352        }
353    }
354}
355
356pub type XmlString = String;
357
358#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
359pub enum STXAlign {
360    #[serde(rename = "left")]
361    Left,
362    #[serde(rename = "center")]
363    Center,
364    #[serde(rename = "right")]
365    Right,
366    #[serde(rename = "inside")]
367    Inside,
368    #[serde(rename = "outside")]
369    Outside,
370}
371
372impl std::fmt::Display for STXAlign {
373    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
374        match self {
375            Self::Left => write!(f, "left"),
376            Self::Center => write!(f, "center"),
377            Self::Right => write!(f, "right"),
378            Self::Inside => write!(f, "inside"),
379            Self::Outside => write!(f, "outside"),
380        }
381    }
382}
383
384impl std::str::FromStr for STXAlign {
385    type Err = String;
386
387    fn from_str(s: &str) -> Result<Self, Self::Err> {
388        match s {
389            "left" => Ok(Self::Left),
390            "center" => Ok(Self::Center),
391            "right" => Ok(Self::Right),
392            "inside" => Ok(Self::Inside),
393            "outside" => Ok(Self::Outside),
394            _ => Err(format!("unknown STXAlign value: {}", s)),
395        }
396    }
397}
398
399#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
400pub enum STYAlign {
401    #[serde(rename = "inline")]
402    Inline,
403    #[serde(rename = "top")]
404    Top,
405    #[serde(rename = "center")]
406    Center,
407    #[serde(rename = "bottom")]
408    Bottom,
409    #[serde(rename = "inside")]
410    Inside,
411    #[serde(rename = "outside")]
412    Outside,
413}
414
415impl std::fmt::Display for STYAlign {
416    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
417        match self {
418            Self::Inline => write!(f, "inline"),
419            Self::Top => write!(f, "top"),
420            Self::Center => write!(f, "center"),
421            Self::Bottom => write!(f, "bottom"),
422            Self::Inside => write!(f, "inside"),
423            Self::Outside => write!(f, "outside"),
424        }
425    }
426}
427
428impl std::str::FromStr for STYAlign {
429    type Err = String;
430
431    fn from_str(s: &str) -> Result<Self, Self::Err> {
432        match s {
433            "inline" => Ok(Self::Inline),
434            "top" => Ok(Self::Top),
435            "center" => Ok(Self::Center),
436            "bottom" => Ok(Self::Bottom),
437            "inside" => Ok(Self::Inside),
438            "outside" => Ok(Self::Outside),
439            _ => Err(format!("unknown STYAlign value: {}", s)),
440        }
441    }
442}
443
444#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
445pub enum STConformanceClass {
446    #[serde(rename = "strict")]
447    Strict,
448    #[serde(rename = "transitional")]
449    Transitional,
450}
451
452impl std::fmt::Display for STConformanceClass {
453    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
454        match self {
455            Self::Strict => write!(f, "strict"),
456            Self::Transitional => write!(f, "transitional"),
457        }
458    }
459}
460
461impl std::str::FromStr for STConformanceClass {
462    type Err = String;
463
464    fn from_str(s: &str) -> Result<Self, Self::Err> {
465        match s {
466            "strict" => Ok(Self::Strict),
467            "transitional" => Ok(Self::Transitional),
468            _ => Err(format!("unknown STConformanceClass value: {}", s)),
469        }
470    }
471}
472
473pub type STUniversalMeasure = String;
474
475pub type STPositiveUniversalMeasure = String;
476
477pub type STPercentage = String;
478
479pub type STFixedPercentage = String;
480
481pub type STPositivePercentage = String;
482
483pub type STPositiveFixedPercentage = String;
484
485pub type STRelationshipId = String;
486
487#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
488pub enum FilterOperator {
489    #[serde(rename = "equal")]
490    Equal,
491    #[serde(rename = "lessThan")]
492    LessThan,
493    #[serde(rename = "lessThanOrEqual")]
494    LessThanOrEqual,
495    #[serde(rename = "notEqual")]
496    NotEqual,
497    #[serde(rename = "greaterThanOrEqual")]
498    GreaterThanOrEqual,
499    #[serde(rename = "greaterThan")]
500    GreaterThan,
501}
502
503impl std::fmt::Display for FilterOperator {
504    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
505        match self {
506            Self::Equal => write!(f, "equal"),
507            Self::LessThan => write!(f, "lessThan"),
508            Self::LessThanOrEqual => write!(f, "lessThanOrEqual"),
509            Self::NotEqual => write!(f, "notEqual"),
510            Self::GreaterThanOrEqual => write!(f, "greaterThanOrEqual"),
511            Self::GreaterThan => write!(f, "greaterThan"),
512        }
513    }
514}
515
516impl std::str::FromStr for FilterOperator {
517    type Err = String;
518
519    fn from_str(s: &str) -> Result<Self, Self::Err> {
520        match s {
521            "equal" => Ok(Self::Equal),
522            "lessThan" => Ok(Self::LessThan),
523            "lessThanOrEqual" => Ok(Self::LessThanOrEqual),
524            "notEqual" => Ok(Self::NotEqual),
525            "greaterThanOrEqual" => Ok(Self::GreaterThanOrEqual),
526            "greaterThan" => Ok(Self::GreaterThan),
527            _ => Err(format!("unknown FilterOperator value: {}", s)),
528        }
529    }
530}
531
532#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
533pub enum DynamicFilterType {
534    #[serde(rename = "null")]
535    Null,
536    #[serde(rename = "aboveAverage")]
537    AboveAverage,
538    #[serde(rename = "belowAverage")]
539    BelowAverage,
540    #[serde(rename = "tomorrow")]
541    Tomorrow,
542    #[serde(rename = "today")]
543    Today,
544    #[serde(rename = "yesterday")]
545    Yesterday,
546    #[serde(rename = "nextWeek")]
547    NextWeek,
548    #[serde(rename = "thisWeek")]
549    ThisWeek,
550    #[serde(rename = "lastWeek")]
551    LastWeek,
552    #[serde(rename = "nextMonth")]
553    NextMonth,
554    #[serde(rename = "thisMonth")]
555    ThisMonth,
556    #[serde(rename = "lastMonth")]
557    LastMonth,
558    #[serde(rename = "nextQuarter")]
559    NextQuarter,
560    #[serde(rename = "thisQuarter")]
561    ThisQuarter,
562    #[serde(rename = "lastQuarter")]
563    LastQuarter,
564    #[serde(rename = "nextYear")]
565    NextYear,
566    #[serde(rename = "thisYear")]
567    ThisYear,
568    #[serde(rename = "lastYear")]
569    LastYear,
570    #[serde(rename = "yearToDate")]
571    YearToDate,
572    #[serde(rename = "Q1")]
573    Q1,
574    #[serde(rename = "Q2")]
575    Q2,
576    #[serde(rename = "Q3")]
577    Q3,
578    #[serde(rename = "Q4")]
579    Q4,
580    #[serde(rename = "M1")]
581    M1,
582    #[serde(rename = "M2")]
583    M2,
584    #[serde(rename = "M3")]
585    M3,
586    #[serde(rename = "M4")]
587    M4,
588    #[serde(rename = "M5")]
589    M5,
590    #[serde(rename = "M6")]
591    M6,
592    #[serde(rename = "M7")]
593    M7,
594    #[serde(rename = "M8")]
595    M8,
596    #[serde(rename = "M9")]
597    M9,
598    #[serde(rename = "M10")]
599    M10,
600    #[serde(rename = "M11")]
601    M11,
602    #[serde(rename = "M12")]
603    M12,
604}
605
606impl std::fmt::Display for DynamicFilterType {
607    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
608        match self {
609            Self::Null => write!(f, "null"),
610            Self::AboveAverage => write!(f, "aboveAverage"),
611            Self::BelowAverage => write!(f, "belowAverage"),
612            Self::Tomorrow => write!(f, "tomorrow"),
613            Self::Today => write!(f, "today"),
614            Self::Yesterday => write!(f, "yesterday"),
615            Self::NextWeek => write!(f, "nextWeek"),
616            Self::ThisWeek => write!(f, "thisWeek"),
617            Self::LastWeek => write!(f, "lastWeek"),
618            Self::NextMonth => write!(f, "nextMonth"),
619            Self::ThisMonth => write!(f, "thisMonth"),
620            Self::LastMonth => write!(f, "lastMonth"),
621            Self::NextQuarter => write!(f, "nextQuarter"),
622            Self::ThisQuarter => write!(f, "thisQuarter"),
623            Self::LastQuarter => write!(f, "lastQuarter"),
624            Self::NextYear => write!(f, "nextYear"),
625            Self::ThisYear => write!(f, "thisYear"),
626            Self::LastYear => write!(f, "lastYear"),
627            Self::YearToDate => write!(f, "yearToDate"),
628            Self::Q1 => write!(f, "Q1"),
629            Self::Q2 => write!(f, "Q2"),
630            Self::Q3 => write!(f, "Q3"),
631            Self::Q4 => write!(f, "Q4"),
632            Self::M1 => write!(f, "M1"),
633            Self::M2 => write!(f, "M2"),
634            Self::M3 => write!(f, "M3"),
635            Self::M4 => write!(f, "M4"),
636            Self::M5 => write!(f, "M5"),
637            Self::M6 => write!(f, "M6"),
638            Self::M7 => write!(f, "M7"),
639            Self::M8 => write!(f, "M8"),
640            Self::M9 => write!(f, "M9"),
641            Self::M10 => write!(f, "M10"),
642            Self::M11 => write!(f, "M11"),
643            Self::M12 => write!(f, "M12"),
644        }
645    }
646}
647
648impl std::str::FromStr for DynamicFilterType {
649    type Err = String;
650
651    fn from_str(s: &str) -> Result<Self, Self::Err> {
652        match s {
653            "null" => Ok(Self::Null),
654            "aboveAverage" => Ok(Self::AboveAverage),
655            "belowAverage" => Ok(Self::BelowAverage),
656            "tomorrow" => Ok(Self::Tomorrow),
657            "today" => Ok(Self::Today),
658            "yesterday" => Ok(Self::Yesterday),
659            "nextWeek" => Ok(Self::NextWeek),
660            "thisWeek" => Ok(Self::ThisWeek),
661            "lastWeek" => Ok(Self::LastWeek),
662            "nextMonth" => Ok(Self::NextMonth),
663            "thisMonth" => Ok(Self::ThisMonth),
664            "lastMonth" => Ok(Self::LastMonth),
665            "nextQuarter" => Ok(Self::NextQuarter),
666            "thisQuarter" => Ok(Self::ThisQuarter),
667            "lastQuarter" => Ok(Self::LastQuarter),
668            "nextYear" => Ok(Self::NextYear),
669            "thisYear" => Ok(Self::ThisYear),
670            "lastYear" => Ok(Self::LastYear),
671            "yearToDate" => Ok(Self::YearToDate),
672            "Q1" => Ok(Self::Q1),
673            "Q2" => Ok(Self::Q2),
674            "Q3" => Ok(Self::Q3),
675            "Q4" => Ok(Self::Q4),
676            "M1" => Ok(Self::M1),
677            "M2" => Ok(Self::M2),
678            "M3" => Ok(Self::M3),
679            "M4" => Ok(Self::M4),
680            "M5" => Ok(Self::M5),
681            "M6" => Ok(Self::M6),
682            "M7" => Ok(Self::M7),
683            "M8" => Ok(Self::M8),
684            "M9" => Ok(Self::M9),
685            "M10" => Ok(Self::M10),
686            "M11" => Ok(Self::M11),
687            "M12" => Ok(Self::M12),
688            _ => Err(format!("unknown DynamicFilterType value: {}", s)),
689        }
690    }
691}
692
693#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
694pub enum IconSetType {
695    #[serde(rename = "3Arrows")]
696    _3Arrows,
697    #[serde(rename = "3ArrowsGray")]
698    _3ArrowsGray,
699    #[serde(rename = "3Flags")]
700    _3Flags,
701    #[serde(rename = "3TrafficLights1")]
702    _3TrafficLights1,
703    #[serde(rename = "3TrafficLights2")]
704    _3TrafficLights2,
705    #[serde(rename = "3Signs")]
706    _3Signs,
707    #[serde(rename = "3Symbols")]
708    _3Symbols,
709    #[serde(rename = "3Symbols2")]
710    _3Symbols2,
711    #[serde(rename = "4Arrows")]
712    _4Arrows,
713    #[serde(rename = "4ArrowsGray")]
714    _4ArrowsGray,
715    #[serde(rename = "4RedToBlack")]
716    _4RedToBlack,
717    #[serde(rename = "4Rating")]
718    _4Rating,
719    #[serde(rename = "4TrafficLights")]
720    _4TrafficLights,
721    #[serde(rename = "5Arrows")]
722    _5Arrows,
723    #[serde(rename = "5ArrowsGray")]
724    _5ArrowsGray,
725    #[serde(rename = "5Rating")]
726    _5Rating,
727    #[serde(rename = "5Quarters")]
728    _5Quarters,
729}
730
731impl std::fmt::Display for IconSetType {
732    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
733        match self {
734            Self::_3Arrows => write!(f, "3Arrows"),
735            Self::_3ArrowsGray => write!(f, "3ArrowsGray"),
736            Self::_3Flags => write!(f, "3Flags"),
737            Self::_3TrafficLights1 => write!(f, "3TrafficLights1"),
738            Self::_3TrafficLights2 => write!(f, "3TrafficLights2"),
739            Self::_3Signs => write!(f, "3Signs"),
740            Self::_3Symbols => write!(f, "3Symbols"),
741            Self::_3Symbols2 => write!(f, "3Symbols2"),
742            Self::_4Arrows => write!(f, "4Arrows"),
743            Self::_4ArrowsGray => write!(f, "4ArrowsGray"),
744            Self::_4RedToBlack => write!(f, "4RedToBlack"),
745            Self::_4Rating => write!(f, "4Rating"),
746            Self::_4TrafficLights => write!(f, "4TrafficLights"),
747            Self::_5Arrows => write!(f, "5Arrows"),
748            Self::_5ArrowsGray => write!(f, "5ArrowsGray"),
749            Self::_5Rating => write!(f, "5Rating"),
750            Self::_5Quarters => write!(f, "5Quarters"),
751        }
752    }
753}
754
755impl std::str::FromStr for IconSetType {
756    type Err = String;
757
758    fn from_str(s: &str) -> Result<Self, Self::Err> {
759        match s {
760            "3Arrows" => Ok(Self::_3Arrows),
761            "3ArrowsGray" => Ok(Self::_3ArrowsGray),
762            "3Flags" => Ok(Self::_3Flags),
763            "3TrafficLights1" => Ok(Self::_3TrafficLights1),
764            "3TrafficLights2" => Ok(Self::_3TrafficLights2),
765            "3Signs" => Ok(Self::_3Signs),
766            "3Symbols" => Ok(Self::_3Symbols),
767            "3Symbols2" => Ok(Self::_3Symbols2),
768            "4Arrows" => Ok(Self::_4Arrows),
769            "4ArrowsGray" => Ok(Self::_4ArrowsGray),
770            "4RedToBlack" => Ok(Self::_4RedToBlack),
771            "4Rating" => Ok(Self::_4Rating),
772            "4TrafficLights" => Ok(Self::_4TrafficLights),
773            "5Arrows" => Ok(Self::_5Arrows),
774            "5ArrowsGray" => Ok(Self::_5ArrowsGray),
775            "5Rating" => Ok(Self::_5Rating),
776            "5Quarters" => Ok(Self::_5Quarters),
777            _ => Err(format!("unknown IconSetType value: {}", s)),
778        }
779    }
780}
781
782#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
783pub enum SortBy {
784    #[serde(rename = "value")]
785    Value,
786    #[serde(rename = "cellColor")]
787    CellColor,
788    #[serde(rename = "fontColor")]
789    FontColor,
790    #[serde(rename = "icon")]
791    Icon,
792}
793
794impl std::fmt::Display for SortBy {
795    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
796        match self {
797            Self::Value => write!(f, "value"),
798            Self::CellColor => write!(f, "cellColor"),
799            Self::FontColor => write!(f, "fontColor"),
800            Self::Icon => write!(f, "icon"),
801        }
802    }
803}
804
805impl std::str::FromStr for SortBy {
806    type Err = String;
807
808    fn from_str(s: &str) -> Result<Self, Self::Err> {
809        match s {
810            "value" => Ok(Self::Value),
811            "cellColor" => Ok(Self::CellColor),
812            "fontColor" => Ok(Self::FontColor),
813            "icon" => Ok(Self::Icon),
814            _ => Err(format!("unknown SortBy value: {}", s)),
815        }
816    }
817}
818
819#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
820pub enum SortMethod {
821    #[serde(rename = "stroke")]
822    Stroke,
823    #[serde(rename = "pinYin")]
824    PinYin,
825    #[serde(rename = "none")]
826    None,
827}
828
829impl std::fmt::Display for SortMethod {
830    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
831        match self {
832            Self::Stroke => write!(f, "stroke"),
833            Self::PinYin => write!(f, "pinYin"),
834            Self::None => write!(f, "none"),
835        }
836    }
837}
838
839impl std::str::FromStr for SortMethod {
840    type Err = String;
841
842    fn from_str(s: &str) -> Result<Self, Self::Err> {
843        match s {
844            "stroke" => Ok(Self::Stroke),
845            "pinYin" => Ok(Self::PinYin),
846            "none" => Ok(Self::None),
847            _ => Err(format!("unknown SortMethod value: {}", s)),
848        }
849    }
850}
851
852#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
853pub enum STDateTimeGrouping {
854    #[serde(rename = "year")]
855    Year,
856    #[serde(rename = "month")]
857    Month,
858    #[serde(rename = "day")]
859    Day,
860    #[serde(rename = "hour")]
861    Hour,
862    #[serde(rename = "minute")]
863    Minute,
864    #[serde(rename = "second")]
865    Second,
866}
867
868impl std::fmt::Display for STDateTimeGrouping {
869    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
870        match self {
871            Self::Year => write!(f, "year"),
872            Self::Month => write!(f, "month"),
873            Self::Day => write!(f, "day"),
874            Self::Hour => write!(f, "hour"),
875            Self::Minute => write!(f, "minute"),
876            Self::Second => write!(f, "second"),
877        }
878    }
879}
880
881impl std::str::FromStr for STDateTimeGrouping {
882    type Err = String;
883
884    fn from_str(s: &str) -> Result<Self, Self::Err> {
885        match s {
886            "year" => Ok(Self::Year),
887            "month" => Ok(Self::Month),
888            "day" => Ok(Self::Day),
889            "hour" => Ok(Self::Hour),
890            "minute" => Ok(Self::Minute),
891            "second" => Ok(Self::Second),
892            _ => Err(format!("unknown STDateTimeGrouping value: {}", s)),
893        }
894    }
895}
896
897pub type CellRef = String;
898
899pub type Reference = String;
900
901pub type STRefA = String;
902
903pub type SquareRef = String;
904
905pub type STFormula = XmlString;
906
907pub type STUnsignedIntHex = Vec<u8>;
908
909pub type STUnsignedShortHex = Vec<u8>;
910
911#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
912pub enum STTextHAlign {
913    #[serde(rename = "left")]
914    Left,
915    #[serde(rename = "center")]
916    Center,
917    #[serde(rename = "right")]
918    Right,
919    #[serde(rename = "justify")]
920    Justify,
921    #[serde(rename = "distributed")]
922    Distributed,
923}
924
925impl std::fmt::Display for STTextHAlign {
926    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
927        match self {
928            Self::Left => write!(f, "left"),
929            Self::Center => write!(f, "center"),
930            Self::Right => write!(f, "right"),
931            Self::Justify => write!(f, "justify"),
932            Self::Distributed => write!(f, "distributed"),
933        }
934    }
935}
936
937impl std::str::FromStr for STTextHAlign {
938    type Err = String;
939
940    fn from_str(s: &str) -> Result<Self, Self::Err> {
941        match s {
942            "left" => Ok(Self::Left),
943            "center" => Ok(Self::Center),
944            "right" => Ok(Self::Right),
945            "justify" => Ok(Self::Justify),
946            "distributed" => Ok(Self::Distributed),
947            _ => Err(format!("unknown STTextHAlign value: {}", s)),
948        }
949    }
950}
951
952#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
953pub enum STTextVAlign {
954    #[serde(rename = "top")]
955    Top,
956    #[serde(rename = "center")]
957    Center,
958    #[serde(rename = "bottom")]
959    Bottom,
960    #[serde(rename = "justify")]
961    Justify,
962    #[serde(rename = "distributed")]
963    Distributed,
964}
965
966impl std::fmt::Display for STTextVAlign {
967    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
968        match self {
969            Self::Top => write!(f, "top"),
970            Self::Center => write!(f, "center"),
971            Self::Bottom => write!(f, "bottom"),
972            Self::Justify => write!(f, "justify"),
973            Self::Distributed => write!(f, "distributed"),
974        }
975    }
976}
977
978impl std::str::FromStr for STTextVAlign {
979    type Err = String;
980
981    fn from_str(s: &str) -> Result<Self, Self::Err> {
982        match s {
983            "top" => Ok(Self::Top),
984            "center" => Ok(Self::Center),
985            "bottom" => Ok(Self::Bottom),
986            "justify" => Ok(Self::Justify),
987            "distributed" => Ok(Self::Distributed),
988            _ => Err(format!("unknown STTextVAlign value: {}", s)),
989        }
990    }
991}
992
993#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
994pub enum STCredMethod {
995    #[serde(rename = "integrated")]
996    Integrated,
997    #[serde(rename = "none")]
998    None,
999    #[serde(rename = "stored")]
1000    Stored,
1001    #[serde(rename = "prompt")]
1002    Prompt,
1003}
1004
1005impl std::fmt::Display for STCredMethod {
1006    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1007        match self {
1008            Self::Integrated => write!(f, "integrated"),
1009            Self::None => write!(f, "none"),
1010            Self::Stored => write!(f, "stored"),
1011            Self::Prompt => write!(f, "prompt"),
1012        }
1013    }
1014}
1015
1016impl std::str::FromStr for STCredMethod {
1017    type Err = String;
1018
1019    fn from_str(s: &str) -> Result<Self, Self::Err> {
1020        match s {
1021            "integrated" => Ok(Self::Integrated),
1022            "none" => Ok(Self::None),
1023            "stored" => Ok(Self::Stored),
1024            "prompt" => Ok(Self::Prompt),
1025            _ => Err(format!("unknown STCredMethod value: {}", s)),
1026        }
1027    }
1028}
1029
1030#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1031pub enum STHtmlFmt {
1032    #[serde(rename = "none")]
1033    None,
1034    #[serde(rename = "rtf")]
1035    Rtf,
1036    #[serde(rename = "all")]
1037    All,
1038}
1039
1040impl std::fmt::Display for STHtmlFmt {
1041    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1042        match self {
1043            Self::None => write!(f, "none"),
1044            Self::Rtf => write!(f, "rtf"),
1045            Self::All => write!(f, "all"),
1046        }
1047    }
1048}
1049
1050impl std::str::FromStr for STHtmlFmt {
1051    type Err = String;
1052
1053    fn from_str(s: &str) -> Result<Self, Self::Err> {
1054        match s {
1055            "none" => Ok(Self::None),
1056            "rtf" => Ok(Self::Rtf),
1057            "all" => Ok(Self::All),
1058            _ => Err(format!("unknown STHtmlFmt value: {}", s)),
1059        }
1060    }
1061}
1062
1063#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1064pub enum STParameterType {
1065    #[serde(rename = "prompt")]
1066    Prompt,
1067    #[serde(rename = "value")]
1068    Value,
1069    #[serde(rename = "cell")]
1070    Cell,
1071}
1072
1073impl std::fmt::Display for STParameterType {
1074    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1075        match self {
1076            Self::Prompt => write!(f, "prompt"),
1077            Self::Value => write!(f, "value"),
1078            Self::Cell => write!(f, "cell"),
1079        }
1080    }
1081}
1082
1083impl std::str::FromStr for STParameterType {
1084    type Err = String;
1085
1086    fn from_str(s: &str) -> Result<Self, Self::Err> {
1087        match s {
1088            "prompt" => Ok(Self::Prompt),
1089            "value" => Ok(Self::Value),
1090            "cell" => Ok(Self::Cell),
1091            _ => Err(format!("unknown STParameterType value: {}", s)),
1092        }
1093    }
1094}
1095
1096#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1097pub enum STFileType {
1098    #[serde(rename = "mac")]
1099    Mac,
1100    #[serde(rename = "win")]
1101    Win,
1102    #[serde(rename = "dos")]
1103    Dos,
1104    #[serde(rename = "lin")]
1105    Lin,
1106    #[serde(rename = "other")]
1107    Other,
1108}
1109
1110impl std::fmt::Display for STFileType {
1111    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1112        match self {
1113            Self::Mac => write!(f, "mac"),
1114            Self::Win => write!(f, "win"),
1115            Self::Dos => write!(f, "dos"),
1116            Self::Lin => write!(f, "lin"),
1117            Self::Other => write!(f, "other"),
1118        }
1119    }
1120}
1121
1122impl std::str::FromStr for STFileType {
1123    type Err = String;
1124
1125    fn from_str(s: &str) -> Result<Self, Self::Err> {
1126        match s {
1127            "mac" => Ok(Self::Mac),
1128            "win" => Ok(Self::Win),
1129            "dos" => Ok(Self::Dos),
1130            "lin" => Ok(Self::Lin),
1131            "other" => Ok(Self::Other),
1132            _ => Err(format!("unknown STFileType value: {}", s)),
1133        }
1134    }
1135}
1136
1137#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1138pub enum STQualifier {
1139    #[serde(rename = "doubleQuote")]
1140    DoubleQuote,
1141    #[serde(rename = "singleQuote")]
1142    SingleQuote,
1143    #[serde(rename = "none")]
1144    None,
1145}
1146
1147impl std::fmt::Display for STQualifier {
1148    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1149        match self {
1150            Self::DoubleQuote => write!(f, "doubleQuote"),
1151            Self::SingleQuote => write!(f, "singleQuote"),
1152            Self::None => write!(f, "none"),
1153        }
1154    }
1155}
1156
1157impl std::str::FromStr for STQualifier {
1158    type Err = String;
1159
1160    fn from_str(s: &str) -> Result<Self, Self::Err> {
1161        match s {
1162            "doubleQuote" => Ok(Self::DoubleQuote),
1163            "singleQuote" => Ok(Self::SingleQuote),
1164            "none" => Ok(Self::None),
1165            _ => Err(format!("unknown STQualifier value: {}", s)),
1166        }
1167    }
1168}
1169
1170#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1171pub enum STExternalConnectionType {
1172    #[serde(rename = "general")]
1173    General,
1174    #[serde(rename = "text")]
1175    Text,
1176    #[serde(rename = "MDY")]
1177    MDY,
1178    #[serde(rename = "DMY")]
1179    DMY,
1180    #[serde(rename = "YMD")]
1181    YMD,
1182    #[serde(rename = "MYD")]
1183    MYD,
1184    #[serde(rename = "DYM")]
1185    DYM,
1186    #[serde(rename = "YDM")]
1187    YDM,
1188    #[serde(rename = "skip")]
1189    Skip,
1190    #[serde(rename = "EMD")]
1191    EMD,
1192}
1193
1194impl std::fmt::Display for STExternalConnectionType {
1195    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1196        match self {
1197            Self::General => write!(f, "general"),
1198            Self::Text => write!(f, "text"),
1199            Self::MDY => write!(f, "MDY"),
1200            Self::DMY => write!(f, "DMY"),
1201            Self::YMD => write!(f, "YMD"),
1202            Self::MYD => write!(f, "MYD"),
1203            Self::DYM => write!(f, "DYM"),
1204            Self::YDM => write!(f, "YDM"),
1205            Self::Skip => write!(f, "skip"),
1206            Self::EMD => write!(f, "EMD"),
1207        }
1208    }
1209}
1210
1211impl std::str::FromStr for STExternalConnectionType {
1212    type Err = String;
1213
1214    fn from_str(s: &str) -> Result<Self, Self::Err> {
1215        match s {
1216            "general" => Ok(Self::General),
1217            "text" => Ok(Self::Text),
1218            "MDY" => Ok(Self::MDY),
1219            "DMY" => Ok(Self::DMY),
1220            "YMD" => Ok(Self::YMD),
1221            "MYD" => Ok(Self::MYD),
1222            "DYM" => Ok(Self::DYM),
1223            "YDM" => Ok(Self::YDM),
1224            "skip" => Ok(Self::Skip),
1225            "EMD" => Ok(Self::EMD),
1226            _ => Err(format!("unknown STExternalConnectionType value: {}", s)),
1227        }
1228    }
1229}
1230
1231#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1232pub enum STSourceType {
1233    #[serde(rename = "worksheet")]
1234    Worksheet,
1235    #[serde(rename = "external")]
1236    External,
1237    #[serde(rename = "consolidation")]
1238    Consolidation,
1239    #[serde(rename = "scenario")]
1240    Scenario,
1241}
1242
1243impl std::fmt::Display for STSourceType {
1244    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1245        match self {
1246            Self::Worksheet => write!(f, "worksheet"),
1247            Self::External => write!(f, "external"),
1248            Self::Consolidation => write!(f, "consolidation"),
1249            Self::Scenario => write!(f, "scenario"),
1250        }
1251    }
1252}
1253
1254impl std::str::FromStr for STSourceType {
1255    type Err = String;
1256
1257    fn from_str(s: &str) -> Result<Self, Self::Err> {
1258        match s {
1259            "worksheet" => Ok(Self::Worksheet),
1260            "external" => Ok(Self::External),
1261            "consolidation" => Ok(Self::Consolidation),
1262            "scenario" => Ok(Self::Scenario),
1263            _ => Err(format!("unknown STSourceType value: {}", s)),
1264        }
1265    }
1266}
1267
1268#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1269pub enum STGroupBy {
1270    #[serde(rename = "range")]
1271    Range,
1272    #[serde(rename = "seconds")]
1273    Seconds,
1274    #[serde(rename = "minutes")]
1275    Minutes,
1276    #[serde(rename = "hours")]
1277    Hours,
1278    #[serde(rename = "days")]
1279    Days,
1280    #[serde(rename = "months")]
1281    Months,
1282    #[serde(rename = "quarters")]
1283    Quarters,
1284    #[serde(rename = "years")]
1285    Years,
1286}
1287
1288impl std::fmt::Display for STGroupBy {
1289    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1290        match self {
1291            Self::Range => write!(f, "range"),
1292            Self::Seconds => write!(f, "seconds"),
1293            Self::Minutes => write!(f, "minutes"),
1294            Self::Hours => write!(f, "hours"),
1295            Self::Days => write!(f, "days"),
1296            Self::Months => write!(f, "months"),
1297            Self::Quarters => write!(f, "quarters"),
1298            Self::Years => write!(f, "years"),
1299        }
1300    }
1301}
1302
1303impl std::str::FromStr for STGroupBy {
1304    type Err = String;
1305
1306    fn from_str(s: &str) -> Result<Self, Self::Err> {
1307        match s {
1308            "range" => Ok(Self::Range),
1309            "seconds" => Ok(Self::Seconds),
1310            "minutes" => Ok(Self::Minutes),
1311            "hours" => Ok(Self::Hours),
1312            "days" => Ok(Self::Days),
1313            "months" => Ok(Self::Months),
1314            "quarters" => Ok(Self::Quarters),
1315            "years" => Ok(Self::Years),
1316            _ => Err(format!("unknown STGroupBy value: {}", s)),
1317        }
1318    }
1319}
1320
1321#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1322pub enum STSortType {
1323    #[serde(rename = "none")]
1324    None,
1325    #[serde(rename = "ascending")]
1326    Ascending,
1327    #[serde(rename = "descending")]
1328    Descending,
1329    #[serde(rename = "ascendingAlpha")]
1330    AscendingAlpha,
1331    #[serde(rename = "descendingAlpha")]
1332    DescendingAlpha,
1333    #[serde(rename = "ascendingNatural")]
1334    AscendingNatural,
1335    #[serde(rename = "descendingNatural")]
1336    DescendingNatural,
1337}
1338
1339impl std::fmt::Display for STSortType {
1340    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1341        match self {
1342            Self::None => write!(f, "none"),
1343            Self::Ascending => write!(f, "ascending"),
1344            Self::Descending => write!(f, "descending"),
1345            Self::AscendingAlpha => write!(f, "ascendingAlpha"),
1346            Self::DescendingAlpha => write!(f, "descendingAlpha"),
1347            Self::AscendingNatural => write!(f, "ascendingNatural"),
1348            Self::DescendingNatural => write!(f, "descendingNatural"),
1349        }
1350    }
1351}
1352
1353impl std::str::FromStr for STSortType {
1354    type Err = String;
1355
1356    fn from_str(s: &str) -> Result<Self, Self::Err> {
1357        match s {
1358            "none" => Ok(Self::None),
1359            "ascending" => Ok(Self::Ascending),
1360            "descending" => Ok(Self::Descending),
1361            "ascendingAlpha" => Ok(Self::AscendingAlpha),
1362            "descendingAlpha" => Ok(Self::DescendingAlpha),
1363            "ascendingNatural" => Ok(Self::AscendingNatural),
1364            "descendingNatural" => Ok(Self::DescendingNatural),
1365            _ => Err(format!("unknown STSortType value: {}", s)),
1366        }
1367    }
1368}
1369
1370#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1371pub enum STScope {
1372    #[serde(rename = "selection")]
1373    Selection,
1374    #[serde(rename = "data")]
1375    Data,
1376    #[serde(rename = "field")]
1377    Field,
1378}
1379
1380impl std::fmt::Display for STScope {
1381    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1382        match self {
1383            Self::Selection => write!(f, "selection"),
1384            Self::Data => write!(f, "data"),
1385            Self::Field => write!(f, "field"),
1386        }
1387    }
1388}
1389
1390impl std::str::FromStr for STScope {
1391    type Err = String;
1392
1393    fn from_str(s: &str) -> Result<Self, Self::Err> {
1394        match s {
1395            "selection" => Ok(Self::Selection),
1396            "data" => Ok(Self::Data),
1397            "field" => Ok(Self::Field),
1398            _ => Err(format!("unknown STScope value: {}", s)),
1399        }
1400    }
1401}
1402
1403#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1404pub enum STType {
1405    #[serde(rename = "none")]
1406    None,
1407    #[serde(rename = "all")]
1408    All,
1409    #[serde(rename = "row")]
1410    Row,
1411    #[serde(rename = "column")]
1412    Column,
1413}
1414
1415impl std::fmt::Display for STType {
1416    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1417        match self {
1418            Self::None => write!(f, "none"),
1419            Self::All => write!(f, "all"),
1420            Self::Row => write!(f, "row"),
1421            Self::Column => write!(f, "column"),
1422        }
1423    }
1424}
1425
1426impl std::str::FromStr for STType {
1427    type Err = String;
1428
1429    fn from_str(s: &str) -> Result<Self, Self::Err> {
1430        match s {
1431            "none" => Ok(Self::None),
1432            "all" => Ok(Self::All),
1433            "row" => Ok(Self::Row),
1434            "column" => Ok(Self::Column),
1435            _ => Err(format!("unknown STType value: {}", s)),
1436        }
1437    }
1438}
1439
1440#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1441pub enum STShowDataAs {
1442    #[serde(rename = "normal")]
1443    Normal,
1444    #[serde(rename = "difference")]
1445    Difference,
1446    #[serde(rename = "percent")]
1447    Percent,
1448    #[serde(rename = "percentDiff")]
1449    PercentDiff,
1450    #[serde(rename = "runTotal")]
1451    RunTotal,
1452    #[serde(rename = "percentOfRow")]
1453    PercentOfRow,
1454    #[serde(rename = "percentOfCol")]
1455    PercentOfCol,
1456    #[serde(rename = "percentOfTotal")]
1457    PercentOfTotal,
1458    #[serde(rename = "index")]
1459    Index,
1460}
1461
1462impl std::fmt::Display for STShowDataAs {
1463    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1464        match self {
1465            Self::Normal => write!(f, "normal"),
1466            Self::Difference => write!(f, "difference"),
1467            Self::Percent => write!(f, "percent"),
1468            Self::PercentDiff => write!(f, "percentDiff"),
1469            Self::RunTotal => write!(f, "runTotal"),
1470            Self::PercentOfRow => write!(f, "percentOfRow"),
1471            Self::PercentOfCol => write!(f, "percentOfCol"),
1472            Self::PercentOfTotal => write!(f, "percentOfTotal"),
1473            Self::Index => write!(f, "index"),
1474        }
1475    }
1476}
1477
1478impl std::str::FromStr for STShowDataAs {
1479    type Err = String;
1480
1481    fn from_str(s: &str) -> Result<Self, Self::Err> {
1482        match s {
1483            "normal" => Ok(Self::Normal),
1484            "difference" => Ok(Self::Difference),
1485            "percent" => Ok(Self::Percent),
1486            "percentDiff" => Ok(Self::PercentDiff),
1487            "runTotal" => Ok(Self::RunTotal),
1488            "percentOfRow" => Ok(Self::PercentOfRow),
1489            "percentOfCol" => Ok(Self::PercentOfCol),
1490            "percentOfTotal" => Ok(Self::PercentOfTotal),
1491            "index" => Ok(Self::Index),
1492            _ => Err(format!("unknown STShowDataAs value: {}", s)),
1493        }
1494    }
1495}
1496
1497#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1498pub enum STItemType {
1499    #[serde(rename = "data")]
1500    Data,
1501    #[serde(rename = "default")]
1502    Default,
1503    #[serde(rename = "sum")]
1504    Sum,
1505    #[serde(rename = "countA")]
1506    CountA,
1507    #[serde(rename = "avg")]
1508    Avg,
1509    #[serde(rename = "max")]
1510    Max,
1511    #[serde(rename = "min")]
1512    Min,
1513    #[serde(rename = "product")]
1514    Product,
1515    #[serde(rename = "count")]
1516    Count,
1517    #[serde(rename = "stdDev")]
1518    StdDev,
1519    #[serde(rename = "stdDevP")]
1520    StdDevP,
1521    #[serde(rename = "var")]
1522    Var,
1523    #[serde(rename = "varP")]
1524    VarP,
1525    #[serde(rename = "grand")]
1526    Grand,
1527    #[serde(rename = "blank")]
1528    Blank,
1529}
1530
1531impl std::fmt::Display for STItemType {
1532    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1533        match self {
1534            Self::Data => write!(f, "data"),
1535            Self::Default => write!(f, "default"),
1536            Self::Sum => write!(f, "sum"),
1537            Self::CountA => write!(f, "countA"),
1538            Self::Avg => write!(f, "avg"),
1539            Self::Max => write!(f, "max"),
1540            Self::Min => write!(f, "min"),
1541            Self::Product => write!(f, "product"),
1542            Self::Count => write!(f, "count"),
1543            Self::StdDev => write!(f, "stdDev"),
1544            Self::StdDevP => write!(f, "stdDevP"),
1545            Self::Var => write!(f, "var"),
1546            Self::VarP => write!(f, "varP"),
1547            Self::Grand => write!(f, "grand"),
1548            Self::Blank => write!(f, "blank"),
1549        }
1550    }
1551}
1552
1553impl std::str::FromStr for STItemType {
1554    type Err = String;
1555
1556    fn from_str(s: &str) -> Result<Self, Self::Err> {
1557        match s {
1558            "data" => Ok(Self::Data),
1559            "default" => Ok(Self::Default),
1560            "sum" => Ok(Self::Sum),
1561            "countA" => Ok(Self::CountA),
1562            "avg" => Ok(Self::Avg),
1563            "max" => Ok(Self::Max),
1564            "min" => Ok(Self::Min),
1565            "product" => Ok(Self::Product),
1566            "count" => Ok(Self::Count),
1567            "stdDev" => Ok(Self::StdDev),
1568            "stdDevP" => Ok(Self::StdDevP),
1569            "var" => Ok(Self::Var),
1570            "varP" => Ok(Self::VarP),
1571            "grand" => Ok(Self::Grand),
1572            "blank" => Ok(Self::Blank),
1573            _ => Err(format!("unknown STItemType value: {}", s)),
1574        }
1575    }
1576}
1577
1578#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1579pub enum STFormatAction {
1580    #[serde(rename = "blank")]
1581    Blank,
1582    #[serde(rename = "formatting")]
1583    Formatting,
1584    #[serde(rename = "drill")]
1585    Drill,
1586    #[serde(rename = "formula")]
1587    Formula,
1588}
1589
1590impl std::fmt::Display for STFormatAction {
1591    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1592        match self {
1593            Self::Blank => write!(f, "blank"),
1594            Self::Formatting => write!(f, "formatting"),
1595            Self::Drill => write!(f, "drill"),
1596            Self::Formula => write!(f, "formula"),
1597        }
1598    }
1599}
1600
1601impl std::str::FromStr for STFormatAction {
1602    type Err = String;
1603
1604    fn from_str(s: &str) -> Result<Self, Self::Err> {
1605        match s {
1606            "blank" => Ok(Self::Blank),
1607            "formatting" => Ok(Self::Formatting),
1608            "drill" => Ok(Self::Drill),
1609            "formula" => Ok(Self::Formula),
1610            _ => Err(format!("unknown STFormatAction value: {}", s)),
1611        }
1612    }
1613}
1614
1615#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1616pub enum STFieldSortType {
1617    #[serde(rename = "manual")]
1618    Manual,
1619    #[serde(rename = "ascending")]
1620    Ascending,
1621    #[serde(rename = "descending")]
1622    Descending,
1623}
1624
1625impl std::fmt::Display for STFieldSortType {
1626    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1627        match self {
1628            Self::Manual => write!(f, "manual"),
1629            Self::Ascending => write!(f, "ascending"),
1630            Self::Descending => write!(f, "descending"),
1631        }
1632    }
1633}
1634
1635impl std::str::FromStr for STFieldSortType {
1636    type Err = String;
1637
1638    fn from_str(s: &str) -> Result<Self, Self::Err> {
1639        match s {
1640            "manual" => Ok(Self::Manual),
1641            "ascending" => Ok(Self::Ascending),
1642            "descending" => Ok(Self::Descending),
1643            _ => Err(format!("unknown STFieldSortType value: {}", s)),
1644        }
1645    }
1646}
1647
1648#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1649pub enum STPivotFilterType {
1650    #[serde(rename = "unknown")]
1651    Unknown,
1652    #[serde(rename = "count")]
1653    Count,
1654    #[serde(rename = "percent")]
1655    Percent,
1656    #[serde(rename = "sum")]
1657    Sum,
1658    #[serde(rename = "captionEqual")]
1659    CaptionEqual,
1660    #[serde(rename = "captionNotEqual")]
1661    CaptionNotEqual,
1662    #[serde(rename = "captionBeginsWith")]
1663    CaptionBeginsWith,
1664    #[serde(rename = "captionNotBeginsWith")]
1665    CaptionNotBeginsWith,
1666    #[serde(rename = "captionEndsWith")]
1667    CaptionEndsWith,
1668    #[serde(rename = "captionNotEndsWith")]
1669    CaptionNotEndsWith,
1670    #[serde(rename = "captionContains")]
1671    CaptionContains,
1672    #[serde(rename = "captionNotContains")]
1673    CaptionNotContains,
1674    #[serde(rename = "captionGreaterThan")]
1675    CaptionGreaterThan,
1676    #[serde(rename = "captionGreaterThanOrEqual")]
1677    CaptionGreaterThanOrEqual,
1678    #[serde(rename = "captionLessThan")]
1679    CaptionLessThan,
1680    #[serde(rename = "captionLessThanOrEqual")]
1681    CaptionLessThanOrEqual,
1682    #[serde(rename = "captionBetween")]
1683    CaptionBetween,
1684    #[serde(rename = "captionNotBetween")]
1685    CaptionNotBetween,
1686    #[serde(rename = "valueEqual")]
1687    ValueEqual,
1688    #[serde(rename = "valueNotEqual")]
1689    ValueNotEqual,
1690    #[serde(rename = "valueGreaterThan")]
1691    ValueGreaterThan,
1692    #[serde(rename = "valueGreaterThanOrEqual")]
1693    ValueGreaterThanOrEqual,
1694    #[serde(rename = "valueLessThan")]
1695    ValueLessThan,
1696    #[serde(rename = "valueLessThanOrEqual")]
1697    ValueLessThanOrEqual,
1698    #[serde(rename = "valueBetween")]
1699    ValueBetween,
1700    #[serde(rename = "valueNotBetween")]
1701    ValueNotBetween,
1702    #[serde(rename = "dateEqual")]
1703    DateEqual,
1704    #[serde(rename = "dateNotEqual")]
1705    DateNotEqual,
1706    #[serde(rename = "dateOlderThan")]
1707    DateOlderThan,
1708    #[serde(rename = "dateOlderThanOrEqual")]
1709    DateOlderThanOrEqual,
1710    #[serde(rename = "dateNewerThan")]
1711    DateNewerThan,
1712    #[serde(rename = "dateNewerThanOrEqual")]
1713    DateNewerThanOrEqual,
1714    #[serde(rename = "dateBetween")]
1715    DateBetween,
1716    #[serde(rename = "dateNotBetween")]
1717    DateNotBetween,
1718    #[serde(rename = "tomorrow")]
1719    Tomorrow,
1720    #[serde(rename = "today")]
1721    Today,
1722    #[serde(rename = "yesterday")]
1723    Yesterday,
1724    #[serde(rename = "nextWeek")]
1725    NextWeek,
1726    #[serde(rename = "thisWeek")]
1727    ThisWeek,
1728    #[serde(rename = "lastWeek")]
1729    LastWeek,
1730    #[serde(rename = "nextMonth")]
1731    NextMonth,
1732    #[serde(rename = "thisMonth")]
1733    ThisMonth,
1734    #[serde(rename = "lastMonth")]
1735    LastMonth,
1736    #[serde(rename = "nextQuarter")]
1737    NextQuarter,
1738    #[serde(rename = "thisQuarter")]
1739    ThisQuarter,
1740    #[serde(rename = "lastQuarter")]
1741    LastQuarter,
1742    #[serde(rename = "nextYear")]
1743    NextYear,
1744    #[serde(rename = "thisYear")]
1745    ThisYear,
1746    #[serde(rename = "lastYear")]
1747    LastYear,
1748    #[serde(rename = "yearToDate")]
1749    YearToDate,
1750    #[serde(rename = "Q1")]
1751    Q1,
1752    #[serde(rename = "Q2")]
1753    Q2,
1754    #[serde(rename = "Q3")]
1755    Q3,
1756    #[serde(rename = "Q4")]
1757    Q4,
1758    #[serde(rename = "M1")]
1759    M1,
1760    #[serde(rename = "M2")]
1761    M2,
1762    #[serde(rename = "M3")]
1763    M3,
1764    #[serde(rename = "M4")]
1765    M4,
1766    #[serde(rename = "M5")]
1767    M5,
1768    #[serde(rename = "M6")]
1769    M6,
1770    #[serde(rename = "M7")]
1771    M7,
1772    #[serde(rename = "M8")]
1773    M8,
1774    #[serde(rename = "M9")]
1775    M9,
1776    #[serde(rename = "M10")]
1777    M10,
1778    #[serde(rename = "M11")]
1779    M11,
1780    #[serde(rename = "M12")]
1781    M12,
1782}
1783
1784impl std::fmt::Display for STPivotFilterType {
1785    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1786        match self {
1787            Self::Unknown => write!(f, "unknown"),
1788            Self::Count => write!(f, "count"),
1789            Self::Percent => write!(f, "percent"),
1790            Self::Sum => write!(f, "sum"),
1791            Self::CaptionEqual => write!(f, "captionEqual"),
1792            Self::CaptionNotEqual => write!(f, "captionNotEqual"),
1793            Self::CaptionBeginsWith => write!(f, "captionBeginsWith"),
1794            Self::CaptionNotBeginsWith => write!(f, "captionNotBeginsWith"),
1795            Self::CaptionEndsWith => write!(f, "captionEndsWith"),
1796            Self::CaptionNotEndsWith => write!(f, "captionNotEndsWith"),
1797            Self::CaptionContains => write!(f, "captionContains"),
1798            Self::CaptionNotContains => write!(f, "captionNotContains"),
1799            Self::CaptionGreaterThan => write!(f, "captionGreaterThan"),
1800            Self::CaptionGreaterThanOrEqual => write!(f, "captionGreaterThanOrEqual"),
1801            Self::CaptionLessThan => write!(f, "captionLessThan"),
1802            Self::CaptionLessThanOrEqual => write!(f, "captionLessThanOrEqual"),
1803            Self::CaptionBetween => write!(f, "captionBetween"),
1804            Self::CaptionNotBetween => write!(f, "captionNotBetween"),
1805            Self::ValueEqual => write!(f, "valueEqual"),
1806            Self::ValueNotEqual => write!(f, "valueNotEqual"),
1807            Self::ValueGreaterThan => write!(f, "valueGreaterThan"),
1808            Self::ValueGreaterThanOrEqual => write!(f, "valueGreaterThanOrEqual"),
1809            Self::ValueLessThan => write!(f, "valueLessThan"),
1810            Self::ValueLessThanOrEqual => write!(f, "valueLessThanOrEqual"),
1811            Self::ValueBetween => write!(f, "valueBetween"),
1812            Self::ValueNotBetween => write!(f, "valueNotBetween"),
1813            Self::DateEqual => write!(f, "dateEqual"),
1814            Self::DateNotEqual => write!(f, "dateNotEqual"),
1815            Self::DateOlderThan => write!(f, "dateOlderThan"),
1816            Self::DateOlderThanOrEqual => write!(f, "dateOlderThanOrEqual"),
1817            Self::DateNewerThan => write!(f, "dateNewerThan"),
1818            Self::DateNewerThanOrEqual => write!(f, "dateNewerThanOrEqual"),
1819            Self::DateBetween => write!(f, "dateBetween"),
1820            Self::DateNotBetween => write!(f, "dateNotBetween"),
1821            Self::Tomorrow => write!(f, "tomorrow"),
1822            Self::Today => write!(f, "today"),
1823            Self::Yesterday => write!(f, "yesterday"),
1824            Self::NextWeek => write!(f, "nextWeek"),
1825            Self::ThisWeek => write!(f, "thisWeek"),
1826            Self::LastWeek => write!(f, "lastWeek"),
1827            Self::NextMonth => write!(f, "nextMonth"),
1828            Self::ThisMonth => write!(f, "thisMonth"),
1829            Self::LastMonth => write!(f, "lastMonth"),
1830            Self::NextQuarter => write!(f, "nextQuarter"),
1831            Self::ThisQuarter => write!(f, "thisQuarter"),
1832            Self::LastQuarter => write!(f, "lastQuarter"),
1833            Self::NextYear => write!(f, "nextYear"),
1834            Self::ThisYear => write!(f, "thisYear"),
1835            Self::LastYear => write!(f, "lastYear"),
1836            Self::YearToDate => write!(f, "yearToDate"),
1837            Self::Q1 => write!(f, "Q1"),
1838            Self::Q2 => write!(f, "Q2"),
1839            Self::Q3 => write!(f, "Q3"),
1840            Self::Q4 => write!(f, "Q4"),
1841            Self::M1 => write!(f, "M1"),
1842            Self::M2 => write!(f, "M2"),
1843            Self::M3 => write!(f, "M3"),
1844            Self::M4 => write!(f, "M4"),
1845            Self::M5 => write!(f, "M5"),
1846            Self::M6 => write!(f, "M6"),
1847            Self::M7 => write!(f, "M7"),
1848            Self::M8 => write!(f, "M8"),
1849            Self::M9 => write!(f, "M9"),
1850            Self::M10 => write!(f, "M10"),
1851            Self::M11 => write!(f, "M11"),
1852            Self::M12 => write!(f, "M12"),
1853        }
1854    }
1855}
1856
1857impl std::str::FromStr for STPivotFilterType {
1858    type Err = String;
1859
1860    fn from_str(s: &str) -> Result<Self, Self::Err> {
1861        match s {
1862            "unknown" => Ok(Self::Unknown),
1863            "count" => Ok(Self::Count),
1864            "percent" => Ok(Self::Percent),
1865            "sum" => Ok(Self::Sum),
1866            "captionEqual" => Ok(Self::CaptionEqual),
1867            "captionNotEqual" => Ok(Self::CaptionNotEqual),
1868            "captionBeginsWith" => Ok(Self::CaptionBeginsWith),
1869            "captionNotBeginsWith" => Ok(Self::CaptionNotBeginsWith),
1870            "captionEndsWith" => Ok(Self::CaptionEndsWith),
1871            "captionNotEndsWith" => Ok(Self::CaptionNotEndsWith),
1872            "captionContains" => Ok(Self::CaptionContains),
1873            "captionNotContains" => Ok(Self::CaptionNotContains),
1874            "captionGreaterThan" => Ok(Self::CaptionGreaterThan),
1875            "captionGreaterThanOrEqual" => Ok(Self::CaptionGreaterThanOrEqual),
1876            "captionLessThan" => Ok(Self::CaptionLessThan),
1877            "captionLessThanOrEqual" => Ok(Self::CaptionLessThanOrEqual),
1878            "captionBetween" => Ok(Self::CaptionBetween),
1879            "captionNotBetween" => Ok(Self::CaptionNotBetween),
1880            "valueEqual" => Ok(Self::ValueEqual),
1881            "valueNotEqual" => Ok(Self::ValueNotEqual),
1882            "valueGreaterThan" => Ok(Self::ValueGreaterThan),
1883            "valueGreaterThanOrEqual" => Ok(Self::ValueGreaterThanOrEqual),
1884            "valueLessThan" => Ok(Self::ValueLessThan),
1885            "valueLessThanOrEqual" => Ok(Self::ValueLessThanOrEqual),
1886            "valueBetween" => Ok(Self::ValueBetween),
1887            "valueNotBetween" => Ok(Self::ValueNotBetween),
1888            "dateEqual" => Ok(Self::DateEqual),
1889            "dateNotEqual" => Ok(Self::DateNotEqual),
1890            "dateOlderThan" => Ok(Self::DateOlderThan),
1891            "dateOlderThanOrEqual" => Ok(Self::DateOlderThanOrEqual),
1892            "dateNewerThan" => Ok(Self::DateNewerThan),
1893            "dateNewerThanOrEqual" => Ok(Self::DateNewerThanOrEqual),
1894            "dateBetween" => Ok(Self::DateBetween),
1895            "dateNotBetween" => Ok(Self::DateNotBetween),
1896            "tomorrow" => Ok(Self::Tomorrow),
1897            "today" => Ok(Self::Today),
1898            "yesterday" => Ok(Self::Yesterday),
1899            "nextWeek" => Ok(Self::NextWeek),
1900            "thisWeek" => Ok(Self::ThisWeek),
1901            "lastWeek" => Ok(Self::LastWeek),
1902            "nextMonth" => Ok(Self::NextMonth),
1903            "thisMonth" => Ok(Self::ThisMonth),
1904            "lastMonth" => Ok(Self::LastMonth),
1905            "nextQuarter" => Ok(Self::NextQuarter),
1906            "thisQuarter" => Ok(Self::ThisQuarter),
1907            "lastQuarter" => Ok(Self::LastQuarter),
1908            "nextYear" => Ok(Self::NextYear),
1909            "thisYear" => Ok(Self::ThisYear),
1910            "lastYear" => Ok(Self::LastYear),
1911            "yearToDate" => Ok(Self::YearToDate),
1912            "Q1" => Ok(Self::Q1),
1913            "Q2" => Ok(Self::Q2),
1914            "Q3" => Ok(Self::Q3),
1915            "Q4" => Ok(Self::Q4),
1916            "M1" => Ok(Self::M1),
1917            "M2" => Ok(Self::M2),
1918            "M3" => Ok(Self::M3),
1919            "M4" => Ok(Self::M4),
1920            "M5" => Ok(Self::M5),
1921            "M6" => Ok(Self::M6),
1922            "M7" => Ok(Self::M7),
1923            "M8" => Ok(Self::M8),
1924            "M9" => Ok(Self::M9),
1925            "M10" => Ok(Self::M10),
1926            "M11" => Ok(Self::M11),
1927            "M12" => Ok(Self::M12),
1928            _ => Err(format!("unknown STPivotFilterType value: {}", s)),
1929        }
1930    }
1931}
1932
1933#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1934pub enum STPivotAreaType {
1935    #[serde(rename = "none")]
1936    None,
1937    #[serde(rename = "normal")]
1938    Normal,
1939    #[serde(rename = "data")]
1940    Data,
1941    #[serde(rename = "all")]
1942    All,
1943    #[serde(rename = "origin")]
1944    Origin,
1945    #[serde(rename = "button")]
1946    Button,
1947    #[serde(rename = "topEnd")]
1948    TopEnd,
1949    #[serde(rename = "topRight")]
1950    TopRight,
1951}
1952
1953impl std::fmt::Display for STPivotAreaType {
1954    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1955        match self {
1956            Self::None => write!(f, "none"),
1957            Self::Normal => write!(f, "normal"),
1958            Self::Data => write!(f, "data"),
1959            Self::All => write!(f, "all"),
1960            Self::Origin => write!(f, "origin"),
1961            Self::Button => write!(f, "button"),
1962            Self::TopEnd => write!(f, "topEnd"),
1963            Self::TopRight => write!(f, "topRight"),
1964        }
1965    }
1966}
1967
1968impl std::str::FromStr for STPivotAreaType {
1969    type Err = String;
1970
1971    fn from_str(s: &str) -> Result<Self, Self::Err> {
1972        match s {
1973            "none" => Ok(Self::None),
1974            "normal" => Ok(Self::Normal),
1975            "data" => Ok(Self::Data),
1976            "all" => Ok(Self::All),
1977            "origin" => Ok(Self::Origin),
1978            "button" => Ok(Self::Button),
1979            "topEnd" => Ok(Self::TopEnd),
1980            "topRight" => Ok(Self::TopRight),
1981            _ => Err(format!("unknown STPivotAreaType value: {}", s)),
1982        }
1983    }
1984}
1985
1986#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
1987pub enum STAxis {
1988    #[serde(rename = "axisRow")]
1989    AxisRow,
1990    #[serde(rename = "axisCol")]
1991    AxisCol,
1992    #[serde(rename = "axisPage")]
1993    AxisPage,
1994    #[serde(rename = "axisValues")]
1995    AxisValues,
1996}
1997
1998impl std::fmt::Display for STAxis {
1999    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2000        match self {
2001            Self::AxisRow => write!(f, "axisRow"),
2002            Self::AxisCol => write!(f, "axisCol"),
2003            Self::AxisPage => write!(f, "axisPage"),
2004            Self::AxisValues => write!(f, "axisValues"),
2005        }
2006    }
2007}
2008
2009impl std::str::FromStr for STAxis {
2010    type Err = String;
2011
2012    fn from_str(s: &str) -> Result<Self, Self::Err> {
2013        match s {
2014            "axisRow" => Ok(Self::AxisRow),
2015            "axisCol" => Ok(Self::AxisCol),
2016            "axisPage" => Ok(Self::AxisPage),
2017            "axisValues" => Ok(Self::AxisValues),
2018            _ => Err(format!("unknown STAxis value: {}", s)),
2019        }
2020    }
2021}
2022
2023#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2024pub enum STGrowShrinkType {
2025    #[serde(rename = "insertDelete")]
2026    InsertDelete,
2027    #[serde(rename = "insertClear")]
2028    InsertClear,
2029    #[serde(rename = "overwriteClear")]
2030    OverwriteClear,
2031}
2032
2033impl std::fmt::Display for STGrowShrinkType {
2034    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2035        match self {
2036            Self::InsertDelete => write!(f, "insertDelete"),
2037            Self::InsertClear => write!(f, "insertClear"),
2038            Self::OverwriteClear => write!(f, "overwriteClear"),
2039        }
2040    }
2041}
2042
2043impl std::str::FromStr for STGrowShrinkType {
2044    type Err = String;
2045
2046    fn from_str(s: &str) -> Result<Self, Self::Err> {
2047        match s {
2048            "insertDelete" => Ok(Self::InsertDelete),
2049            "insertClear" => Ok(Self::InsertClear),
2050            "overwriteClear" => Ok(Self::OverwriteClear),
2051            _ => Err(format!("unknown STGrowShrinkType value: {}", s)),
2052        }
2053    }
2054}
2055
2056#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2057pub enum STPhoneticType {
2058    #[serde(rename = "halfwidthKatakana")]
2059    HalfwidthKatakana,
2060    #[serde(rename = "fullwidthKatakana")]
2061    FullwidthKatakana,
2062    #[serde(rename = "Hiragana")]
2063    Hiragana,
2064    #[serde(rename = "noConversion")]
2065    NoConversion,
2066}
2067
2068impl std::fmt::Display for STPhoneticType {
2069    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2070        match self {
2071            Self::HalfwidthKatakana => write!(f, "halfwidthKatakana"),
2072            Self::FullwidthKatakana => write!(f, "fullwidthKatakana"),
2073            Self::Hiragana => write!(f, "Hiragana"),
2074            Self::NoConversion => write!(f, "noConversion"),
2075        }
2076    }
2077}
2078
2079impl std::str::FromStr for STPhoneticType {
2080    type Err = String;
2081
2082    fn from_str(s: &str) -> Result<Self, Self::Err> {
2083        match s {
2084            "halfwidthKatakana" => Ok(Self::HalfwidthKatakana),
2085            "fullwidthKatakana" => Ok(Self::FullwidthKatakana),
2086            "Hiragana" => Ok(Self::Hiragana),
2087            "noConversion" => Ok(Self::NoConversion),
2088            _ => Err(format!("unknown STPhoneticType value: {}", s)),
2089        }
2090    }
2091}
2092
2093#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2094pub enum STPhoneticAlignment {
2095    #[serde(rename = "noControl")]
2096    NoControl,
2097    #[serde(rename = "left")]
2098    Left,
2099    #[serde(rename = "center")]
2100    Center,
2101    #[serde(rename = "distributed")]
2102    Distributed,
2103}
2104
2105impl std::fmt::Display for STPhoneticAlignment {
2106    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2107        match self {
2108            Self::NoControl => write!(f, "noControl"),
2109            Self::Left => write!(f, "left"),
2110            Self::Center => write!(f, "center"),
2111            Self::Distributed => write!(f, "distributed"),
2112        }
2113    }
2114}
2115
2116impl std::str::FromStr for STPhoneticAlignment {
2117    type Err = String;
2118
2119    fn from_str(s: &str) -> Result<Self, Self::Err> {
2120        match s {
2121            "noControl" => Ok(Self::NoControl),
2122            "left" => Ok(Self::Left),
2123            "center" => Ok(Self::Center),
2124            "distributed" => Ok(Self::Distributed),
2125            _ => Err(format!("unknown STPhoneticAlignment value: {}", s)),
2126        }
2127    }
2128}
2129
2130#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2131pub enum STRwColActionType {
2132    #[serde(rename = "insertRow")]
2133    InsertRow,
2134    #[serde(rename = "deleteRow")]
2135    DeleteRow,
2136    #[serde(rename = "insertCol")]
2137    InsertCol,
2138    #[serde(rename = "deleteCol")]
2139    DeleteCol,
2140}
2141
2142impl std::fmt::Display for STRwColActionType {
2143    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2144        match self {
2145            Self::InsertRow => write!(f, "insertRow"),
2146            Self::DeleteRow => write!(f, "deleteRow"),
2147            Self::InsertCol => write!(f, "insertCol"),
2148            Self::DeleteCol => write!(f, "deleteCol"),
2149        }
2150    }
2151}
2152
2153impl std::str::FromStr for STRwColActionType {
2154    type Err = String;
2155
2156    fn from_str(s: &str) -> Result<Self, Self::Err> {
2157        match s {
2158            "insertRow" => Ok(Self::InsertRow),
2159            "deleteRow" => Ok(Self::DeleteRow),
2160            "insertCol" => Ok(Self::InsertCol),
2161            "deleteCol" => Ok(Self::DeleteCol),
2162            _ => Err(format!("unknown STRwColActionType value: {}", s)),
2163        }
2164    }
2165}
2166
2167#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2168pub enum STRevisionAction {
2169    #[serde(rename = "add")]
2170    Add,
2171    #[serde(rename = "delete")]
2172    Delete,
2173}
2174
2175impl std::fmt::Display for STRevisionAction {
2176    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2177        match self {
2178            Self::Add => write!(f, "add"),
2179            Self::Delete => write!(f, "delete"),
2180        }
2181    }
2182}
2183
2184impl std::str::FromStr for STRevisionAction {
2185    type Err = String;
2186
2187    fn from_str(s: &str) -> Result<Self, Self::Err> {
2188        match s {
2189            "add" => Ok(Self::Add),
2190            "delete" => Ok(Self::Delete),
2191            _ => Err(format!("unknown STRevisionAction value: {}", s)),
2192        }
2193    }
2194}
2195
2196#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2197pub enum STFormulaExpression {
2198    #[serde(rename = "ref")]
2199    Ref,
2200    #[serde(rename = "refError")]
2201    RefError,
2202    #[serde(rename = "area")]
2203    Area,
2204    #[serde(rename = "areaError")]
2205    AreaError,
2206    #[serde(rename = "computedArea")]
2207    ComputedArea,
2208}
2209
2210impl std::fmt::Display for STFormulaExpression {
2211    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2212        match self {
2213            Self::Ref => write!(f, "ref"),
2214            Self::RefError => write!(f, "refError"),
2215            Self::Area => write!(f, "area"),
2216            Self::AreaError => write!(f, "areaError"),
2217            Self::ComputedArea => write!(f, "computedArea"),
2218        }
2219    }
2220}
2221
2222impl std::str::FromStr for STFormulaExpression {
2223    type Err = String;
2224
2225    fn from_str(s: &str) -> Result<Self, Self::Err> {
2226        match s {
2227            "ref" => Ok(Self::Ref),
2228            "refError" => Ok(Self::RefError),
2229            "area" => Ok(Self::Area),
2230            "areaError" => Ok(Self::AreaError),
2231            "computedArea" => Ok(Self::ComputedArea),
2232            _ => Err(format!("unknown STFormulaExpression value: {}", s)),
2233        }
2234    }
2235}
2236
2237pub type STCellSpan = String;
2238
2239pub type CellSpans = String;
2240
2241#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2242pub enum CellType {
2243    #[serde(rename = "b")]
2244    Boolean,
2245    #[serde(rename = "n")]
2246    Number,
2247    #[serde(rename = "e")]
2248    Error,
2249    #[serde(rename = "s")]
2250    SharedString,
2251    #[serde(rename = "str")]
2252    String,
2253    #[serde(rename = "inlineStr")]
2254    InlineString,
2255}
2256
2257impl std::fmt::Display for CellType {
2258    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2259        match self {
2260            Self::Boolean => write!(f, "b"),
2261            Self::Number => write!(f, "n"),
2262            Self::Error => write!(f, "e"),
2263            Self::SharedString => write!(f, "s"),
2264            Self::String => write!(f, "str"),
2265            Self::InlineString => write!(f, "inlineStr"),
2266        }
2267    }
2268}
2269
2270impl std::str::FromStr for CellType {
2271    type Err = String;
2272
2273    fn from_str(s: &str) -> Result<Self, Self::Err> {
2274        match s {
2275            "b" => Ok(Self::Boolean),
2276            "n" => Ok(Self::Number),
2277            "e" => Ok(Self::Error),
2278            "s" => Ok(Self::SharedString),
2279            "str" => Ok(Self::String),
2280            "inlineStr" => Ok(Self::InlineString),
2281            _ => Err(format!("unknown CellType value: {}", s)),
2282        }
2283    }
2284}
2285
2286#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2287pub enum FormulaType {
2288    #[serde(rename = "normal")]
2289    Normal,
2290    #[serde(rename = "array")]
2291    Array,
2292    #[serde(rename = "dataTable")]
2293    DataTable,
2294    #[serde(rename = "shared")]
2295    Shared,
2296}
2297
2298impl std::fmt::Display for FormulaType {
2299    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2300        match self {
2301            Self::Normal => write!(f, "normal"),
2302            Self::Array => write!(f, "array"),
2303            Self::DataTable => write!(f, "dataTable"),
2304            Self::Shared => write!(f, "shared"),
2305        }
2306    }
2307}
2308
2309impl std::str::FromStr for FormulaType {
2310    type Err = String;
2311
2312    fn from_str(s: &str) -> Result<Self, Self::Err> {
2313        match s {
2314            "normal" => Ok(Self::Normal),
2315            "array" => Ok(Self::Array),
2316            "dataTable" => Ok(Self::DataTable),
2317            "shared" => Ok(Self::Shared),
2318            _ => Err(format!("unknown FormulaType value: {}", s)),
2319        }
2320    }
2321}
2322
2323#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2324pub enum PaneType {
2325    #[serde(rename = "bottomRight")]
2326    BottomRight,
2327    #[serde(rename = "topRight")]
2328    TopRight,
2329    #[serde(rename = "bottomLeft")]
2330    BottomLeft,
2331    #[serde(rename = "topLeft")]
2332    TopLeft,
2333}
2334
2335impl std::fmt::Display for PaneType {
2336    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2337        match self {
2338            Self::BottomRight => write!(f, "bottomRight"),
2339            Self::TopRight => write!(f, "topRight"),
2340            Self::BottomLeft => write!(f, "bottomLeft"),
2341            Self::TopLeft => write!(f, "topLeft"),
2342        }
2343    }
2344}
2345
2346impl std::str::FromStr for PaneType {
2347    type Err = String;
2348
2349    fn from_str(s: &str) -> Result<Self, Self::Err> {
2350        match s {
2351            "bottomRight" => Ok(Self::BottomRight),
2352            "topRight" => Ok(Self::TopRight),
2353            "bottomLeft" => Ok(Self::BottomLeft),
2354            "topLeft" => Ok(Self::TopLeft),
2355            _ => Err(format!("unknown PaneType value: {}", s)),
2356        }
2357    }
2358}
2359
2360#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2361pub enum SheetViewType {
2362    #[serde(rename = "normal")]
2363    Normal,
2364    #[serde(rename = "pageBreakPreview")]
2365    PageBreakPreview,
2366    #[serde(rename = "pageLayout")]
2367    PageLayout,
2368}
2369
2370impl std::fmt::Display for SheetViewType {
2371    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2372        match self {
2373            Self::Normal => write!(f, "normal"),
2374            Self::PageBreakPreview => write!(f, "pageBreakPreview"),
2375            Self::PageLayout => write!(f, "pageLayout"),
2376        }
2377    }
2378}
2379
2380impl std::str::FromStr for SheetViewType {
2381    type Err = String;
2382
2383    fn from_str(s: &str) -> Result<Self, Self::Err> {
2384        match s {
2385            "normal" => Ok(Self::Normal),
2386            "pageBreakPreview" => Ok(Self::PageBreakPreview),
2387            "pageLayout" => Ok(Self::PageLayout),
2388            _ => Err(format!("unknown SheetViewType value: {}", s)),
2389        }
2390    }
2391}
2392
2393#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2394pub enum STDataConsolidateFunction {
2395    #[serde(rename = "average")]
2396    Average,
2397    #[serde(rename = "count")]
2398    Count,
2399    #[serde(rename = "countNums")]
2400    CountNums,
2401    #[serde(rename = "max")]
2402    Max,
2403    #[serde(rename = "min")]
2404    Min,
2405    #[serde(rename = "product")]
2406    Product,
2407    #[serde(rename = "stdDev")]
2408    StdDev,
2409    #[serde(rename = "stdDevp")]
2410    StdDevp,
2411    #[serde(rename = "sum")]
2412    Sum,
2413    #[serde(rename = "var")]
2414    Var,
2415    #[serde(rename = "varp")]
2416    Varp,
2417}
2418
2419impl std::fmt::Display for STDataConsolidateFunction {
2420    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2421        match self {
2422            Self::Average => write!(f, "average"),
2423            Self::Count => write!(f, "count"),
2424            Self::CountNums => write!(f, "countNums"),
2425            Self::Max => write!(f, "max"),
2426            Self::Min => write!(f, "min"),
2427            Self::Product => write!(f, "product"),
2428            Self::StdDev => write!(f, "stdDev"),
2429            Self::StdDevp => write!(f, "stdDevp"),
2430            Self::Sum => write!(f, "sum"),
2431            Self::Var => write!(f, "var"),
2432            Self::Varp => write!(f, "varp"),
2433        }
2434    }
2435}
2436
2437impl std::str::FromStr for STDataConsolidateFunction {
2438    type Err = String;
2439
2440    fn from_str(s: &str) -> Result<Self, Self::Err> {
2441        match s {
2442            "average" => Ok(Self::Average),
2443            "count" => Ok(Self::Count),
2444            "countNums" => Ok(Self::CountNums),
2445            "max" => Ok(Self::Max),
2446            "min" => Ok(Self::Min),
2447            "product" => Ok(Self::Product),
2448            "stdDev" => Ok(Self::StdDev),
2449            "stdDevp" => Ok(Self::StdDevp),
2450            "sum" => Ok(Self::Sum),
2451            "var" => Ok(Self::Var),
2452            "varp" => Ok(Self::Varp),
2453            _ => Err(format!("unknown STDataConsolidateFunction value: {}", s)),
2454        }
2455    }
2456}
2457
2458#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2459pub enum ValidationType {
2460    #[serde(rename = "none")]
2461    None,
2462    #[serde(rename = "whole")]
2463    Whole,
2464    #[serde(rename = "decimal")]
2465    Decimal,
2466    #[serde(rename = "list")]
2467    List,
2468    #[serde(rename = "date")]
2469    Date,
2470    #[serde(rename = "time")]
2471    Time,
2472    #[serde(rename = "textLength")]
2473    TextLength,
2474    #[serde(rename = "custom")]
2475    Custom,
2476}
2477
2478impl std::fmt::Display for ValidationType {
2479    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2480        match self {
2481            Self::None => write!(f, "none"),
2482            Self::Whole => write!(f, "whole"),
2483            Self::Decimal => write!(f, "decimal"),
2484            Self::List => write!(f, "list"),
2485            Self::Date => write!(f, "date"),
2486            Self::Time => write!(f, "time"),
2487            Self::TextLength => write!(f, "textLength"),
2488            Self::Custom => write!(f, "custom"),
2489        }
2490    }
2491}
2492
2493impl std::str::FromStr for ValidationType {
2494    type Err = String;
2495
2496    fn from_str(s: &str) -> Result<Self, Self::Err> {
2497        match s {
2498            "none" => Ok(Self::None),
2499            "whole" => Ok(Self::Whole),
2500            "decimal" => Ok(Self::Decimal),
2501            "list" => Ok(Self::List),
2502            "date" => Ok(Self::Date),
2503            "time" => Ok(Self::Time),
2504            "textLength" => Ok(Self::TextLength),
2505            "custom" => Ok(Self::Custom),
2506            _ => Err(format!("unknown ValidationType value: {}", s)),
2507        }
2508    }
2509}
2510
2511#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2512pub enum ValidationOperator {
2513    #[serde(rename = "between")]
2514    Between,
2515    #[serde(rename = "notBetween")]
2516    NotBetween,
2517    #[serde(rename = "equal")]
2518    Equal,
2519    #[serde(rename = "notEqual")]
2520    NotEqual,
2521    #[serde(rename = "lessThan")]
2522    LessThan,
2523    #[serde(rename = "lessThanOrEqual")]
2524    LessThanOrEqual,
2525    #[serde(rename = "greaterThan")]
2526    GreaterThan,
2527    #[serde(rename = "greaterThanOrEqual")]
2528    GreaterThanOrEqual,
2529}
2530
2531impl std::fmt::Display for ValidationOperator {
2532    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2533        match self {
2534            Self::Between => write!(f, "between"),
2535            Self::NotBetween => write!(f, "notBetween"),
2536            Self::Equal => write!(f, "equal"),
2537            Self::NotEqual => write!(f, "notEqual"),
2538            Self::LessThan => write!(f, "lessThan"),
2539            Self::LessThanOrEqual => write!(f, "lessThanOrEqual"),
2540            Self::GreaterThan => write!(f, "greaterThan"),
2541            Self::GreaterThanOrEqual => write!(f, "greaterThanOrEqual"),
2542        }
2543    }
2544}
2545
2546impl std::str::FromStr for ValidationOperator {
2547    type Err = String;
2548
2549    fn from_str(s: &str) -> Result<Self, Self::Err> {
2550        match s {
2551            "between" => Ok(Self::Between),
2552            "notBetween" => Ok(Self::NotBetween),
2553            "equal" => Ok(Self::Equal),
2554            "notEqual" => Ok(Self::NotEqual),
2555            "lessThan" => Ok(Self::LessThan),
2556            "lessThanOrEqual" => Ok(Self::LessThanOrEqual),
2557            "greaterThan" => Ok(Self::GreaterThan),
2558            "greaterThanOrEqual" => Ok(Self::GreaterThanOrEqual),
2559            _ => Err(format!("unknown ValidationOperator value: {}", s)),
2560        }
2561    }
2562}
2563
2564#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2565pub enum ValidationErrorStyle {
2566    #[serde(rename = "stop")]
2567    Stop,
2568    #[serde(rename = "warning")]
2569    Warning,
2570    #[serde(rename = "information")]
2571    Information,
2572}
2573
2574impl std::fmt::Display for ValidationErrorStyle {
2575    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2576        match self {
2577            Self::Stop => write!(f, "stop"),
2578            Self::Warning => write!(f, "warning"),
2579            Self::Information => write!(f, "information"),
2580        }
2581    }
2582}
2583
2584impl std::str::FromStr for ValidationErrorStyle {
2585    type Err = String;
2586
2587    fn from_str(s: &str) -> Result<Self, Self::Err> {
2588        match s {
2589            "stop" => Ok(Self::Stop),
2590            "warning" => Ok(Self::Warning),
2591            "information" => Ok(Self::Information),
2592            _ => Err(format!("unknown ValidationErrorStyle value: {}", s)),
2593        }
2594    }
2595}
2596
2597#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2598pub enum STDataValidationImeMode {
2599    #[serde(rename = "noControl")]
2600    NoControl,
2601    #[serde(rename = "off")]
2602    Off,
2603    #[serde(rename = "on")]
2604    On,
2605    #[serde(rename = "disabled")]
2606    Disabled,
2607    #[serde(rename = "hiragana")]
2608    Hiragana,
2609    #[serde(rename = "fullKatakana")]
2610    FullKatakana,
2611    #[serde(rename = "halfKatakana")]
2612    HalfKatakana,
2613    #[serde(rename = "fullAlpha")]
2614    FullAlpha,
2615    #[serde(rename = "halfAlpha")]
2616    HalfAlpha,
2617    #[serde(rename = "fullHangul")]
2618    FullHangul,
2619    #[serde(rename = "halfHangul")]
2620    HalfHangul,
2621}
2622
2623impl std::fmt::Display for STDataValidationImeMode {
2624    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2625        match self {
2626            Self::NoControl => write!(f, "noControl"),
2627            Self::Off => write!(f, "off"),
2628            Self::On => write!(f, "on"),
2629            Self::Disabled => write!(f, "disabled"),
2630            Self::Hiragana => write!(f, "hiragana"),
2631            Self::FullKatakana => write!(f, "fullKatakana"),
2632            Self::HalfKatakana => write!(f, "halfKatakana"),
2633            Self::FullAlpha => write!(f, "fullAlpha"),
2634            Self::HalfAlpha => write!(f, "halfAlpha"),
2635            Self::FullHangul => write!(f, "fullHangul"),
2636            Self::HalfHangul => write!(f, "halfHangul"),
2637        }
2638    }
2639}
2640
2641impl std::str::FromStr for STDataValidationImeMode {
2642    type Err = String;
2643
2644    fn from_str(s: &str) -> Result<Self, Self::Err> {
2645        match s {
2646            "noControl" => Ok(Self::NoControl),
2647            "off" => Ok(Self::Off),
2648            "on" => Ok(Self::On),
2649            "disabled" => Ok(Self::Disabled),
2650            "hiragana" => Ok(Self::Hiragana),
2651            "fullKatakana" => Ok(Self::FullKatakana),
2652            "halfKatakana" => Ok(Self::HalfKatakana),
2653            "fullAlpha" => Ok(Self::FullAlpha),
2654            "halfAlpha" => Ok(Self::HalfAlpha),
2655            "fullHangul" => Ok(Self::FullHangul),
2656            "halfHangul" => Ok(Self::HalfHangul),
2657            _ => Err(format!("unknown STDataValidationImeMode value: {}", s)),
2658        }
2659    }
2660}
2661
2662#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2663pub enum ConditionalType {
2664    #[serde(rename = "expression")]
2665    Expression,
2666    #[serde(rename = "cellIs")]
2667    CellIs,
2668    #[serde(rename = "colorScale")]
2669    ColorScale,
2670    #[serde(rename = "dataBar")]
2671    DataBar,
2672    #[serde(rename = "iconSet")]
2673    IconSet,
2674    #[serde(rename = "top10")]
2675    Top10,
2676    #[serde(rename = "uniqueValues")]
2677    UniqueValues,
2678    #[serde(rename = "duplicateValues")]
2679    DuplicateValues,
2680    #[serde(rename = "containsText")]
2681    ContainsText,
2682    #[serde(rename = "notContainsText")]
2683    NotContainsText,
2684    #[serde(rename = "beginsWith")]
2685    BeginsWith,
2686    #[serde(rename = "endsWith")]
2687    EndsWith,
2688    #[serde(rename = "containsBlanks")]
2689    ContainsBlanks,
2690    #[serde(rename = "notContainsBlanks")]
2691    NotContainsBlanks,
2692    #[serde(rename = "containsErrors")]
2693    ContainsErrors,
2694    #[serde(rename = "notContainsErrors")]
2695    NotContainsErrors,
2696    #[serde(rename = "timePeriod")]
2697    TimePeriod,
2698    #[serde(rename = "aboveAverage")]
2699    AboveAverage,
2700}
2701
2702impl std::fmt::Display for ConditionalType {
2703    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2704        match self {
2705            Self::Expression => write!(f, "expression"),
2706            Self::CellIs => write!(f, "cellIs"),
2707            Self::ColorScale => write!(f, "colorScale"),
2708            Self::DataBar => write!(f, "dataBar"),
2709            Self::IconSet => write!(f, "iconSet"),
2710            Self::Top10 => write!(f, "top10"),
2711            Self::UniqueValues => write!(f, "uniqueValues"),
2712            Self::DuplicateValues => write!(f, "duplicateValues"),
2713            Self::ContainsText => write!(f, "containsText"),
2714            Self::NotContainsText => write!(f, "notContainsText"),
2715            Self::BeginsWith => write!(f, "beginsWith"),
2716            Self::EndsWith => write!(f, "endsWith"),
2717            Self::ContainsBlanks => write!(f, "containsBlanks"),
2718            Self::NotContainsBlanks => write!(f, "notContainsBlanks"),
2719            Self::ContainsErrors => write!(f, "containsErrors"),
2720            Self::NotContainsErrors => write!(f, "notContainsErrors"),
2721            Self::TimePeriod => write!(f, "timePeriod"),
2722            Self::AboveAverage => write!(f, "aboveAverage"),
2723        }
2724    }
2725}
2726
2727impl std::str::FromStr for ConditionalType {
2728    type Err = String;
2729
2730    fn from_str(s: &str) -> Result<Self, Self::Err> {
2731        match s {
2732            "expression" => Ok(Self::Expression),
2733            "cellIs" => Ok(Self::CellIs),
2734            "colorScale" => Ok(Self::ColorScale),
2735            "dataBar" => Ok(Self::DataBar),
2736            "iconSet" => Ok(Self::IconSet),
2737            "top10" => Ok(Self::Top10),
2738            "uniqueValues" => Ok(Self::UniqueValues),
2739            "duplicateValues" => Ok(Self::DuplicateValues),
2740            "containsText" => Ok(Self::ContainsText),
2741            "notContainsText" => Ok(Self::NotContainsText),
2742            "beginsWith" => Ok(Self::BeginsWith),
2743            "endsWith" => Ok(Self::EndsWith),
2744            "containsBlanks" => Ok(Self::ContainsBlanks),
2745            "notContainsBlanks" => Ok(Self::NotContainsBlanks),
2746            "containsErrors" => Ok(Self::ContainsErrors),
2747            "notContainsErrors" => Ok(Self::NotContainsErrors),
2748            "timePeriod" => Ok(Self::TimePeriod),
2749            "aboveAverage" => Ok(Self::AboveAverage),
2750            _ => Err(format!("unknown ConditionalType value: {}", s)),
2751        }
2752    }
2753}
2754
2755#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2756pub enum STTimePeriod {
2757    #[serde(rename = "today")]
2758    Today,
2759    #[serde(rename = "yesterday")]
2760    Yesterday,
2761    #[serde(rename = "tomorrow")]
2762    Tomorrow,
2763    #[serde(rename = "last7Days")]
2764    Last7Days,
2765    #[serde(rename = "thisMonth")]
2766    ThisMonth,
2767    #[serde(rename = "lastMonth")]
2768    LastMonth,
2769    #[serde(rename = "nextMonth")]
2770    NextMonth,
2771    #[serde(rename = "thisWeek")]
2772    ThisWeek,
2773    #[serde(rename = "lastWeek")]
2774    LastWeek,
2775    #[serde(rename = "nextWeek")]
2776    NextWeek,
2777}
2778
2779impl std::fmt::Display for STTimePeriod {
2780    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2781        match self {
2782            Self::Today => write!(f, "today"),
2783            Self::Yesterday => write!(f, "yesterday"),
2784            Self::Tomorrow => write!(f, "tomorrow"),
2785            Self::Last7Days => write!(f, "last7Days"),
2786            Self::ThisMonth => write!(f, "thisMonth"),
2787            Self::LastMonth => write!(f, "lastMonth"),
2788            Self::NextMonth => write!(f, "nextMonth"),
2789            Self::ThisWeek => write!(f, "thisWeek"),
2790            Self::LastWeek => write!(f, "lastWeek"),
2791            Self::NextWeek => write!(f, "nextWeek"),
2792        }
2793    }
2794}
2795
2796impl std::str::FromStr for STTimePeriod {
2797    type Err = String;
2798
2799    fn from_str(s: &str) -> Result<Self, Self::Err> {
2800        match s {
2801            "today" => Ok(Self::Today),
2802            "yesterday" => Ok(Self::Yesterday),
2803            "tomorrow" => Ok(Self::Tomorrow),
2804            "last7Days" => Ok(Self::Last7Days),
2805            "thisMonth" => Ok(Self::ThisMonth),
2806            "lastMonth" => Ok(Self::LastMonth),
2807            "nextMonth" => Ok(Self::NextMonth),
2808            "thisWeek" => Ok(Self::ThisWeek),
2809            "lastWeek" => Ok(Self::LastWeek),
2810            "nextWeek" => Ok(Self::NextWeek),
2811            _ => Err(format!("unknown STTimePeriod value: {}", s)),
2812        }
2813    }
2814}
2815
2816#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2817pub enum ConditionalOperator {
2818    #[serde(rename = "lessThan")]
2819    LessThan,
2820    #[serde(rename = "lessThanOrEqual")]
2821    LessThanOrEqual,
2822    #[serde(rename = "equal")]
2823    Equal,
2824    #[serde(rename = "notEqual")]
2825    NotEqual,
2826    #[serde(rename = "greaterThanOrEqual")]
2827    GreaterThanOrEqual,
2828    #[serde(rename = "greaterThan")]
2829    GreaterThan,
2830    #[serde(rename = "between")]
2831    Between,
2832    #[serde(rename = "notBetween")]
2833    NotBetween,
2834    #[serde(rename = "containsText")]
2835    ContainsText,
2836    #[serde(rename = "notContains")]
2837    NotContains,
2838    #[serde(rename = "beginsWith")]
2839    BeginsWith,
2840    #[serde(rename = "endsWith")]
2841    EndsWith,
2842}
2843
2844impl std::fmt::Display for ConditionalOperator {
2845    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2846        match self {
2847            Self::LessThan => write!(f, "lessThan"),
2848            Self::LessThanOrEqual => write!(f, "lessThanOrEqual"),
2849            Self::Equal => write!(f, "equal"),
2850            Self::NotEqual => write!(f, "notEqual"),
2851            Self::GreaterThanOrEqual => write!(f, "greaterThanOrEqual"),
2852            Self::GreaterThan => write!(f, "greaterThan"),
2853            Self::Between => write!(f, "between"),
2854            Self::NotBetween => write!(f, "notBetween"),
2855            Self::ContainsText => write!(f, "containsText"),
2856            Self::NotContains => write!(f, "notContains"),
2857            Self::BeginsWith => write!(f, "beginsWith"),
2858            Self::EndsWith => write!(f, "endsWith"),
2859        }
2860    }
2861}
2862
2863impl std::str::FromStr for ConditionalOperator {
2864    type Err = String;
2865
2866    fn from_str(s: &str) -> Result<Self, Self::Err> {
2867        match s {
2868            "lessThan" => Ok(Self::LessThan),
2869            "lessThanOrEqual" => Ok(Self::LessThanOrEqual),
2870            "equal" => Ok(Self::Equal),
2871            "notEqual" => Ok(Self::NotEqual),
2872            "greaterThanOrEqual" => Ok(Self::GreaterThanOrEqual),
2873            "greaterThan" => Ok(Self::GreaterThan),
2874            "between" => Ok(Self::Between),
2875            "notBetween" => Ok(Self::NotBetween),
2876            "containsText" => Ok(Self::ContainsText),
2877            "notContains" => Ok(Self::NotContains),
2878            "beginsWith" => Ok(Self::BeginsWith),
2879            "endsWith" => Ok(Self::EndsWith),
2880            _ => Err(format!("unknown ConditionalOperator value: {}", s)),
2881        }
2882    }
2883}
2884
2885#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2886pub enum ConditionalValueType {
2887    #[serde(rename = "num")]
2888    Num,
2889    #[serde(rename = "percent")]
2890    Percent,
2891    #[serde(rename = "max")]
2892    Max,
2893    #[serde(rename = "min")]
2894    Min,
2895    #[serde(rename = "formula")]
2896    Formula,
2897    #[serde(rename = "percentile")]
2898    Percentile,
2899}
2900
2901impl std::fmt::Display for ConditionalValueType {
2902    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2903        match self {
2904            Self::Num => write!(f, "num"),
2905            Self::Percent => write!(f, "percent"),
2906            Self::Max => write!(f, "max"),
2907            Self::Min => write!(f, "min"),
2908            Self::Formula => write!(f, "formula"),
2909            Self::Percentile => write!(f, "percentile"),
2910        }
2911    }
2912}
2913
2914impl std::str::FromStr for ConditionalValueType {
2915    type Err = String;
2916
2917    fn from_str(s: &str) -> Result<Self, Self::Err> {
2918        match s {
2919            "num" => Ok(Self::Num),
2920            "percent" => Ok(Self::Percent),
2921            "max" => Ok(Self::Max),
2922            "min" => Ok(Self::Min),
2923            "formula" => Ok(Self::Formula),
2924            "percentile" => Ok(Self::Percentile),
2925            _ => Err(format!("unknown ConditionalValueType value: {}", s)),
2926        }
2927    }
2928}
2929
2930#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2931pub enum STPageOrder {
2932    #[serde(rename = "downThenOver")]
2933    DownThenOver,
2934    #[serde(rename = "overThenDown")]
2935    OverThenDown,
2936}
2937
2938impl std::fmt::Display for STPageOrder {
2939    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2940        match self {
2941            Self::DownThenOver => write!(f, "downThenOver"),
2942            Self::OverThenDown => write!(f, "overThenDown"),
2943        }
2944    }
2945}
2946
2947impl std::str::FromStr for STPageOrder {
2948    type Err = String;
2949
2950    fn from_str(s: &str) -> Result<Self, Self::Err> {
2951        match s {
2952            "downThenOver" => Ok(Self::DownThenOver),
2953            "overThenDown" => Ok(Self::OverThenDown),
2954            _ => Err(format!("unknown STPageOrder value: {}", s)),
2955        }
2956    }
2957}
2958
2959#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2960pub enum STOrientation {
2961    #[serde(rename = "default")]
2962    Default,
2963    #[serde(rename = "portrait")]
2964    Portrait,
2965    #[serde(rename = "landscape")]
2966    Landscape,
2967}
2968
2969impl std::fmt::Display for STOrientation {
2970    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2971        match self {
2972            Self::Default => write!(f, "default"),
2973            Self::Portrait => write!(f, "portrait"),
2974            Self::Landscape => write!(f, "landscape"),
2975        }
2976    }
2977}
2978
2979impl std::str::FromStr for STOrientation {
2980    type Err = String;
2981
2982    fn from_str(s: &str) -> Result<Self, Self::Err> {
2983        match s {
2984            "default" => Ok(Self::Default),
2985            "portrait" => Ok(Self::Portrait),
2986            "landscape" => Ok(Self::Landscape),
2987            _ => Err(format!("unknown STOrientation value: {}", s)),
2988        }
2989    }
2990}
2991
2992#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
2993pub enum STCellComments {
2994    #[serde(rename = "none")]
2995    None,
2996    #[serde(rename = "asDisplayed")]
2997    AsDisplayed,
2998    #[serde(rename = "atEnd")]
2999    AtEnd,
3000}
3001
3002impl std::fmt::Display for STCellComments {
3003    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3004        match self {
3005            Self::None => write!(f, "none"),
3006            Self::AsDisplayed => write!(f, "asDisplayed"),
3007            Self::AtEnd => write!(f, "atEnd"),
3008        }
3009    }
3010}
3011
3012impl std::str::FromStr for STCellComments {
3013    type Err = String;
3014
3015    fn from_str(s: &str) -> Result<Self, Self::Err> {
3016        match s {
3017            "none" => Ok(Self::None),
3018            "asDisplayed" => Ok(Self::AsDisplayed),
3019            "atEnd" => Ok(Self::AtEnd),
3020            _ => Err(format!("unknown STCellComments value: {}", s)),
3021        }
3022    }
3023}
3024
3025#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3026pub enum STPrintError {
3027    #[serde(rename = "displayed")]
3028    Displayed,
3029    #[serde(rename = "blank")]
3030    Blank,
3031    #[serde(rename = "dash")]
3032    Dash,
3033    #[serde(rename = "NA")]
3034    NA,
3035}
3036
3037impl std::fmt::Display for STPrintError {
3038    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3039        match self {
3040            Self::Displayed => write!(f, "displayed"),
3041            Self::Blank => write!(f, "blank"),
3042            Self::Dash => write!(f, "dash"),
3043            Self::NA => write!(f, "NA"),
3044        }
3045    }
3046}
3047
3048impl std::str::FromStr for STPrintError {
3049    type Err = String;
3050
3051    fn from_str(s: &str) -> Result<Self, Self::Err> {
3052        match s {
3053            "displayed" => Ok(Self::Displayed),
3054            "blank" => Ok(Self::Blank),
3055            "dash" => Ok(Self::Dash),
3056            "NA" => Ok(Self::NA),
3057            _ => Err(format!("unknown STPrintError value: {}", s)),
3058        }
3059    }
3060}
3061
3062#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3063pub enum STDvAspect {
3064    #[serde(rename = "DVASPECT_CONTENT")]
3065    DVASPECTCONTENT,
3066    #[serde(rename = "DVASPECT_ICON")]
3067    DVASPECTICON,
3068}
3069
3070impl std::fmt::Display for STDvAspect {
3071    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3072        match self {
3073            Self::DVASPECTCONTENT => write!(f, "DVASPECT_CONTENT"),
3074            Self::DVASPECTICON => write!(f, "DVASPECT_ICON"),
3075        }
3076    }
3077}
3078
3079impl std::str::FromStr for STDvAspect {
3080    type Err = String;
3081
3082    fn from_str(s: &str) -> Result<Self, Self::Err> {
3083        match s {
3084            "DVASPECT_CONTENT" => Ok(Self::DVASPECTCONTENT),
3085            "DVASPECT_ICON" => Ok(Self::DVASPECTICON),
3086            _ => Err(format!("unknown STDvAspect value: {}", s)),
3087        }
3088    }
3089}
3090
3091#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3092pub enum STOleUpdate {
3093    #[serde(rename = "OLEUPDATE_ALWAYS")]
3094    OLEUPDATEALWAYS,
3095    #[serde(rename = "OLEUPDATE_ONCALL")]
3096    OLEUPDATEONCALL,
3097}
3098
3099impl std::fmt::Display for STOleUpdate {
3100    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3101        match self {
3102            Self::OLEUPDATEALWAYS => write!(f, "OLEUPDATE_ALWAYS"),
3103            Self::OLEUPDATEONCALL => write!(f, "OLEUPDATE_ONCALL"),
3104        }
3105    }
3106}
3107
3108impl std::str::FromStr for STOleUpdate {
3109    type Err = String;
3110
3111    fn from_str(s: &str) -> Result<Self, Self::Err> {
3112        match s {
3113            "OLEUPDATE_ALWAYS" => Ok(Self::OLEUPDATEALWAYS),
3114            "OLEUPDATE_ONCALL" => Ok(Self::OLEUPDATEONCALL),
3115            _ => Err(format!("unknown STOleUpdate value: {}", s)),
3116        }
3117    }
3118}
3119
3120#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3121pub enum STWebSourceType {
3122    #[serde(rename = "sheet")]
3123    Sheet,
3124    #[serde(rename = "printArea")]
3125    PrintArea,
3126    #[serde(rename = "autoFilter")]
3127    AutoFilter,
3128    #[serde(rename = "range")]
3129    Range,
3130    #[serde(rename = "chart")]
3131    Chart,
3132    #[serde(rename = "pivotTable")]
3133    PivotTable,
3134    #[serde(rename = "query")]
3135    Query,
3136    #[serde(rename = "label")]
3137    Label,
3138}
3139
3140impl std::fmt::Display for STWebSourceType {
3141    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3142        match self {
3143            Self::Sheet => write!(f, "sheet"),
3144            Self::PrintArea => write!(f, "printArea"),
3145            Self::AutoFilter => write!(f, "autoFilter"),
3146            Self::Range => write!(f, "range"),
3147            Self::Chart => write!(f, "chart"),
3148            Self::PivotTable => write!(f, "pivotTable"),
3149            Self::Query => write!(f, "query"),
3150            Self::Label => write!(f, "label"),
3151        }
3152    }
3153}
3154
3155impl std::str::FromStr for STWebSourceType {
3156    type Err = String;
3157
3158    fn from_str(s: &str) -> Result<Self, Self::Err> {
3159        match s {
3160            "sheet" => Ok(Self::Sheet),
3161            "printArea" => Ok(Self::PrintArea),
3162            "autoFilter" => Ok(Self::AutoFilter),
3163            "range" => Ok(Self::Range),
3164            "chart" => Ok(Self::Chart),
3165            "pivotTable" => Ok(Self::PivotTable),
3166            "query" => Ok(Self::Query),
3167            "label" => Ok(Self::Label),
3168            _ => Err(format!("unknown STWebSourceType value: {}", s)),
3169        }
3170    }
3171}
3172
3173#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3174pub enum PaneState {
3175    #[serde(rename = "split")]
3176    Split,
3177    #[serde(rename = "frozen")]
3178    Frozen,
3179    #[serde(rename = "frozenSplit")]
3180    FrozenSplit,
3181}
3182
3183impl std::fmt::Display for PaneState {
3184    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3185        match self {
3186            Self::Split => write!(f, "split"),
3187            Self::Frozen => write!(f, "frozen"),
3188            Self::FrozenSplit => write!(f, "frozenSplit"),
3189        }
3190    }
3191}
3192
3193impl std::str::FromStr for PaneState {
3194    type Err = String;
3195
3196    fn from_str(s: &str) -> Result<Self, Self::Err> {
3197        match s {
3198            "split" => Ok(Self::Split),
3199            "frozen" => Ok(Self::Frozen),
3200            "frozenSplit" => Ok(Self::FrozenSplit),
3201            _ => Err(format!("unknown PaneState value: {}", s)),
3202        }
3203    }
3204}
3205
3206#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3207pub enum STMdxFunctionType {
3208    #[serde(rename = "m")]
3209    M,
3210    #[serde(rename = "v")]
3211    V,
3212    #[serde(rename = "s")]
3213    SharedString,
3214    #[serde(rename = "c")]
3215    C,
3216    #[serde(rename = "r")]
3217    R,
3218    #[serde(rename = "p")]
3219    P,
3220    #[serde(rename = "k")]
3221    K,
3222}
3223
3224impl std::fmt::Display for STMdxFunctionType {
3225    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3226        match self {
3227            Self::M => write!(f, "m"),
3228            Self::V => write!(f, "v"),
3229            Self::SharedString => write!(f, "s"),
3230            Self::C => write!(f, "c"),
3231            Self::R => write!(f, "r"),
3232            Self::P => write!(f, "p"),
3233            Self::K => write!(f, "k"),
3234        }
3235    }
3236}
3237
3238impl std::str::FromStr for STMdxFunctionType {
3239    type Err = String;
3240
3241    fn from_str(s: &str) -> Result<Self, Self::Err> {
3242        match s {
3243            "m" => Ok(Self::M),
3244            "v" => Ok(Self::V),
3245            "s" => Ok(Self::SharedString),
3246            "c" => Ok(Self::C),
3247            "r" => Ok(Self::R),
3248            "p" => Ok(Self::P),
3249            "k" => Ok(Self::K),
3250            _ => Err(format!("unknown STMdxFunctionType value: {}", s)),
3251        }
3252    }
3253}
3254
3255#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3256pub enum STMdxSetOrder {
3257    #[serde(rename = "u")]
3258    U,
3259    #[serde(rename = "a")]
3260    A,
3261    #[serde(rename = "d")]
3262    D,
3263    #[serde(rename = "aa")]
3264    Aa,
3265    #[serde(rename = "ad")]
3266    Ad,
3267    #[serde(rename = "na")]
3268    Na,
3269    #[serde(rename = "nd")]
3270    Nd,
3271}
3272
3273impl std::fmt::Display for STMdxSetOrder {
3274    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3275        match self {
3276            Self::U => write!(f, "u"),
3277            Self::A => write!(f, "a"),
3278            Self::D => write!(f, "d"),
3279            Self::Aa => write!(f, "aa"),
3280            Self::Ad => write!(f, "ad"),
3281            Self::Na => write!(f, "na"),
3282            Self::Nd => write!(f, "nd"),
3283        }
3284    }
3285}
3286
3287impl std::str::FromStr for STMdxSetOrder {
3288    type Err = String;
3289
3290    fn from_str(s: &str) -> Result<Self, Self::Err> {
3291        match s {
3292            "u" => Ok(Self::U),
3293            "a" => Ok(Self::A),
3294            "d" => Ok(Self::D),
3295            "aa" => Ok(Self::Aa),
3296            "ad" => Ok(Self::Ad),
3297            "na" => Ok(Self::Na),
3298            "nd" => Ok(Self::Nd),
3299            _ => Err(format!("unknown STMdxSetOrder value: {}", s)),
3300        }
3301    }
3302}
3303
3304#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3305pub enum STMdxKPIProperty {
3306    #[serde(rename = "v")]
3307    V,
3308    #[serde(rename = "g")]
3309    G,
3310    #[serde(rename = "s")]
3311    SharedString,
3312    #[serde(rename = "t")]
3313    T,
3314    #[serde(rename = "w")]
3315    W,
3316    #[serde(rename = "m")]
3317    M,
3318}
3319
3320impl std::fmt::Display for STMdxKPIProperty {
3321    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3322        match self {
3323            Self::V => write!(f, "v"),
3324            Self::G => write!(f, "g"),
3325            Self::SharedString => write!(f, "s"),
3326            Self::T => write!(f, "t"),
3327            Self::W => write!(f, "w"),
3328            Self::M => write!(f, "m"),
3329        }
3330    }
3331}
3332
3333impl std::str::FromStr for STMdxKPIProperty {
3334    type Err = String;
3335
3336    fn from_str(s: &str) -> Result<Self, Self::Err> {
3337        match s {
3338            "v" => Ok(Self::V),
3339            "g" => Ok(Self::G),
3340            "s" => Ok(Self::SharedString),
3341            "t" => Ok(Self::T),
3342            "w" => Ok(Self::W),
3343            "m" => Ok(Self::M),
3344            _ => Err(format!("unknown STMdxKPIProperty value: {}", s)),
3345        }
3346    }
3347}
3348
3349pub type STTextRotation = String;
3350
3351#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3352pub enum BorderStyle {
3353    #[serde(rename = "none")]
3354    None,
3355    #[serde(rename = "thin")]
3356    Thin,
3357    #[serde(rename = "medium")]
3358    Medium,
3359    #[serde(rename = "dashed")]
3360    Dashed,
3361    #[serde(rename = "dotted")]
3362    Dotted,
3363    #[serde(rename = "thick")]
3364    Thick,
3365    #[serde(rename = "double")]
3366    Double,
3367    #[serde(rename = "hair")]
3368    Hair,
3369    #[serde(rename = "mediumDashed")]
3370    MediumDashed,
3371    #[serde(rename = "dashDot")]
3372    DashDot,
3373    #[serde(rename = "mediumDashDot")]
3374    MediumDashDot,
3375    #[serde(rename = "dashDotDot")]
3376    DashDotDot,
3377    #[serde(rename = "mediumDashDotDot")]
3378    MediumDashDotDot,
3379    #[serde(rename = "slantDashDot")]
3380    SlantDashDot,
3381}
3382
3383impl std::fmt::Display for BorderStyle {
3384    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3385        match self {
3386            Self::None => write!(f, "none"),
3387            Self::Thin => write!(f, "thin"),
3388            Self::Medium => write!(f, "medium"),
3389            Self::Dashed => write!(f, "dashed"),
3390            Self::Dotted => write!(f, "dotted"),
3391            Self::Thick => write!(f, "thick"),
3392            Self::Double => write!(f, "double"),
3393            Self::Hair => write!(f, "hair"),
3394            Self::MediumDashed => write!(f, "mediumDashed"),
3395            Self::DashDot => write!(f, "dashDot"),
3396            Self::MediumDashDot => write!(f, "mediumDashDot"),
3397            Self::DashDotDot => write!(f, "dashDotDot"),
3398            Self::MediumDashDotDot => write!(f, "mediumDashDotDot"),
3399            Self::SlantDashDot => write!(f, "slantDashDot"),
3400        }
3401    }
3402}
3403
3404impl std::str::FromStr for BorderStyle {
3405    type Err = String;
3406
3407    fn from_str(s: &str) -> Result<Self, Self::Err> {
3408        match s {
3409            "none" => Ok(Self::None),
3410            "thin" => Ok(Self::Thin),
3411            "medium" => Ok(Self::Medium),
3412            "dashed" => Ok(Self::Dashed),
3413            "dotted" => Ok(Self::Dotted),
3414            "thick" => Ok(Self::Thick),
3415            "double" => Ok(Self::Double),
3416            "hair" => Ok(Self::Hair),
3417            "mediumDashed" => Ok(Self::MediumDashed),
3418            "dashDot" => Ok(Self::DashDot),
3419            "mediumDashDot" => Ok(Self::MediumDashDot),
3420            "dashDotDot" => Ok(Self::DashDotDot),
3421            "mediumDashDotDot" => Ok(Self::MediumDashDotDot),
3422            "slantDashDot" => Ok(Self::SlantDashDot),
3423            _ => Err(format!("unknown BorderStyle value: {}", s)),
3424        }
3425    }
3426}
3427
3428#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3429pub enum PatternType {
3430    #[serde(rename = "none")]
3431    None,
3432    #[serde(rename = "solid")]
3433    Solid,
3434    #[serde(rename = "mediumGray")]
3435    MediumGray,
3436    #[serde(rename = "darkGray")]
3437    DarkGray,
3438    #[serde(rename = "lightGray")]
3439    LightGray,
3440    #[serde(rename = "darkHorizontal")]
3441    DarkHorizontal,
3442    #[serde(rename = "darkVertical")]
3443    DarkVertical,
3444    #[serde(rename = "darkDown")]
3445    DarkDown,
3446    #[serde(rename = "darkUp")]
3447    DarkUp,
3448    #[serde(rename = "darkGrid")]
3449    DarkGrid,
3450    #[serde(rename = "darkTrellis")]
3451    DarkTrellis,
3452    #[serde(rename = "lightHorizontal")]
3453    LightHorizontal,
3454    #[serde(rename = "lightVertical")]
3455    LightVertical,
3456    #[serde(rename = "lightDown")]
3457    LightDown,
3458    #[serde(rename = "lightUp")]
3459    LightUp,
3460    #[serde(rename = "lightGrid")]
3461    LightGrid,
3462    #[serde(rename = "lightTrellis")]
3463    LightTrellis,
3464    #[serde(rename = "gray125")]
3465    Gray125,
3466    #[serde(rename = "gray0625")]
3467    Gray0625,
3468}
3469
3470impl std::fmt::Display for PatternType {
3471    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3472        match self {
3473            Self::None => write!(f, "none"),
3474            Self::Solid => write!(f, "solid"),
3475            Self::MediumGray => write!(f, "mediumGray"),
3476            Self::DarkGray => write!(f, "darkGray"),
3477            Self::LightGray => write!(f, "lightGray"),
3478            Self::DarkHorizontal => write!(f, "darkHorizontal"),
3479            Self::DarkVertical => write!(f, "darkVertical"),
3480            Self::DarkDown => write!(f, "darkDown"),
3481            Self::DarkUp => write!(f, "darkUp"),
3482            Self::DarkGrid => write!(f, "darkGrid"),
3483            Self::DarkTrellis => write!(f, "darkTrellis"),
3484            Self::LightHorizontal => write!(f, "lightHorizontal"),
3485            Self::LightVertical => write!(f, "lightVertical"),
3486            Self::LightDown => write!(f, "lightDown"),
3487            Self::LightUp => write!(f, "lightUp"),
3488            Self::LightGrid => write!(f, "lightGrid"),
3489            Self::LightTrellis => write!(f, "lightTrellis"),
3490            Self::Gray125 => write!(f, "gray125"),
3491            Self::Gray0625 => write!(f, "gray0625"),
3492        }
3493    }
3494}
3495
3496impl std::str::FromStr for PatternType {
3497    type Err = String;
3498
3499    fn from_str(s: &str) -> Result<Self, Self::Err> {
3500        match s {
3501            "none" => Ok(Self::None),
3502            "solid" => Ok(Self::Solid),
3503            "mediumGray" => Ok(Self::MediumGray),
3504            "darkGray" => Ok(Self::DarkGray),
3505            "lightGray" => Ok(Self::LightGray),
3506            "darkHorizontal" => Ok(Self::DarkHorizontal),
3507            "darkVertical" => Ok(Self::DarkVertical),
3508            "darkDown" => Ok(Self::DarkDown),
3509            "darkUp" => Ok(Self::DarkUp),
3510            "darkGrid" => Ok(Self::DarkGrid),
3511            "darkTrellis" => Ok(Self::DarkTrellis),
3512            "lightHorizontal" => Ok(Self::LightHorizontal),
3513            "lightVertical" => Ok(Self::LightVertical),
3514            "lightDown" => Ok(Self::LightDown),
3515            "lightUp" => Ok(Self::LightUp),
3516            "lightGrid" => Ok(Self::LightGrid),
3517            "lightTrellis" => Ok(Self::LightTrellis),
3518            "gray125" => Ok(Self::Gray125),
3519            "gray0625" => Ok(Self::Gray0625),
3520            _ => Err(format!("unknown PatternType value: {}", s)),
3521        }
3522    }
3523}
3524
3525#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3526pub enum GradientType {
3527    #[serde(rename = "linear")]
3528    Linear,
3529    #[serde(rename = "path")]
3530    Path,
3531}
3532
3533impl std::fmt::Display for GradientType {
3534    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3535        match self {
3536            Self::Linear => write!(f, "linear"),
3537            Self::Path => write!(f, "path"),
3538        }
3539    }
3540}
3541
3542impl std::str::FromStr for GradientType {
3543    type Err = String;
3544
3545    fn from_str(s: &str) -> Result<Self, Self::Err> {
3546        match s {
3547            "linear" => Ok(Self::Linear),
3548            "path" => Ok(Self::Path),
3549            _ => Err(format!("unknown GradientType value: {}", s)),
3550        }
3551    }
3552}
3553
3554#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3555pub enum HorizontalAlignment {
3556    #[serde(rename = "general")]
3557    General,
3558    #[serde(rename = "left")]
3559    Left,
3560    #[serde(rename = "center")]
3561    Center,
3562    #[serde(rename = "right")]
3563    Right,
3564    #[serde(rename = "fill")]
3565    Fill,
3566    #[serde(rename = "justify")]
3567    Justify,
3568    #[serde(rename = "centerContinuous")]
3569    CenterContinuous,
3570    #[serde(rename = "distributed")]
3571    Distributed,
3572}
3573
3574impl std::fmt::Display for HorizontalAlignment {
3575    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3576        match self {
3577            Self::General => write!(f, "general"),
3578            Self::Left => write!(f, "left"),
3579            Self::Center => write!(f, "center"),
3580            Self::Right => write!(f, "right"),
3581            Self::Fill => write!(f, "fill"),
3582            Self::Justify => write!(f, "justify"),
3583            Self::CenterContinuous => write!(f, "centerContinuous"),
3584            Self::Distributed => write!(f, "distributed"),
3585        }
3586    }
3587}
3588
3589impl std::str::FromStr for HorizontalAlignment {
3590    type Err = String;
3591
3592    fn from_str(s: &str) -> Result<Self, Self::Err> {
3593        match s {
3594            "general" => Ok(Self::General),
3595            "left" => Ok(Self::Left),
3596            "center" => Ok(Self::Center),
3597            "right" => Ok(Self::Right),
3598            "fill" => Ok(Self::Fill),
3599            "justify" => Ok(Self::Justify),
3600            "centerContinuous" => Ok(Self::CenterContinuous),
3601            "distributed" => Ok(Self::Distributed),
3602            _ => Err(format!("unknown HorizontalAlignment value: {}", s)),
3603        }
3604    }
3605}
3606
3607#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3608pub enum VerticalAlignment {
3609    #[serde(rename = "top")]
3610    Top,
3611    #[serde(rename = "center")]
3612    Center,
3613    #[serde(rename = "bottom")]
3614    Bottom,
3615    #[serde(rename = "justify")]
3616    Justify,
3617    #[serde(rename = "distributed")]
3618    Distributed,
3619}
3620
3621impl std::fmt::Display for VerticalAlignment {
3622    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3623        match self {
3624            Self::Top => write!(f, "top"),
3625            Self::Center => write!(f, "center"),
3626            Self::Bottom => write!(f, "bottom"),
3627            Self::Justify => write!(f, "justify"),
3628            Self::Distributed => write!(f, "distributed"),
3629        }
3630    }
3631}
3632
3633impl std::str::FromStr for VerticalAlignment {
3634    type Err = String;
3635
3636    fn from_str(s: &str) -> Result<Self, Self::Err> {
3637        match s {
3638            "top" => Ok(Self::Top),
3639            "center" => Ok(Self::Center),
3640            "bottom" => Ok(Self::Bottom),
3641            "justify" => Ok(Self::Justify),
3642            "distributed" => Ok(Self::Distributed),
3643            _ => Err(format!("unknown VerticalAlignment value: {}", s)),
3644        }
3645    }
3646}
3647
3648pub type STNumFmtId = u32;
3649
3650pub type STFontId = u32;
3651
3652pub type STFillId = u32;
3653
3654pub type STBorderId = u32;
3655
3656pub type STCellStyleXfId = u32;
3657
3658pub type STDxfId = u32;
3659
3660#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3661pub enum STTableStyleType {
3662    #[serde(rename = "wholeTable")]
3663    WholeTable,
3664    #[serde(rename = "headerRow")]
3665    HeaderRow,
3666    #[serde(rename = "totalRow")]
3667    TotalRow,
3668    #[serde(rename = "firstColumn")]
3669    FirstColumn,
3670    #[serde(rename = "lastColumn")]
3671    LastColumn,
3672    #[serde(rename = "firstRowStripe")]
3673    FirstRowStripe,
3674    #[serde(rename = "secondRowStripe")]
3675    SecondRowStripe,
3676    #[serde(rename = "firstColumnStripe")]
3677    FirstColumnStripe,
3678    #[serde(rename = "secondColumnStripe")]
3679    SecondColumnStripe,
3680    #[serde(rename = "firstHeaderCell")]
3681    FirstHeaderCell,
3682    #[serde(rename = "lastHeaderCell")]
3683    LastHeaderCell,
3684    #[serde(rename = "firstTotalCell")]
3685    FirstTotalCell,
3686    #[serde(rename = "lastTotalCell")]
3687    LastTotalCell,
3688    #[serde(rename = "firstSubtotalColumn")]
3689    FirstSubtotalColumn,
3690    #[serde(rename = "secondSubtotalColumn")]
3691    SecondSubtotalColumn,
3692    #[serde(rename = "thirdSubtotalColumn")]
3693    ThirdSubtotalColumn,
3694    #[serde(rename = "firstSubtotalRow")]
3695    FirstSubtotalRow,
3696    #[serde(rename = "secondSubtotalRow")]
3697    SecondSubtotalRow,
3698    #[serde(rename = "thirdSubtotalRow")]
3699    ThirdSubtotalRow,
3700    #[serde(rename = "blankRow")]
3701    BlankRow,
3702    #[serde(rename = "firstColumnSubheading")]
3703    FirstColumnSubheading,
3704    #[serde(rename = "secondColumnSubheading")]
3705    SecondColumnSubheading,
3706    #[serde(rename = "thirdColumnSubheading")]
3707    ThirdColumnSubheading,
3708    #[serde(rename = "firstRowSubheading")]
3709    FirstRowSubheading,
3710    #[serde(rename = "secondRowSubheading")]
3711    SecondRowSubheading,
3712    #[serde(rename = "thirdRowSubheading")]
3713    ThirdRowSubheading,
3714    #[serde(rename = "pageFieldLabels")]
3715    PageFieldLabels,
3716    #[serde(rename = "pageFieldValues")]
3717    PageFieldValues,
3718}
3719
3720impl std::fmt::Display for STTableStyleType {
3721    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3722        match self {
3723            Self::WholeTable => write!(f, "wholeTable"),
3724            Self::HeaderRow => write!(f, "headerRow"),
3725            Self::TotalRow => write!(f, "totalRow"),
3726            Self::FirstColumn => write!(f, "firstColumn"),
3727            Self::LastColumn => write!(f, "lastColumn"),
3728            Self::FirstRowStripe => write!(f, "firstRowStripe"),
3729            Self::SecondRowStripe => write!(f, "secondRowStripe"),
3730            Self::FirstColumnStripe => write!(f, "firstColumnStripe"),
3731            Self::SecondColumnStripe => write!(f, "secondColumnStripe"),
3732            Self::FirstHeaderCell => write!(f, "firstHeaderCell"),
3733            Self::LastHeaderCell => write!(f, "lastHeaderCell"),
3734            Self::FirstTotalCell => write!(f, "firstTotalCell"),
3735            Self::LastTotalCell => write!(f, "lastTotalCell"),
3736            Self::FirstSubtotalColumn => write!(f, "firstSubtotalColumn"),
3737            Self::SecondSubtotalColumn => write!(f, "secondSubtotalColumn"),
3738            Self::ThirdSubtotalColumn => write!(f, "thirdSubtotalColumn"),
3739            Self::FirstSubtotalRow => write!(f, "firstSubtotalRow"),
3740            Self::SecondSubtotalRow => write!(f, "secondSubtotalRow"),
3741            Self::ThirdSubtotalRow => write!(f, "thirdSubtotalRow"),
3742            Self::BlankRow => write!(f, "blankRow"),
3743            Self::FirstColumnSubheading => write!(f, "firstColumnSubheading"),
3744            Self::SecondColumnSubheading => write!(f, "secondColumnSubheading"),
3745            Self::ThirdColumnSubheading => write!(f, "thirdColumnSubheading"),
3746            Self::FirstRowSubheading => write!(f, "firstRowSubheading"),
3747            Self::SecondRowSubheading => write!(f, "secondRowSubheading"),
3748            Self::ThirdRowSubheading => write!(f, "thirdRowSubheading"),
3749            Self::PageFieldLabels => write!(f, "pageFieldLabels"),
3750            Self::PageFieldValues => write!(f, "pageFieldValues"),
3751        }
3752    }
3753}
3754
3755impl std::str::FromStr for STTableStyleType {
3756    type Err = String;
3757
3758    fn from_str(s: &str) -> Result<Self, Self::Err> {
3759        match s {
3760            "wholeTable" => Ok(Self::WholeTable),
3761            "headerRow" => Ok(Self::HeaderRow),
3762            "totalRow" => Ok(Self::TotalRow),
3763            "firstColumn" => Ok(Self::FirstColumn),
3764            "lastColumn" => Ok(Self::LastColumn),
3765            "firstRowStripe" => Ok(Self::FirstRowStripe),
3766            "secondRowStripe" => Ok(Self::SecondRowStripe),
3767            "firstColumnStripe" => Ok(Self::FirstColumnStripe),
3768            "secondColumnStripe" => Ok(Self::SecondColumnStripe),
3769            "firstHeaderCell" => Ok(Self::FirstHeaderCell),
3770            "lastHeaderCell" => Ok(Self::LastHeaderCell),
3771            "firstTotalCell" => Ok(Self::FirstTotalCell),
3772            "lastTotalCell" => Ok(Self::LastTotalCell),
3773            "firstSubtotalColumn" => Ok(Self::FirstSubtotalColumn),
3774            "secondSubtotalColumn" => Ok(Self::SecondSubtotalColumn),
3775            "thirdSubtotalColumn" => Ok(Self::ThirdSubtotalColumn),
3776            "firstSubtotalRow" => Ok(Self::FirstSubtotalRow),
3777            "secondSubtotalRow" => Ok(Self::SecondSubtotalRow),
3778            "thirdSubtotalRow" => Ok(Self::ThirdSubtotalRow),
3779            "blankRow" => Ok(Self::BlankRow),
3780            "firstColumnSubheading" => Ok(Self::FirstColumnSubheading),
3781            "secondColumnSubheading" => Ok(Self::SecondColumnSubheading),
3782            "thirdColumnSubheading" => Ok(Self::ThirdColumnSubheading),
3783            "firstRowSubheading" => Ok(Self::FirstRowSubheading),
3784            "secondRowSubheading" => Ok(Self::SecondRowSubheading),
3785            "thirdRowSubheading" => Ok(Self::ThirdRowSubheading),
3786            "pageFieldLabels" => Ok(Self::PageFieldLabels),
3787            "pageFieldValues" => Ok(Self::PageFieldValues),
3788            _ => Err(format!("unknown STTableStyleType value: {}", s)),
3789        }
3790    }
3791}
3792
3793#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3794pub enum FontScheme {
3795    #[serde(rename = "none")]
3796    None,
3797    #[serde(rename = "major")]
3798    Major,
3799    #[serde(rename = "minor")]
3800    Minor,
3801}
3802
3803impl std::fmt::Display for FontScheme {
3804    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3805        match self {
3806            Self::None => write!(f, "none"),
3807            Self::Major => write!(f, "major"),
3808            Self::Minor => write!(f, "minor"),
3809        }
3810    }
3811}
3812
3813impl std::str::FromStr for FontScheme {
3814    type Err = String;
3815
3816    fn from_str(s: &str) -> Result<Self, Self::Err> {
3817        match s {
3818            "none" => Ok(Self::None),
3819            "major" => Ok(Self::Major),
3820            "minor" => Ok(Self::Minor),
3821            _ => Err(format!("unknown FontScheme value: {}", s)),
3822        }
3823    }
3824}
3825
3826#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3827pub enum UnderlineStyle {
3828    #[serde(rename = "single")]
3829    Single,
3830    #[serde(rename = "double")]
3831    Double,
3832    #[serde(rename = "singleAccounting")]
3833    SingleAccounting,
3834    #[serde(rename = "doubleAccounting")]
3835    DoubleAccounting,
3836    #[serde(rename = "none")]
3837    None,
3838}
3839
3840impl std::fmt::Display for UnderlineStyle {
3841    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3842        match self {
3843            Self::Single => write!(f, "single"),
3844            Self::Double => write!(f, "double"),
3845            Self::SingleAccounting => write!(f, "singleAccounting"),
3846            Self::DoubleAccounting => write!(f, "doubleAccounting"),
3847            Self::None => write!(f, "none"),
3848        }
3849    }
3850}
3851
3852impl std::str::FromStr for UnderlineStyle {
3853    type Err = String;
3854
3855    fn from_str(s: &str) -> Result<Self, Self::Err> {
3856        match s {
3857            "single" => Ok(Self::Single),
3858            "double" => Ok(Self::Double),
3859            "singleAccounting" => Ok(Self::SingleAccounting),
3860            "doubleAccounting" => Ok(Self::DoubleAccounting),
3861            "none" => Ok(Self::None),
3862            _ => Err(format!("unknown UnderlineStyle value: {}", s)),
3863        }
3864    }
3865}
3866
3867pub type STFontFamily = i64;
3868
3869#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3870pub enum STDdeValueType {
3871    #[serde(rename = "nil")]
3872    Nil,
3873    #[serde(rename = "b")]
3874    Boolean,
3875    #[serde(rename = "n")]
3876    Number,
3877    #[serde(rename = "e")]
3878    Error,
3879    #[serde(rename = "str")]
3880    String,
3881}
3882
3883impl std::fmt::Display for STDdeValueType {
3884    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3885        match self {
3886            Self::Nil => write!(f, "nil"),
3887            Self::Boolean => write!(f, "b"),
3888            Self::Number => write!(f, "n"),
3889            Self::Error => write!(f, "e"),
3890            Self::String => write!(f, "str"),
3891        }
3892    }
3893}
3894
3895impl std::str::FromStr for STDdeValueType {
3896    type Err = String;
3897
3898    fn from_str(s: &str) -> Result<Self, Self::Err> {
3899        match s {
3900            "nil" => Ok(Self::Nil),
3901            "b" => Ok(Self::Boolean),
3902            "n" => Ok(Self::Number),
3903            "e" => Ok(Self::Error),
3904            "str" => Ok(Self::String),
3905            _ => Err(format!("unknown STDdeValueType value: {}", s)),
3906        }
3907    }
3908}
3909
3910#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3911pub enum STTableType {
3912    #[serde(rename = "worksheet")]
3913    Worksheet,
3914    #[serde(rename = "xml")]
3915    Xml,
3916    #[serde(rename = "queryTable")]
3917    QueryTable,
3918}
3919
3920impl std::fmt::Display for STTableType {
3921    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3922        match self {
3923            Self::Worksheet => write!(f, "worksheet"),
3924            Self::Xml => write!(f, "xml"),
3925            Self::QueryTable => write!(f, "queryTable"),
3926        }
3927    }
3928}
3929
3930impl std::str::FromStr for STTableType {
3931    type Err = String;
3932
3933    fn from_str(s: &str) -> Result<Self, Self::Err> {
3934        match s {
3935            "worksheet" => Ok(Self::Worksheet),
3936            "xml" => Ok(Self::Xml),
3937            "queryTable" => Ok(Self::QueryTable),
3938            _ => Err(format!("unknown STTableType value: {}", s)),
3939        }
3940    }
3941}
3942
3943#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
3944pub enum STTotalsRowFunction {
3945    #[serde(rename = "none")]
3946    None,
3947    #[serde(rename = "sum")]
3948    Sum,
3949    #[serde(rename = "min")]
3950    Min,
3951    #[serde(rename = "max")]
3952    Max,
3953    #[serde(rename = "average")]
3954    Average,
3955    #[serde(rename = "count")]
3956    Count,
3957    #[serde(rename = "countNums")]
3958    CountNums,
3959    #[serde(rename = "stdDev")]
3960    StdDev,
3961    #[serde(rename = "var")]
3962    Var,
3963    #[serde(rename = "custom")]
3964    Custom,
3965}
3966
3967impl std::fmt::Display for STTotalsRowFunction {
3968    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3969        match self {
3970            Self::None => write!(f, "none"),
3971            Self::Sum => write!(f, "sum"),
3972            Self::Min => write!(f, "min"),
3973            Self::Max => write!(f, "max"),
3974            Self::Average => write!(f, "average"),
3975            Self::Count => write!(f, "count"),
3976            Self::CountNums => write!(f, "countNums"),
3977            Self::StdDev => write!(f, "stdDev"),
3978            Self::Var => write!(f, "var"),
3979            Self::Custom => write!(f, "custom"),
3980        }
3981    }
3982}
3983
3984impl std::str::FromStr for STTotalsRowFunction {
3985    type Err = String;
3986
3987    fn from_str(s: &str) -> Result<Self, Self::Err> {
3988        match s {
3989            "none" => Ok(Self::None),
3990            "sum" => Ok(Self::Sum),
3991            "min" => Ok(Self::Min),
3992            "max" => Ok(Self::Max),
3993            "average" => Ok(Self::Average),
3994            "count" => Ok(Self::Count),
3995            "countNums" => Ok(Self::CountNums),
3996            "stdDev" => Ok(Self::StdDev),
3997            "var" => Ok(Self::Var),
3998            "custom" => Ok(Self::Custom),
3999            _ => Err(format!("unknown STTotalsRowFunction value: {}", s)),
4000        }
4001    }
4002}
4003
4004pub type STXmlDataType = String;
4005
4006#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4007pub enum STVolDepType {
4008    #[serde(rename = "realTimeData")]
4009    RealTimeData,
4010    #[serde(rename = "olapFunctions")]
4011    OlapFunctions,
4012}
4013
4014impl std::fmt::Display for STVolDepType {
4015    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4016        match self {
4017            Self::RealTimeData => write!(f, "realTimeData"),
4018            Self::OlapFunctions => write!(f, "olapFunctions"),
4019        }
4020    }
4021}
4022
4023impl std::str::FromStr for STVolDepType {
4024    type Err = String;
4025
4026    fn from_str(s: &str) -> Result<Self, Self::Err> {
4027        match s {
4028            "realTimeData" => Ok(Self::RealTimeData),
4029            "olapFunctions" => Ok(Self::OlapFunctions),
4030            _ => Err(format!("unknown STVolDepType value: {}", s)),
4031        }
4032    }
4033}
4034
4035#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4036pub enum STVolValueType {
4037    #[serde(rename = "b")]
4038    Boolean,
4039    #[serde(rename = "n")]
4040    Number,
4041    #[serde(rename = "e")]
4042    Error,
4043    #[serde(rename = "s")]
4044    SharedString,
4045}
4046
4047impl std::fmt::Display for STVolValueType {
4048    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4049        match self {
4050            Self::Boolean => write!(f, "b"),
4051            Self::Number => write!(f, "n"),
4052            Self::Error => write!(f, "e"),
4053            Self::SharedString => write!(f, "s"),
4054        }
4055    }
4056}
4057
4058impl std::str::FromStr for STVolValueType {
4059    type Err = String;
4060
4061    fn from_str(s: &str) -> Result<Self, Self::Err> {
4062        match s {
4063            "b" => Ok(Self::Boolean),
4064            "n" => Ok(Self::Number),
4065            "e" => Ok(Self::Error),
4066            "s" => Ok(Self::SharedString),
4067            _ => Err(format!("unknown STVolValueType value: {}", s)),
4068        }
4069    }
4070}
4071
4072#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4073pub enum Visibility {
4074    #[serde(rename = "visible")]
4075    Visible,
4076    #[serde(rename = "hidden")]
4077    Hidden,
4078    #[serde(rename = "veryHidden")]
4079    VeryHidden,
4080}
4081
4082impl std::fmt::Display for Visibility {
4083    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4084        match self {
4085            Self::Visible => write!(f, "visible"),
4086            Self::Hidden => write!(f, "hidden"),
4087            Self::VeryHidden => write!(f, "veryHidden"),
4088        }
4089    }
4090}
4091
4092impl std::str::FromStr for Visibility {
4093    type Err = String;
4094
4095    fn from_str(s: &str) -> Result<Self, Self::Err> {
4096        match s {
4097            "visible" => Ok(Self::Visible),
4098            "hidden" => Ok(Self::Hidden),
4099            "veryHidden" => Ok(Self::VeryHidden),
4100            _ => Err(format!("unknown Visibility value: {}", s)),
4101        }
4102    }
4103}
4104
4105#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4106pub enum CommentVisibility {
4107    #[serde(rename = "commNone")]
4108    CommNone,
4109    #[serde(rename = "commIndicator")]
4110    CommIndicator,
4111    #[serde(rename = "commIndAndComment")]
4112    CommIndAndComment,
4113}
4114
4115impl std::fmt::Display for CommentVisibility {
4116    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4117        match self {
4118            Self::CommNone => write!(f, "commNone"),
4119            Self::CommIndicator => write!(f, "commIndicator"),
4120            Self::CommIndAndComment => write!(f, "commIndAndComment"),
4121        }
4122    }
4123}
4124
4125impl std::str::FromStr for CommentVisibility {
4126    type Err = String;
4127
4128    fn from_str(s: &str) -> Result<Self, Self::Err> {
4129        match s {
4130            "commNone" => Ok(Self::CommNone),
4131            "commIndicator" => Ok(Self::CommIndicator),
4132            "commIndAndComment" => Ok(Self::CommIndAndComment),
4133            _ => Err(format!("unknown CommentVisibility value: {}", s)),
4134        }
4135    }
4136}
4137
4138#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4139pub enum ObjectVisibility {
4140    #[serde(rename = "all")]
4141    All,
4142    #[serde(rename = "placeholders")]
4143    Placeholders,
4144    #[serde(rename = "none")]
4145    None,
4146}
4147
4148impl std::fmt::Display for ObjectVisibility {
4149    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4150        match self {
4151            Self::All => write!(f, "all"),
4152            Self::Placeholders => write!(f, "placeholders"),
4153            Self::None => write!(f, "none"),
4154        }
4155    }
4156}
4157
4158impl std::str::FromStr for ObjectVisibility {
4159    type Err = String;
4160
4161    fn from_str(s: &str) -> Result<Self, Self::Err> {
4162        match s {
4163            "all" => Ok(Self::All),
4164            "placeholders" => Ok(Self::Placeholders),
4165            "none" => Ok(Self::None),
4166            _ => Err(format!("unknown ObjectVisibility value: {}", s)),
4167        }
4168    }
4169}
4170
4171#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4172pub enum SheetState {
4173    #[serde(rename = "visible")]
4174    Visible,
4175    #[serde(rename = "hidden")]
4176    Hidden,
4177    #[serde(rename = "veryHidden")]
4178    VeryHidden,
4179}
4180
4181impl std::fmt::Display for SheetState {
4182    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4183        match self {
4184            Self::Visible => write!(f, "visible"),
4185            Self::Hidden => write!(f, "hidden"),
4186            Self::VeryHidden => write!(f, "veryHidden"),
4187        }
4188    }
4189}
4190
4191impl std::str::FromStr for SheetState {
4192    type Err = String;
4193
4194    fn from_str(s: &str) -> Result<Self, Self::Err> {
4195        match s {
4196            "visible" => Ok(Self::Visible),
4197            "hidden" => Ok(Self::Hidden),
4198            "veryHidden" => Ok(Self::VeryHidden),
4199            _ => Err(format!("unknown SheetState value: {}", s)),
4200        }
4201    }
4202}
4203
4204#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4205pub enum UpdateLinks {
4206    #[serde(rename = "userSet")]
4207    UserSet,
4208    #[serde(rename = "never")]
4209    Never,
4210    #[serde(rename = "always")]
4211    Always,
4212}
4213
4214impl std::fmt::Display for UpdateLinks {
4215    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4216        match self {
4217            Self::UserSet => write!(f, "userSet"),
4218            Self::Never => write!(f, "never"),
4219            Self::Always => write!(f, "always"),
4220        }
4221    }
4222}
4223
4224impl std::str::FromStr for UpdateLinks {
4225    type Err = String;
4226
4227    fn from_str(s: &str) -> Result<Self, Self::Err> {
4228        match s {
4229            "userSet" => Ok(Self::UserSet),
4230            "never" => Ok(Self::Never),
4231            "always" => Ok(Self::Always),
4232            _ => Err(format!("unknown UpdateLinks value: {}", s)),
4233        }
4234    }
4235}
4236
4237#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4238pub enum STSmartTagShow {
4239    #[serde(rename = "all")]
4240    All,
4241    #[serde(rename = "none")]
4242    None,
4243    #[serde(rename = "noIndicator")]
4244    NoIndicator,
4245}
4246
4247impl std::fmt::Display for STSmartTagShow {
4248    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4249        match self {
4250            Self::All => write!(f, "all"),
4251            Self::None => write!(f, "none"),
4252            Self::NoIndicator => write!(f, "noIndicator"),
4253        }
4254    }
4255}
4256
4257impl std::str::FromStr for STSmartTagShow {
4258    type Err = String;
4259
4260    fn from_str(s: &str) -> Result<Self, Self::Err> {
4261        match s {
4262            "all" => Ok(Self::All),
4263            "none" => Ok(Self::None),
4264            "noIndicator" => Ok(Self::NoIndicator),
4265            _ => Err(format!("unknown STSmartTagShow value: {}", s)),
4266        }
4267    }
4268}
4269
4270#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4271pub enum CalculationMode {
4272    #[serde(rename = "manual")]
4273    Manual,
4274    #[serde(rename = "auto")]
4275    Auto,
4276    #[serde(rename = "autoNoTable")]
4277    AutoNoTable,
4278}
4279
4280impl std::fmt::Display for CalculationMode {
4281    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4282        match self {
4283            Self::Manual => write!(f, "manual"),
4284            Self::Auto => write!(f, "auto"),
4285            Self::AutoNoTable => write!(f, "autoNoTable"),
4286        }
4287    }
4288}
4289
4290impl std::str::FromStr for CalculationMode {
4291    type Err = String;
4292
4293    fn from_str(s: &str) -> Result<Self, Self::Err> {
4294        match s {
4295            "manual" => Ok(Self::Manual),
4296            "auto" => Ok(Self::Auto),
4297            "autoNoTable" => Ok(Self::AutoNoTable),
4298            _ => Err(format!("unknown CalculationMode value: {}", s)),
4299        }
4300    }
4301}
4302
4303#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4304pub enum ReferenceMode {
4305    #[serde(rename = "A1")]
4306    A1,
4307    #[serde(rename = "R1C1")]
4308    R1C1,
4309}
4310
4311impl std::fmt::Display for ReferenceMode {
4312    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4313        match self {
4314            Self::A1 => write!(f, "A1"),
4315            Self::R1C1 => write!(f, "R1C1"),
4316        }
4317    }
4318}
4319
4320impl std::str::FromStr for ReferenceMode {
4321    type Err = String;
4322
4323    fn from_str(s: &str) -> Result<Self, Self::Err> {
4324        match s {
4325            "A1" => Ok(Self::A1),
4326            "R1C1" => Ok(Self::R1C1),
4327            _ => Err(format!("unknown ReferenceMode value: {}", s)),
4328        }
4329    }
4330}
4331
4332#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4333pub enum STTargetScreenSize {
4334    #[serde(rename = "544x376")]
4335    _544x376,
4336    #[serde(rename = "640x480")]
4337    _640x480,
4338    #[serde(rename = "720x512")]
4339    _720x512,
4340    #[serde(rename = "800x600")]
4341    _800x600,
4342    #[serde(rename = "1024x768")]
4343    _1024x768,
4344    #[serde(rename = "1152x882")]
4345    _1152x882,
4346    #[serde(rename = "1152x900")]
4347    _1152x900,
4348    #[serde(rename = "1280x1024")]
4349    _1280x1024,
4350    #[serde(rename = "1600x1200")]
4351    _1600x1200,
4352    #[serde(rename = "1800x1440")]
4353    _1800x1440,
4354    #[serde(rename = "1920x1200")]
4355    _1920x1200,
4356}
4357
4358impl std::fmt::Display for STTargetScreenSize {
4359    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4360        match self {
4361            Self::_544x376 => write!(f, "544x376"),
4362            Self::_640x480 => write!(f, "640x480"),
4363            Self::_720x512 => write!(f, "720x512"),
4364            Self::_800x600 => write!(f, "800x600"),
4365            Self::_1024x768 => write!(f, "1024x768"),
4366            Self::_1152x882 => write!(f, "1152x882"),
4367            Self::_1152x900 => write!(f, "1152x900"),
4368            Self::_1280x1024 => write!(f, "1280x1024"),
4369            Self::_1600x1200 => write!(f, "1600x1200"),
4370            Self::_1800x1440 => write!(f, "1800x1440"),
4371            Self::_1920x1200 => write!(f, "1920x1200"),
4372        }
4373    }
4374}
4375
4376impl std::str::FromStr for STTargetScreenSize {
4377    type Err = String;
4378
4379    fn from_str(s: &str) -> Result<Self, Self::Err> {
4380        match s {
4381            "544x376" => Ok(Self::_544x376),
4382            "640x480" => Ok(Self::_640x480),
4383            "720x512" => Ok(Self::_720x512),
4384            "800x600" => Ok(Self::_800x600),
4385            "1024x768" => Ok(Self::_1024x768),
4386            "1152x882" => Ok(Self::_1152x882),
4387            "1152x900" => Ok(Self::_1152x900),
4388            "1280x1024" => Ok(Self::_1280x1024),
4389            "1600x1200" => Ok(Self::_1600x1200),
4390            "1800x1440" => Ok(Self::_1800x1440),
4391            "1920x1200" => Ok(Self::_1920x1200),
4392            _ => Err(format!("unknown STTargetScreenSize value: {}", s)),
4393        }
4394    }
4395}
4396
4397#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4398#[serde(rename = "autoFilter")]
4399pub struct AutoFilter {
4400    #[cfg(feature = "sml-filtering")]
4401    #[serde(rename = "@ref")]
4402    #[serde(default, skip_serializing_if = "Option::is_none")]
4403    pub reference: Option<Reference>,
4404    #[cfg(feature = "sml-filtering")]
4405    #[serde(rename = "filterColumn")]
4406    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4407    pub filter_column: Vec<FilterColumn>,
4408    #[cfg(feature = "sml-filtering")]
4409    #[serde(rename = "sortState")]
4410    #[serde(default, skip_serializing_if = "Option::is_none")]
4411    pub sort_state: Option<Box<SortState>>,
4412    #[cfg(feature = "sml-extensions")]
4413    #[serde(rename = "extLst")]
4414    #[serde(default, skip_serializing_if = "Option::is_none")]
4415    pub extension_list: Option<Box<ExtensionList>>,
4416    /// Unknown attributes captured for roundtrip fidelity.
4417    #[cfg(feature = "extra-attrs")]
4418    #[serde(skip)]
4419    #[cfg(feature = "extra-attrs")]
4420    #[serde(default)]
4421    #[cfg(feature = "extra-attrs")]
4422    pub extra_attrs: std::collections::HashMap<String, String>,
4423    /// Unknown child elements captured for roundtrip fidelity.
4424    #[cfg(feature = "extra-children")]
4425    #[serde(skip)]
4426    #[cfg(feature = "extra-children")]
4427    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4428}
4429
4430#[derive(Debug, Clone, Serialize, Deserialize)]
4431#[serde(rename = "filterColumn")]
4432pub struct FilterColumn {
4433    #[cfg(feature = "sml-filtering")]
4434    #[serde(rename = "@colId")]
4435    pub column_id: u32,
4436    #[cfg(feature = "sml-filtering")]
4437    #[serde(rename = "@hiddenButton")]
4438    #[serde(
4439        default,
4440        skip_serializing_if = "Option::is_none",
4441        with = "ooxml_xml::ooxml_bool"
4442    )]
4443    pub hidden_button: Option<bool>,
4444    #[cfg(feature = "sml-filtering")]
4445    #[serde(rename = "@showButton")]
4446    #[serde(
4447        default,
4448        skip_serializing_if = "Option::is_none",
4449        with = "ooxml_xml::ooxml_bool"
4450    )]
4451    pub show_button: Option<bool>,
4452    #[cfg(feature = "sml-filtering")]
4453    #[serde(rename = "filters")]
4454    #[serde(default, skip_serializing_if = "Option::is_none")]
4455    pub filters: Option<Box<Filters>>,
4456    #[cfg(feature = "sml-filtering")]
4457    #[serde(rename = "top10")]
4458    #[serde(default, skip_serializing_if = "Option::is_none")]
4459    pub top10: Option<Box<Top10Filter>>,
4460    #[cfg(feature = "sml-filtering")]
4461    #[serde(rename = "customFilters")]
4462    #[serde(default, skip_serializing_if = "Option::is_none")]
4463    pub custom_filters: Option<Box<CustomFilters>>,
4464    #[cfg(feature = "sml-filtering")]
4465    #[serde(rename = "dynamicFilter")]
4466    #[serde(default, skip_serializing_if = "Option::is_none")]
4467    pub dynamic_filter: Option<Box<DynamicFilter>>,
4468    #[cfg(feature = "sml-filtering")]
4469    #[serde(rename = "colorFilter")]
4470    #[serde(default, skip_serializing_if = "Option::is_none")]
4471    pub color_filter: Option<Box<ColorFilter>>,
4472    #[cfg(feature = "sml-filtering")]
4473    #[serde(rename = "iconFilter")]
4474    #[serde(default, skip_serializing_if = "Option::is_none")]
4475    pub icon_filter: Option<Box<IconFilter>>,
4476    #[cfg(feature = "sml-extensions")]
4477    #[serde(rename = "extLst")]
4478    #[serde(default, skip_serializing_if = "Option::is_none")]
4479    pub extension_list: Option<Box<ExtensionList>>,
4480    /// Unknown attributes captured for roundtrip fidelity.
4481    #[cfg(feature = "extra-attrs")]
4482    #[serde(skip)]
4483    #[cfg(feature = "extra-attrs")]
4484    #[serde(default)]
4485    #[cfg(feature = "extra-attrs")]
4486    pub extra_attrs: std::collections::HashMap<String, String>,
4487    /// Unknown child elements captured for roundtrip fidelity.
4488    #[cfg(feature = "extra-children")]
4489    #[serde(skip)]
4490    #[cfg(feature = "extra-children")]
4491    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4492}
4493
4494#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4495#[serde(rename = "filters")]
4496pub struct Filters {
4497    #[serde(rename = "@blank")]
4498    #[serde(
4499        default,
4500        skip_serializing_if = "Option::is_none",
4501        with = "ooxml_xml::ooxml_bool"
4502    )]
4503    pub blank: Option<bool>,
4504    #[serde(rename = "@calendarType")]
4505    #[serde(default, skip_serializing_if = "Option::is_none")]
4506    pub calendar_type: Option<CalendarType>,
4507    #[serde(rename = "filter")]
4508    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4509    pub filter: Vec<Filter>,
4510    #[serde(rename = "dateGroupItem")]
4511    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4512    pub date_group_item: Vec<DateGroupItem>,
4513    /// Unknown attributes captured for roundtrip fidelity.
4514    #[cfg(feature = "extra-attrs")]
4515    #[serde(skip)]
4516    #[cfg(feature = "extra-attrs")]
4517    #[serde(default)]
4518    #[cfg(feature = "extra-attrs")]
4519    pub extra_attrs: std::collections::HashMap<String, String>,
4520    /// Unknown child elements captured for roundtrip fidelity.
4521    #[cfg(feature = "extra-children")]
4522    #[serde(skip)]
4523    #[cfg(feature = "extra-children")]
4524    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4525}
4526
4527#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4528#[serde(rename = "filter")]
4529pub struct Filter {
4530    #[serde(rename = "@val")]
4531    #[serde(default, skip_serializing_if = "Option::is_none")]
4532    pub value: Option<XmlString>,
4533    /// Unknown attributes captured for roundtrip fidelity.
4534    #[cfg(feature = "extra-attrs")]
4535    #[serde(skip)]
4536    #[cfg(feature = "extra-attrs")]
4537    #[serde(default)]
4538    #[cfg(feature = "extra-attrs")]
4539    pub extra_attrs: std::collections::HashMap<String, String>,
4540}
4541
4542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4543pub struct CustomFilters {
4544    #[serde(rename = "@and")]
4545    #[serde(
4546        default,
4547        skip_serializing_if = "Option::is_none",
4548        with = "ooxml_xml::ooxml_bool"
4549    )]
4550    pub and: Option<bool>,
4551    #[serde(rename = "customFilter")]
4552    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4553    pub custom_filter: Vec<CustomFilter>,
4554    /// Unknown attributes captured for roundtrip fidelity.
4555    #[cfg(feature = "extra-attrs")]
4556    #[serde(skip)]
4557    #[cfg(feature = "extra-attrs")]
4558    #[serde(default)]
4559    #[cfg(feature = "extra-attrs")]
4560    pub extra_attrs: std::collections::HashMap<String, String>,
4561    /// Unknown child elements captured for roundtrip fidelity.
4562    #[cfg(feature = "extra-children")]
4563    #[serde(skip)]
4564    #[cfg(feature = "extra-children")]
4565    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4566}
4567
4568#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4569pub struct CustomFilter {
4570    #[serde(rename = "@operator")]
4571    #[serde(default, skip_serializing_if = "Option::is_none")]
4572    pub operator: Option<FilterOperator>,
4573    #[serde(rename = "@val")]
4574    #[serde(default, skip_serializing_if = "Option::is_none")]
4575    pub value: Option<XmlString>,
4576    /// Unknown attributes captured for roundtrip fidelity.
4577    #[cfg(feature = "extra-attrs")]
4578    #[serde(skip)]
4579    #[cfg(feature = "extra-attrs")]
4580    #[serde(default)]
4581    #[cfg(feature = "extra-attrs")]
4582    pub extra_attrs: std::collections::HashMap<String, String>,
4583}
4584
4585#[derive(Debug, Clone, Serialize, Deserialize)]
4586pub struct Top10Filter {
4587    #[serde(rename = "@top")]
4588    #[serde(
4589        default,
4590        skip_serializing_if = "Option::is_none",
4591        with = "ooxml_xml::ooxml_bool"
4592    )]
4593    pub top: Option<bool>,
4594    #[serde(rename = "@percent")]
4595    #[serde(
4596        default,
4597        skip_serializing_if = "Option::is_none",
4598        with = "ooxml_xml::ooxml_bool"
4599    )]
4600    pub percent: Option<bool>,
4601    #[serde(rename = "@val")]
4602    pub value: f64,
4603    #[serde(rename = "@filterVal")]
4604    #[serde(default, skip_serializing_if = "Option::is_none")]
4605    pub filter_val: Option<f64>,
4606    /// Unknown attributes captured for roundtrip fidelity.
4607    #[cfg(feature = "extra-attrs")]
4608    #[serde(skip)]
4609    #[cfg(feature = "extra-attrs")]
4610    #[serde(default)]
4611    #[cfg(feature = "extra-attrs")]
4612    pub extra_attrs: std::collections::HashMap<String, String>,
4613}
4614
4615#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4616pub struct ColorFilter {
4617    #[serde(rename = "@dxfId")]
4618    #[serde(default, skip_serializing_if = "Option::is_none")]
4619    pub dxf_id: Option<STDxfId>,
4620    #[serde(rename = "@cellColor")]
4621    #[serde(
4622        default,
4623        skip_serializing_if = "Option::is_none",
4624        with = "ooxml_xml::ooxml_bool"
4625    )]
4626    pub cell_color: Option<bool>,
4627    /// Unknown attributes captured for roundtrip fidelity.
4628    #[cfg(feature = "extra-attrs")]
4629    #[serde(skip)]
4630    #[cfg(feature = "extra-attrs")]
4631    #[serde(default)]
4632    #[cfg(feature = "extra-attrs")]
4633    pub extra_attrs: std::collections::HashMap<String, String>,
4634}
4635
4636#[derive(Debug, Clone, Serialize, Deserialize)]
4637pub struct IconFilter {
4638    #[serde(rename = "@iconSet")]
4639    pub icon_set: IconSetType,
4640    #[serde(rename = "@iconId")]
4641    #[serde(default, skip_serializing_if = "Option::is_none")]
4642    pub icon_id: Option<u32>,
4643    /// Unknown attributes captured for roundtrip fidelity.
4644    #[cfg(feature = "extra-attrs")]
4645    #[serde(skip)]
4646    #[cfg(feature = "extra-attrs")]
4647    #[serde(default)]
4648    #[cfg(feature = "extra-attrs")]
4649    pub extra_attrs: std::collections::HashMap<String, String>,
4650}
4651
4652#[derive(Debug, Clone, Serialize, Deserialize)]
4653pub struct DynamicFilter {
4654    #[serde(rename = "@type")]
4655    pub r#type: DynamicFilterType,
4656    #[serde(rename = "@val")]
4657    #[serde(default, skip_serializing_if = "Option::is_none")]
4658    pub value: Option<f64>,
4659    #[serde(rename = "@valIso")]
4660    #[serde(default, skip_serializing_if = "Option::is_none")]
4661    pub val_iso: Option<String>,
4662    #[serde(rename = "@maxVal")]
4663    #[serde(default, skip_serializing_if = "Option::is_none")]
4664    pub max_val: Option<f64>,
4665    #[serde(rename = "@maxValIso")]
4666    #[serde(default, skip_serializing_if = "Option::is_none")]
4667    pub max_val_iso: Option<String>,
4668    /// Unknown attributes captured for roundtrip fidelity.
4669    #[cfg(feature = "extra-attrs")]
4670    #[serde(skip)]
4671    #[cfg(feature = "extra-attrs")]
4672    #[serde(default)]
4673    #[cfg(feature = "extra-attrs")]
4674    pub extra_attrs: std::collections::HashMap<String, String>,
4675}
4676
4677#[derive(Debug, Clone, Serialize, Deserialize)]
4678#[serde(rename = "sortState")]
4679pub struct SortState {
4680    #[serde(rename = "@columnSort")]
4681    #[serde(
4682        default,
4683        skip_serializing_if = "Option::is_none",
4684        with = "ooxml_xml::ooxml_bool"
4685    )]
4686    pub column_sort: Option<bool>,
4687    #[serde(rename = "@caseSensitive")]
4688    #[serde(
4689        default,
4690        skip_serializing_if = "Option::is_none",
4691        with = "ooxml_xml::ooxml_bool"
4692    )]
4693    pub case_sensitive: Option<bool>,
4694    #[serde(rename = "@sortMethod")]
4695    #[serde(default, skip_serializing_if = "Option::is_none")]
4696    pub sort_method: Option<SortMethod>,
4697    #[serde(rename = "@ref")]
4698    pub reference: Reference,
4699    #[serde(rename = "sortCondition")]
4700    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4701    pub sort_condition: Vec<SortCondition>,
4702    #[serde(rename = "extLst")]
4703    #[serde(default, skip_serializing_if = "Option::is_none")]
4704    pub extension_list: Option<Box<ExtensionList>>,
4705    /// Unknown attributes captured for roundtrip fidelity.
4706    #[cfg(feature = "extra-attrs")]
4707    #[serde(skip)]
4708    #[cfg(feature = "extra-attrs")]
4709    #[serde(default)]
4710    #[cfg(feature = "extra-attrs")]
4711    pub extra_attrs: std::collections::HashMap<String, String>,
4712    /// Unknown child elements captured for roundtrip fidelity.
4713    #[cfg(feature = "extra-children")]
4714    #[serde(skip)]
4715    #[cfg(feature = "extra-children")]
4716    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4717}
4718
4719#[derive(Debug, Clone, Serialize, Deserialize)]
4720#[serde(rename = "sortCondition")]
4721pub struct SortCondition {
4722    #[serde(rename = "@descending")]
4723    #[serde(
4724        default,
4725        skip_serializing_if = "Option::is_none",
4726        with = "ooxml_xml::ooxml_bool"
4727    )]
4728    pub descending: Option<bool>,
4729    #[serde(rename = "@sortBy")]
4730    #[serde(default, skip_serializing_if = "Option::is_none")]
4731    pub sort_by: Option<SortBy>,
4732    #[serde(rename = "@ref")]
4733    pub reference: Reference,
4734    #[serde(rename = "@customList")]
4735    #[serde(default, skip_serializing_if = "Option::is_none")]
4736    pub custom_list: Option<XmlString>,
4737    #[serde(rename = "@dxfId")]
4738    #[serde(default, skip_serializing_if = "Option::is_none")]
4739    pub dxf_id: Option<STDxfId>,
4740    #[serde(rename = "@iconSet")]
4741    #[serde(default, skip_serializing_if = "Option::is_none")]
4742    pub icon_set: Option<IconSetType>,
4743    #[serde(rename = "@iconId")]
4744    #[serde(default, skip_serializing_if = "Option::is_none")]
4745    pub icon_id: Option<u32>,
4746    /// Unknown attributes captured for roundtrip fidelity.
4747    #[cfg(feature = "extra-attrs")]
4748    #[serde(skip)]
4749    #[cfg(feature = "extra-attrs")]
4750    #[serde(default)]
4751    #[cfg(feature = "extra-attrs")]
4752    pub extra_attrs: std::collections::HashMap<String, String>,
4753}
4754
4755#[derive(Debug, Clone, Serialize, Deserialize)]
4756pub struct DateGroupItem {
4757    #[serde(rename = "@year")]
4758    pub year: u16,
4759    #[serde(rename = "@month")]
4760    #[serde(default, skip_serializing_if = "Option::is_none")]
4761    pub month: Option<u16>,
4762    #[serde(rename = "@day")]
4763    #[serde(default, skip_serializing_if = "Option::is_none")]
4764    pub day: Option<u16>,
4765    #[serde(rename = "@hour")]
4766    #[serde(default, skip_serializing_if = "Option::is_none")]
4767    pub hour: Option<u16>,
4768    #[serde(rename = "@minute")]
4769    #[serde(default, skip_serializing_if = "Option::is_none")]
4770    pub minute: Option<u16>,
4771    #[serde(rename = "@second")]
4772    #[serde(default, skip_serializing_if = "Option::is_none")]
4773    pub second: Option<u16>,
4774    #[serde(rename = "@dateTimeGrouping")]
4775    pub date_time_grouping: STDateTimeGrouping,
4776    /// Unknown attributes captured for roundtrip fidelity.
4777    #[cfg(feature = "extra-attrs")]
4778    #[serde(skip)]
4779    #[cfg(feature = "extra-attrs")]
4780    #[serde(default)]
4781    #[cfg(feature = "extra-attrs")]
4782    pub extra_attrs: std::collections::HashMap<String, String>,
4783}
4784
4785#[derive(Debug, Clone, Serialize, Deserialize)]
4786pub struct CTXStringElement {
4787    #[serde(rename = "@v")]
4788    pub value: XmlString,
4789    /// Unknown attributes captured for roundtrip fidelity.
4790    #[cfg(feature = "extra-attrs")]
4791    #[serde(skip)]
4792    #[cfg(feature = "extra-attrs")]
4793    #[serde(default)]
4794    #[cfg(feature = "extra-attrs")]
4795    pub extra_attrs: std::collections::HashMap<String, String>,
4796}
4797
4798#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4799#[serde(rename = "ext")]
4800pub struct Extension {
4801    #[serde(rename = "@uri")]
4802    #[serde(default, skip_serializing_if = "Option::is_none")]
4803    pub uri: Option<String>,
4804    /// Unknown attributes captured for roundtrip fidelity.
4805    #[cfg(feature = "extra-attrs")]
4806    #[serde(skip)]
4807    #[cfg(feature = "extra-attrs")]
4808    #[serde(default)]
4809    #[cfg(feature = "extra-attrs")]
4810    pub extra_attrs: std::collections::HashMap<String, String>,
4811}
4812
4813pub type ExtensionAnyElement = String;
4814
4815#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4816pub struct ObjectAnchor {
4817    #[serde(rename = "@moveWithCells")]
4818    #[serde(
4819        default,
4820        skip_serializing_if = "Option::is_none",
4821        with = "ooxml_xml::ooxml_bool"
4822    )]
4823    pub move_with_cells: Option<bool>,
4824    #[serde(rename = "@sizeWithCells")]
4825    #[serde(
4826        default,
4827        skip_serializing_if = "Option::is_none",
4828        with = "ooxml_xml::ooxml_bool"
4829    )]
4830    pub size_with_cells: Option<bool>,
4831    /// Unknown attributes captured for roundtrip fidelity.
4832    #[cfg(feature = "extra-attrs")]
4833    #[serde(skip)]
4834    #[cfg(feature = "extra-attrs")]
4835    #[serde(default)]
4836    #[cfg(feature = "extra-attrs")]
4837    pub extra_attrs: std::collections::HashMap<String, String>,
4838}
4839
4840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4841pub struct EGExtensionList {
4842    #[serde(rename = "ext")]
4843    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4844    pub ext: Vec<Extension>,
4845    /// Unknown child elements captured for roundtrip fidelity.
4846    #[cfg(feature = "extra-children")]
4847    #[serde(skip)]
4848    #[cfg(feature = "extra-children")]
4849    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4850}
4851
4852#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4853#[serde(rename = "extLst")]
4854pub struct ExtensionList {
4855    #[serde(rename = "ext")]
4856    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4857    pub ext: Vec<Extension>,
4858    /// Unknown child elements captured for roundtrip fidelity.
4859    #[cfg(feature = "extra-children")]
4860    #[serde(skip)]
4861    #[cfg(feature = "extra-children")]
4862    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4863}
4864
4865pub type SmlCalcChain = Box<CalcChain>;
4866
4867#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4868#[serde(rename = "calcChain")]
4869pub struct CalcChain {
4870    #[cfg(feature = "sml-formulas")]
4871    #[serde(rename = "c")]
4872    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4873    pub cells: Vec<CalcCell>,
4874    #[cfg(feature = "sml-extensions")]
4875    #[serde(rename = "extLst")]
4876    #[serde(default, skip_serializing_if = "Option::is_none")]
4877    pub extension_list: Option<Box<ExtensionList>>,
4878    /// Unknown child elements captured for roundtrip fidelity.
4879    #[cfg(feature = "extra-children")]
4880    #[serde(skip)]
4881    #[cfg(feature = "extra-children")]
4882    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4883}
4884
4885#[derive(Debug, Clone, Serialize, Deserialize)]
4886pub struct CalcCell {
4887    #[serde(rename = "@_any")]
4888    pub _any: CellRef,
4889    #[cfg(feature = "sml-formulas")]
4890    #[serde(rename = "@i")]
4891    #[serde(default, skip_serializing_if = "Option::is_none")]
4892    pub i: Option<i32>,
4893    #[cfg(feature = "sml-formulas")]
4894    #[serde(rename = "@s")]
4895    #[serde(
4896        default,
4897        skip_serializing_if = "Option::is_none",
4898        with = "ooxml_xml::ooxml_bool"
4899    )]
4900    pub style_index: Option<bool>,
4901    #[cfg(feature = "sml-formulas")]
4902    #[serde(rename = "@l")]
4903    #[serde(
4904        default,
4905        skip_serializing_if = "Option::is_none",
4906        with = "ooxml_xml::ooxml_bool"
4907    )]
4908    pub l: Option<bool>,
4909    #[cfg(feature = "sml-formulas")]
4910    #[serde(rename = "@t")]
4911    #[serde(
4912        default,
4913        skip_serializing_if = "Option::is_none",
4914        with = "ooxml_xml::ooxml_bool"
4915    )]
4916    pub cell_type: Option<bool>,
4917    #[cfg(feature = "sml-formulas")]
4918    #[serde(rename = "@a")]
4919    #[serde(
4920        default,
4921        skip_serializing_if = "Option::is_none",
4922        with = "ooxml_xml::ooxml_bool"
4923    )]
4924    pub a: Option<bool>,
4925    /// Unknown attributes captured for roundtrip fidelity.
4926    #[cfg(feature = "extra-attrs")]
4927    #[serde(skip)]
4928    #[cfg(feature = "extra-attrs")]
4929    #[serde(default)]
4930    #[cfg(feature = "extra-attrs")]
4931    pub extra_attrs: std::collections::HashMap<String, String>,
4932}
4933
4934pub type SmlComments = Box<Comments>;
4935
4936#[derive(Debug, Clone, Serialize, Deserialize)]
4937#[serde(rename = "comments")]
4938pub struct Comments {
4939    #[serde(rename = "authors")]
4940    pub authors: Box<Authors>,
4941    #[serde(rename = "commentList")]
4942    pub comment_list: Box<CommentList>,
4943    #[serde(rename = "extLst")]
4944    #[serde(default, skip_serializing_if = "Option::is_none")]
4945    pub extension_list: Option<Box<ExtensionList>>,
4946    /// Unknown child elements captured for roundtrip fidelity.
4947    #[cfg(feature = "extra-children")]
4948    #[serde(skip)]
4949    #[cfg(feature = "extra-children")]
4950    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4951}
4952
4953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4954#[serde(rename = "authors")]
4955pub struct Authors {
4956    #[serde(rename = "author")]
4957    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4958    pub author: Vec<XmlString>,
4959    /// Unknown child elements captured for roundtrip fidelity.
4960    #[cfg(feature = "extra-children")]
4961    #[serde(skip)]
4962    #[cfg(feature = "extra-children")]
4963    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4964}
4965
4966#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4967#[serde(rename = "commentList")]
4968pub struct CommentList {
4969    #[serde(rename = "comment")]
4970    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4971    pub comment: Vec<Comment>,
4972    /// Unknown child elements captured for roundtrip fidelity.
4973    #[cfg(feature = "extra-children")]
4974    #[serde(skip)]
4975    #[cfg(feature = "extra-children")]
4976    pub extra_children: Vec<ooxml_xml::PositionedNode>,
4977}
4978
4979#[derive(Debug, Clone, Serialize, Deserialize)]
4980#[serde(rename = "comment")]
4981pub struct Comment {
4982    #[cfg(feature = "sml-comments")]
4983    #[serde(rename = "@ref")]
4984    pub reference: Reference,
4985    #[cfg(feature = "sml-comments")]
4986    #[serde(rename = "@authorId")]
4987    pub author_id: u32,
4988    #[cfg(feature = "sml-comments")]
4989    #[serde(rename = "@guid")]
4990    #[serde(default, skip_serializing_if = "Option::is_none")]
4991    pub guid: Option<Guid>,
4992    #[cfg(feature = "sml-comments")]
4993    #[serde(rename = "@shapeId")]
4994    #[serde(default, skip_serializing_if = "Option::is_none")]
4995    pub shape_id: Option<u32>,
4996    #[cfg(feature = "sml-comments")]
4997    #[serde(rename = "text")]
4998    pub text: Box<RichString>,
4999    #[serde(rename = "commentPr")]
5000    #[serde(default, skip_serializing_if = "Option::is_none")]
5001    pub comment_pr: Option<Box<CTCommentPr>>,
5002    /// Unknown attributes captured for roundtrip fidelity.
5003    #[cfg(feature = "extra-attrs")]
5004    #[serde(skip)]
5005    #[cfg(feature = "extra-attrs")]
5006    #[serde(default)]
5007    #[cfg(feature = "extra-attrs")]
5008    pub extra_attrs: std::collections::HashMap<String, String>,
5009    /// Unknown child elements captured for roundtrip fidelity.
5010    #[cfg(feature = "extra-children")]
5011    #[serde(skip)]
5012    #[cfg(feature = "extra-children")]
5013    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5014}
5015
5016#[derive(Debug, Clone, Serialize, Deserialize)]
5017pub struct CTCommentPr {
5018    #[serde(rename = "@locked")]
5019    #[serde(
5020        default,
5021        skip_serializing_if = "Option::is_none",
5022        with = "ooxml_xml::ooxml_bool"
5023    )]
5024    pub locked: Option<bool>,
5025    #[serde(rename = "@defaultSize")]
5026    #[serde(
5027        default,
5028        skip_serializing_if = "Option::is_none",
5029        with = "ooxml_xml::ooxml_bool"
5030    )]
5031    pub default_size: Option<bool>,
5032    #[serde(rename = "@print")]
5033    #[serde(
5034        default,
5035        skip_serializing_if = "Option::is_none",
5036        with = "ooxml_xml::ooxml_bool"
5037    )]
5038    pub print: Option<bool>,
5039    #[serde(rename = "@disabled")]
5040    #[serde(
5041        default,
5042        skip_serializing_if = "Option::is_none",
5043        with = "ooxml_xml::ooxml_bool"
5044    )]
5045    pub disabled: Option<bool>,
5046    #[serde(rename = "@autoFill")]
5047    #[serde(
5048        default,
5049        skip_serializing_if = "Option::is_none",
5050        with = "ooxml_xml::ooxml_bool"
5051    )]
5052    pub auto_fill: Option<bool>,
5053    #[serde(rename = "@autoLine")]
5054    #[serde(
5055        default,
5056        skip_serializing_if = "Option::is_none",
5057        with = "ooxml_xml::ooxml_bool"
5058    )]
5059    pub auto_line: Option<bool>,
5060    #[serde(rename = "@altText")]
5061    #[serde(default, skip_serializing_if = "Option::is_none")]
5062    pub alt_text: Option<XmlString>,
5063    #[serde(rename = "@textHAlign")]
5064    #[serde(default, skip_serializing_if = "Option::is_none")]
5065    pub text_h_align: Option<STTextHAlign>,
5066    #[serde(rename = "@textVAlign")]
5067    #[serde(default, skip_serializing_if = "Option::is_none")]
5068    pub text_v_align: Option<STTextVAlign>,
5069    #[serde(rename = "@lockText")]
5070    #[serde(
5071        default,
5072        skip_serializing_if = "Option::is_none",
5073        with = "ooxml_xml::ooxml_bool"
5074    )]
5075    pub lock_text: Option<bool>,
5076    #[serde(rename = "@justLastX")]
5077    #[serde(
5078        default,
5079        skip_serializing_if = "Option::is_none",
5080        with = "ooxml_xml::ooxml_bool"
5081    )]
5082    pub just_last_x: Option<bool>,
5083    #[serde(rename = "@autoScale")]
5084    #[serde(
5085        default,
5086        skip_serializing_if = "Option::is_none",
5087        with = "ooxml_xml::ooxml_bool"
5088    )]
5089    pub auto_scale: Option<bool>,
5090    #[serde(rename = "anchor")]
5091    pub anchor: Box<ObjectAnchor>,
5092    /// Unknown attributes captured for roundtrip fidelity.
5093    #[cfg(feature = "extra-attrs")]
5094    #[serde(skip)]
5095    #[cfg(feature = "extra-attrs")]
5096    #[serde(default)]
5097    #[cfg(feature = "extra-attrs")]
5098    pub extra_attrs: std::collections::HashMap<String, String>,
5099    /// Unknown child elements captured for roundtrip fidelity.
5100    #[cfg(feature = "extra-children")]
5101    #[serde(skip)]
5102    #[cfg(feature = "extra-children")]
5103    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5104}
5105
5106pub type SmlMapInfo = Box<MapInfo>;
5107
5108#[derive(Debug, Clone, Serialize, Deserialize)]
5109pub struct MapInfo {
5110    #[serde(rename = "@SelectionNamespaces")]
5111    pub selection_namespaces: String,
5112    #[serde(rename = "Schema")]
5113    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5114    pub schema: Vec<XmlSchema>,
5115    #[serde(rename = "Map")]
5116    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5117    pub map: Vec<XmlMap>,
5118    /// Unknown attributes captured for roundtrip fidelity.
5119    #[cfg(feature = "extra-attrs")]
5120    #[serde(skip)]
5121    #[cfg(feature = "extra-attrs")]
5122    #[serde(default)]
5123    #[cfg(feature = "extra-attrs")]
5124    pub extra_attrs: std::collections::HashMap<String, String>,
5125    /// Unknown child elements captured for roundtrip fidelity.
5126    #[cfg(feature = "extra-children")]
5127    #[serde(skip)]
5128    #[cfg(feature = "extra-children")]
5129    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5130}
5131
5132#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5133pub struct XmlSchema {
5134    /// Unknown child elements captured for roundtrip fidelity.
5135    #[cfg(feature = "extra-children")]
5136    #[serde(skip)]
5137    #[cfg(feature = "extra-children")]
5138    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5139}
5140
5141pub type SchemaAnyElement = String;
5142
5143#[derive(Debug, Clone, Serialize, Deserialize)]
5144pub struct XmlMap {
5145    #[serde(rename = "@ID")]
5146    pub i_d: u32,
5147    #[serde(rename = "@Name")]
5148    pub name: String,
5149    #[serde(rename = "@RootElement")]
5150    pub root_element: String,
5151    #[serde(rename = "@SchemaID")]
5152    pub schema_i_d: String,
5153    #[serde(rename = "@ShowImportExportValidationErrors")]
5154    #[serde(with = "ooxml_xml::ooxml_bool_required")]
5155    pub show_import_export_validation_errors: bool,
5156    #[serde(rename = "@AutoFit")]
5157    #[serde(with = "ooxml_xml::ooxml_bool_required")]
5158    pub auto_fit: bool,
5159    #[serde(rename = "@Append")]
5160    #[serde(with = "ooxml_xml::ooxml_bool_required")]
5161    pub append: bool,
5162    #[serde(rename = "@PreserveSortAFLayout")]
5163    #[serde(with = "ooxml_xml::ooxml_bool_required")]
5164    pub preserve_sort_a_f_layout: bool,
5165    #[serde(rename = "@PreserveFormat")]
5166    #[serde(with = "ooxml_xml::ooxml_bool_required")]
5167    pub preserve_format: bool,
5168    #[serde(rename = "DataBinding")]
5169    #[serde(default, skip_serializing_if = "Option::is_none")]
5170    pub data_binding: Option<Box<DataBinding>>,
5171    /// Unknown attributes captured for roundtrip fidelity.
5172    #[cfg(feature = "extra-attrs")]
5173    #[serde(skip)]
5174    #[cfg(feature = "extra-attrs")]
5175    #[serde(default)]
5176    #[cfg(feature = "extra-attrs")]
5177    pub extra_attrs: std::collections::HashMap<String, String>,
5178    /// Unknown child elements captured for roundtrip fidelity.
5179    #[cfg(feature = "extra-children")]
5180    #[serde(skip)]
5181    #[cfg(feature = "extra-children")]
5182    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5183}
5184
5185#[derive(Debug, Clone, Serialize, Deserialize)]
5186pub struct DataBinding {
5187    #[serde(rename = "@DataBindingName")]
5188    #[serde(default, skip_serializing_if = "Option::is_none")]
5189    pub data_binding_name: Option<String>,
5190    #[serde(rename = "@FileBinding")]
5191    #[serde(
5192        default,
5193        skip_serializing_if = "Option::is_none",
5194        with = "ooxml_xml::ooxml_bool"
5195    )]
5196    pub file_binding: Option<bool>,
5197    #[serde(rename = "@ConnectionID")]
5198    #[serde(default, skip_serializing_if = "Option::is_none")]
5199    pub connection_i_d: Option<u32>,
5200    #[serde(rename = "@FileBindingName")]
5201    #[serde(default, skip_serializing_if = "Option::is_none")]
5202    pub file_binding_name: Option<String>,
5203    #[serde(rename = "@DataBindingLoadMode")]
5204    pub data_binding_load_mode: u32,
5205    /// Unknown attributes captured for roundtrip fidelity.
5206    #[cfg(feature = "extra-attrs")]
5207    #[serde(skip)]
5208    #[cfg(feature = "extra-attrs")]
5209    #[serde(default)]
5210    #[cfg(feature = "extra-attrs")]
5211    pub extra_attrs: std::collections::HashMap<String, String>,
5212}
5213
5214pub type DataBindingAnyElement = String;
5215
5216pub type SmlConnections = Box<Connections>;
5217
5218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5219pub struct Connections {
5220    #[serde(rename = "connection")]
5221    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5222    pub connection: Vec<Connection>,
5223    /// Unknown child elements captured for roundtrip fidelity.
5224    #[cfg(feature = "extra-children")]
5225    #[serde(skip)]
5226    #[cfg(feature = "extra-children")]
5227    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5228}
5229
5230#[derive(Debug, Clone, Serialize, Deserialize)]
5231pub struct Connection {
5232    #[serde(rename = "@id")]
5233    pub id: u32,
5234    #[serde(rename = "@sourceFile")]
5235    #[serde(default, skip_serializing_if = "Option::is_none")]
5236    pub source_file: Option<XmlString>,
5237    #[serde(rename = "@odcFile")]
5238    #[serde(default, skip_serializing_if = "Option::is_none")]
5239    pub odc_file: Option<XmlString>,
5240    #[serde(rename = "@keepAlive")]
5241    #[serde(
5242        default,
5243        skip_serializing_if = "Option::is_none",
5244        with = "ooxml_xml::ooxml_bool"
5245    )]
5246    pub keep_alive: Option<bool>,
5247    #[serde(rename = "@interval")]
5248    #[serde(default, skip_serializing_if = "Option::is_none")]
5249    pub interval: Option<u32>,
5250    #[serde(rename = "@name")]
5251    #[serde(default, skip_serializing_if = "Option::is_none")]
5252    pub name: Option<XmlString>,
5253    #[serde(rename = "@description")]
5254    #[serde(default, skip_serializing_if = "Option::is_none")]
5255    pub description: Option<XmlString>,
5256    #[serde(rename = "@type")]
5257    #[serde(default, skip_serializing_if = "Option::is_none")]
5258    pub r#type: Option<u32>,
5259    #[serde(rename = "@reconnectionMethod")]
5260    #[serde(default, skip_serializing_if = "Option::is_none")]
5261    pub reconnection_method: Option<u32>,
5262    #[serde(rename = "@refreshedVersion")]
5263    pub refreshed_version: u8,
5264    #[serde(rename = "@minRefreshableVersion")]
5265    #[serde(default, skip_serializing_if = "Option::is_none")]
5266    pub min_refreshable_version: Option<u8>,
5267    #[serde(rename = "@savePassword")]
5268    #[serde(
5269        default,
5270        skip_serializing_if = "Option::is_none",
5271        with = "ooxml_xml::ooxml_bool"
5272    )]
5273    pub save_password: Option<bool>,
5274    #[serde(rename = "@new")]
5275    #[serde(
5276        default,
5277        skip_serializing_if = "Option::is_none",
5278        with = "ooxml_xml::ooxml_bool"
5279    )]
5280    pub new: Option<bool>,
5281    #[serde(rename = "@deleted")]
5282    #[serde(
5283        default,
5284        skip_serializing_if = "Option::is_none",
5285        with = "ooxml_xml::ooxml_bool"
5286    )]
5287    pub deleted: Option<bool>,
5288    #[serde(rename = "@onlyUseConnectionFile")]
5289    #[serde(
5290        default,
5291        skip_serializing_if = "Option::is_none",
5292        with = "ooxml_xml::ooxml_bool"
5293    )]
5294    pub only_use_connection_file: Option<bool>,
5295    #[serde(rename = "@background")]
5296    #[serde(
5297        default,
5298        skip_serializing_if = "Option::is_none",
5299        with = "ooxml_xml::ooxml_bool"
5300    )]
5301    pub background: Option<bool>,
5302    #[serde(rename = "@refreshOnLoad")]
5303    #[serde(
5304        default,
5305        skip_serializing_if = "Option::is_none",
5306        with = "ooxml_xml::ooxml_bool"
5307    )]
5308    pub refresh_on_load: Option<bool>,
5309    #[serde(rename = "@saveData")]
5310    #[serde(
5311        default,
5312        skip_serializing_if = "Option::is_none",
5313        with = "ooxml_xml::ooxml_bool"
5314    )]
5315    pub save_data: Option<bool>,
5316    #[serde(rename = "@credentials")]
5317    #[serde(default, skip_serializing_if = "Option::is_none")]
5318    pub credentials: Option<STCredMethod>,
5319    #[serde(rename = "@singleSignOnId")]
5320    #[serde(default, skip_serializing_if = "Option::is_none")]
5321    pub single_sign_on_id: Option<XmlString>,
5322    #[serde(rename = "dbPr")]
5323    #[serde(default, skip_serializing_if = "Option::is_none")]
5324    pub db_pr: Option<Box<DatabaseProperties>>,
5325    #[serde(rename = "olapPr")]
5326    #[serde(default, skip_serializing_if = "Option::is_none")]
5327    pub olap_pr: Option<Box<OlapProperties>>,
5328    #[serde(rename = "webPr")]
5329    #[serde(default, skip_serializing_if = "Option::is_none")]
5330    pub web_pr: Option<Box<WebQueryProperties>>,
5331    #[serde(rename = "textPr")]
5332    #[serde(default, skip_serializing_if = "Option::is_none")]
5333    pub text_pr: Option<Box<TextImportProperties>>,
5334    #[serde(rename = "parameters")]
5335    #[serde(default, skip_serializing_if = "Option::is_none")]
5336    pub parameters: Option<Box<Parameters>>,
5337    #[serde(rename = "extLst")]
5338    #[serde(default, skip_serializing_if = "Option::is_none")]
5339    pub extension_list: Option<Box<ExtensionList>>,
5340    /// Unknown attributes captured for roundtrip fidelity.
5341    #[cfg(feature = "extra-attrs")]
5342    #[serde(skip)]
5343    #[cfg(feature = "extra-attrs")]
5344    #[serde(default)]
5345    #[cfg(feature = "extra-attrs")]
5346    pub extra_attrs: std::collections::HashMap<String, String>,
5347    /// Unknown child elements captured for roundtrip fidelity.
5348    #[cfg(feature = "extra-children")]
5349    #[serde(skip)]
5350    #[cfg(feature = "extra-children")]
5351    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5352}
5353
5354#[derive(Debug, Clone, Serialize, Deserialize)]
5355pub struct DatabaseProperties {
5356    #[serde(rename = "@connection")]
5357    pub connection: XmlString,
5358    #[serde(rename = "@command")]
5359    #[serde(default, skip_serializing_if = "Option::is_none")]
5360    pub command: Option<XmlString>,
5361    #[serde(rename = "@serverCommand")]
5362    #[serde(default, skip_serializing_if = "Option::is_none")]
5363    pub server_command: Option<XmlString>,
5364    #[serde(rename = "@commandType")]
5365    #[serde(default, skip_serializing_if = "Option::is_none")]
5366    pub command_type: Option<u32>,
5367    /// Unknown attributes captured for roundtrip fidelity.
5368    #[cfg(feature = "extra-attrs")]
5369    #[serde(skip)]
5370    #[cfg(feature = "extra-attrs")]
5371    #[serde(default)]
5372    #[cfg(feature = "extra-attrs")]
5373    pub extra_attrs: std::collections::HashMap<String, String>,
5374}
5375
5376#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5377pub struct OlapProperties {
5378    #[serde(rename = "@local")]
5379    #[serde(
5380        default,
5381        skip_serializing_if = "Option::is_none",
5382        with = "ooxml_xml::ooxml_bool"
5383    )]
5384    pub local: Option<bool>,
5385    #[serde(rename = "@localConnection")]
5386    #[serde(default, skip_serializing_if = "Option::is_none")]
5387    pub local_connection: Option<XmlString>,
5388    #[serde(rename = "@localRefresh")]
5389    #[serde(
5390        default,
5391        skip_serializing_if = "Option::is_none",
5392        with = "ooxml_xml::ooxml_bool"
5393    )]
5394    pub local_refresh: Option<bool>,
5395    #[serde(rename = "@sendLocale")]
5396    #[serde(
5397        default,
5398        skip_serializing_if = "Option::is_none",
5399        with = "ooxml_xml::ooxml_bool"
5400    )]
5401    pub send_locale: Option<bool>,
5402    #[serde(rename = "@rowDrillCount")]
5403    #[serde(default, skip_serializing_if = "Option::is_none")]
5404    pub row_drill_count: Option<u32>,
5405    #[serde(rename = "@serverFill")]
5406    #[serde(
5407        default,
5408        skip_serializing_if = "Option::is_none",
5409        with = "ooxml_xml::ooxml_bool"
5410    )]
5411    pub server_fill: Option<bool>,
5412    #[serde(rename = "@serverNumberFormat")]
5413    #[serde(
5414        default,
5415        skip_serializing_if = "Option::is_none",
5416        with = "ooxml_xml::ooxml_bool"
5417    )]
5418    pub server_number_format: Option<bool>,
5419    #[serde(rename = "@serverFont")]
5420    #[serde(
5421        default,
5422        skip_serializing_if = "Option::is_none",
5423        with = "ooxml_xml::ooxml_bool"
5424    )]
5425    pub server_font: Option<bool>,
5426    #[serde(rename = "@serverFontColor")]
5427    #[serde(
5428        default,
5429        skip_serializing_if = "Option::is_none",
5430        with = "ooxml_xml::ooxml_bool"
5431    )]
5432    pub server_font_color: Option<bool>,
5433    /// Unknown attributes captured for roundtrip fidelity.
5434    #[cfg(feature = "extra-attrs")]
5435    #[serde(skip)]
5436    #[cfg(feature = "extra-attrs")]
5437    #[serde(default)]
5438    #[cfg(feature = "extra-attrs")]
5439    pub extra_attrs: std::collections::HashMap<String, String>,
5440}
5441
5442#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5443pub struct WebQueryProperties {
5444    #[serde(rename = "@xml")]
5445    #[serde(
5446        default,
5447        skip_serializing_if = "Option::is_none",
5448        with = "ooxml_xml::ooxml_bool"
5449    )]
5450    pub xml: Option<bool>,
5451    #[serde(rename = "@sourceData")]
5452    #[serde(
5453        default,
5454        skip_serializing_if = "Option::is_none",
5455        with = "ooxml_xml::ooxml_bool"
5456    )]
5457    pub source_data: Option<bool>,
5458    #[serde(rename = "@parsePre")]
5459    #[serde(
5460        default,
5461        skip_serializing_if = "Option::is_none",
5462        with = "ooxml_xml::ooxml_bool"
5463    )]
5464    pub parse_pre: Option<bool>,
5465    #[serde(rename = "@consecutive")]
5466    #[serde(
5467        default,
5468        skip_serializing_if = "Option::is_none",
5469        with = "ooxml_xml::ooxml_bool"
5470    )]
5471    pub consecutive: Option<bool>,
5472    #[serde(rename = "@firstRow")]
5473    #[serde(
5474        default,
5475        skip_serializing_if = "Option::is_none",
5476        with = "ooxml_xml::ooxml_bool"
5477    )]
5478    pub first_row: Option<bool>,
5479    #[serde(rename = "@xl97")]
5480    #[serde(
5481        default,
5482        skip_serializing_if = "Option::is_none",
5483        with = "ooxml_xml::ooxml_bool"
5484    )]
5485    pub xl97: Option<bool>,
5486    #[serde(rename = "@textDates")]
5487    #[serde(
5488        default,
5489        skip_serializing_if = "Option::is_none",
5490        with = "ooxml_xml::ooxml_bool"
5491    )]
5492    pub text_dates: Option<bool>,
5493    #[serde(rename = "@xl2000")]
5494    #[serde(
5495        default,
5496        skip_serializing_if = "Option::is_none",
5497        with = "ooxml_xml::ooxml_bool"
5498    )]
5499    pub xl2000: Option<bool>,
5500    #[serde(rename = "@url")]
5501    #[serde(default, skip_serializing_if = "Option::is_none")]
5502    pub url: Option<XmlString>,
5503    #[serde(rename = "@post")]
5504    #[serde(default, skip_serializing_if = "Option::is_none")]
5505    pub post: Option<XmlString>,
5506    #[serde(rename = "@htmlTables")]
5507    #[serde(
5508        default,
5509        skip_serializing_if = "Option::is_none",
5510        with = "ooxml_xml::ooxml_bool"
5511    )]
5512    pub html_tables: Option<bool>,
5513    #[serde(rename = "@htmlFormat")]
5514    #[serde(default, skip_serializing_if = "Option::is_none")]
5515    pub html_format: Option<STHtmlFmt>,
5516    #[serde(rename = "@editPage")]
5517    #[serde(default, skip_serializing_if = "Option::is_none")]
5518    pub edit_page: Option<XmlString>,
5519    #[serde(rename = "tables")]
5520    #[serde(default, skip_serializing_if = "Option::is_none")]
5521    pub tables: Option<Box<DataTables>>,
5522    /// Unknown attributes captured for roundtrip fidelity.
5523    #[cfg(feature = "extra-attrs")]
5524    #[serde(skip)]
5525    #[cfg(feature = "extra-attrs")]
5526    #[serde(default)]
5527    #[cfg(feature = "extra-attrs")]
5528    pub extra_attrs: std::collections::HashMap<String, String>,
5529    /// Unknown child elements captured for roundtrip fidelity.
5530    #[cfg(feature = "extra-children")]
5531    #[serde(skip)]
5532    #[cfg(feature = "extra-children")]
5533    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5534}
5535
5536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5537pub struct Parameters {
5538    #[serde(rename = "@count")]
5539    #[serde(default, skip_serializing_if = "Option::is_none")]
5540    pub count: Option<u32>,
5541    #[serde(rename = "parameter")]
5542    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5543    pub parameter: Vec<Parameter>,
5544    /// Unknown attributes captured for roundtrip fidelity.
5545    #[cfg(feature = "extra-attrs")]
5546    #[serde(skip)]
5547    #[cfg(feature = "extra-attrs")]
5548    #[serde(default)]
5549    #[cfg(feature = "extra-attrs")]
5550    pub extra_attrs: std::collections::HashMap<String, String>,
5551    /// Unknown child elements captured for roundtrip fidelity.
5552    #[cfg(feature = "extra-children")]
5553    #[serde(skip)]
5554    #[cfg(feature = "extra-children")]
5555    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5556}
5557
5558#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5559pub struct Parameter {
5560    #[serde(rename = "@name")]
5561    #[serde(default, skip_serializing_if = "Option::is_none")]
5562    pub name: Option<XmlString>,
5563    #[serde(rename = "@sqlType")]
5564    #[serde(default, skip_serializing_if = "Option::is_none")]
5565    pub sql_type: Option<i32>,
5566    #[serde(rename = "@parameterType")]
5567    #[serde(default, skip_serializing_if = "Option::is_none")]
5568    pub parameter_type: Option<STParameterType>,
5569    #[serde(rename = "@refreshOnChange")]
5570    #[serde(
5571        default,
5572        skip_serializing_if = "Option::is_none",
5573        with = "ooxml_xml::ooxml_bool"
5574    )]
5575    pub refresh_on_change: Option<bool>,
5576    #[serde(rename = "@prompt")]
5577    #[serde(default, skip_serializing_if = "Option::is_none")]
5578    pub prompt: Option<XmlString>,
5579    #[serde(rename = "@boolean")]
5580    #[serde(
5581        default,
5582        skip_serializing_if = "Option::is_none",
5583        with = "ooxml_xml::ooxml_bool"
5584    )]
5585    pub boolean: Option<bool>,
5586    #[serde(rename = "@double")]
5587    #[serde(default, skip_serializing_if = "Option::is_none")]
5588    pub double: Option<f64>,
5589    #[serde(rename = "@integer")]
5590    #[serde(default, skip_serializing_if = "Option::is_none")]
5591    pub integer: Option<i32>,
5592    #[serde(rename = "@string")]
5593    #[serde(default, skip_serializing_if = "Option::is_none")]
5594    pub string: Option<XmlString>,
5595    #[serde(rename = "@cell")]
5596    #[serde(default, skip_serializing_if = "Option::is_none")]
5597    pub cell: Option<XmlString>,
5598    /// Unknown attributes captured for roundtrip fidelity.
5599    #[cfg(feature = "extra-attrs")]
5600    #[serde(skip)]
5601    #[cfg(feature = "extra-attrs")]
5602    #[serde(default)]
5603    #[cfg(feature = "extra-attrs")]
5604    pub extra_attrs: std::collections::HashMap<String, String>,
5605}
5606
5607#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5608pub struct DataTables {
5609    #[serde(rename = "@count")]
5610    #[serde(default, skip_serializing_if = "Option::is_none")]
5611    pub count: Option<u32>,
5612    #[serde(rename = "m")]
5613    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5614    pub m: Vec<TableMissing>,
5615    #[serde(rename = "s")]
5616    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5617    pub style_index: Vec<CTXStringElement>,
5618    #[serde(rename = "x")]
5619    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5620    pub x: Vec<CTIndex>,
5621    /// Unknown attributes captured for roundtrip fidelity.
5622    #[cfg(feature = "extra-attrs")]
5623    #[serde(skip)]
5624    #[cfg(feature = "extra-attrs")]
5625    #[serde(default)]
5626    #[cfg(feature = "extra-attrs")]
5627    pub extra_attrs: std::collections::HashMap<String, String>,
5628    /// Unknown child elements captured for roundtrip fidelity.
5629    #[cfg(feature = "extra-children")]
5630    #[serde(skip)]
5631    #[cfg(feature = "extra-children")]
5632    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5633}
5634
5635#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5636pub struct TableMissing;
5637
5638#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5639pub struct TextImportProperties {
5640    #[serde(rename = "@prompt")]
5641    #[serde(
5642        default,
5643        skip_serializing_if = "Option::is_none",
5644        with = "ooxml_xml::ooxml_bool"
5645    )]
5646    pub prompt: Option<bool>,
5647    #[serde(rename = "@fileType")]
5648    #[serde(default, skip_serializing_if = "Option::is_none")]
5649    pub file_type: Option<STFileType>,
5650    #[serde(rename = "@codePage")]
5651    #[serde(default, skip_serializing_if = "Option::is_none")]
5652    pub code_page: Option<u32>,
5653    #[serde(rename = "@characterSet")]
5654    #[serde(default, skip_serializing_if = "Option::is_none")]
5655    pub character_set: Option<String>,
5656    #[serde(rename = "@firstRow")]
5657    #[serde(default, skip_serializing_if = "Option::is_none")]
5658    pub first_row: Option<u32>,
5659    #[serde(rename = "@sourceFile")]
5660    #[serde(default, skip_serializing_if = "Option::is_none")]
5661    pub source_file: Option<XmlString>,
5662    #[serde(rename = "@delimited")]
5663    #[serde(
5664        default,
5665        skip_serializing_if = "Option::is_none",
5666        with = "ooxml_xml::ooxml_bool"
5667    )]
5668    pub delimited: Option<bool>,
5669    #[serde(rename = "@decimal")]
5670    #[serde(default, skip_serializing_if = "Option::is_none")]
5671    pub decimal: Option<XmlString>,
5672    #[serde(rename = "@thousands")]
5673    #[serde(default, skip_serializing_if = "Option::is_none")]
5674    pub thousands: Option<XmlString>,
5675    #[serde(rename = "@tab")]
5676    #[serde(
5677        default,
5678        skip_serializing_if = "Option::is_none",
5679        with = "ooxml_xml::ooxml_bool"
5680    )]
5681    pub tab: Option<bool>,
5682    #[serde(rename = "@space")]
5683    #[serde(
5684        default,
5685        skip_serializing_if = "Option::is_none",
5686        with = "ooxml_xml::ooxml_bool"
5687    )]
5688    pub space: Option<bool>,
5689    #[serde(rename = "@comma")]
5690    #[serde(
5691        default,
5692        skip_serializing_if = "Option::is_none",
5693        with = "ooxml_xml::ooxml_bool"
5694    )]
5695    pub comma: Option<bool>,
5696    #[serde(rename = "@semicolon")]
5697    #[serde(
5698        default,
5699        skip_serializing_if = "Option::is_none",
5700        with = "ooxml_xml::ooxml_bool"
5701    )]
5702    pub semicolon: Option<bool>,
5703    #[serde(rename = "@consecutive")]
5704    #[serde(
5705        default,
5706        skip_serializing_if = "Option::is_none",
5707        with = "ooxml_xml::ooxml_bool"
5708    )]
5709    pub consecutive: Option<bool>,
5710    #[serde(rename = "@qualifier")]
5711    #[serde(default, skip_serializing_if = "Option::is_none")]
5712    pub qualifier: Option<STQualifier>,
5713    #[serde(rename = "@delimiter")]
5714    #[serde(default, skip_serializing_if = "Option::is_none")]
5715    pub delimiter: Option<XmlString>,
5716    #[serde(rename = "textFields")]
5717    #[serde(default, skip_serializing_if = "Option::is_none")]
5718    pub text_fields: Option<Box<TextFields>>,
5719    /// Unknown attributes captured for roundtrip fidelity.
5720    #[cfg(feature = "extra-attrs")]
5721    #[serde(skip)]
5722    #[cfg(feature = "extra-attrs")]
5723    #[serde(default)]
5724    #[cfg(feature = "extra-attrs")]
5725    pub extra_attrs: std::collections::HashMap<String, String>,
5726    /// Unknown child elements captured for roundtrip fidelity.
5727    #[cfg(feature = "extra-children")]
5728    #[serde(skip)]
5729    #[cfg(feature = "extra-children")]
5730    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5731}
5732
5733#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5734pub struct TextFields {
5735    #[serde(rename = "@count")]
5736    #[serde(default, skip_serializing_if = "Option::is_none")]
5737    pub count: Option<u32>,
5738    #[serde(rename = "textField")]
5739    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5740    pub text_field: Vec<TextField>,
5741    /// Unknown attributes captured for roundtrip fidelity.
5742    #[cfg(feature = "extra-attrs")]
5743    #[serde(skip)]
5744    #[cfg(feature = "extra-attrs")]
5745    #[serde(default)]
5746    #[cfg(feature = "extra-attrs")]
5747    pub extra_attrs: std::collections::HashMap<String, String>,
5748    /// Unknown child elements captured for roundtrip fidelity.
5749    #[cfg(feature = "extra-children")]
5750    #[serde(skip)]
5751    #[cfg(feature = "extra-children")]
5752    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5753}
5754
5755#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5756pub struct TextField {
5757    #[serde(rename = "@type")]
5758    #[serde(default, skip_serializing_if = "Option::is_none")]
5759    pub r#type: Option<STExternalConnectionType>,
5760    #[serde(rename = "@position")]
5761    #[serde(default, skip_serializing_if = "Option::is_none")]
5762    pub position: Option<u32>,
5763    /// Unknown attributes captured for roundtrip fidelity.
5764    #[cfg(feature = "extra-attrs")]
5765    #[serde(skip)]
5766    #[cfg(feature = "extra-attrs")]
5767    #[serde(default)]
5768    #[cfg(feature = "extra-attrs")]
5769    pub extra_attrs: std::collections::HashMap<String, String>,
5770}
5771
5772pub type SmlPivotCacheDefinition = Box<PivotCacheDefinition>;
5773
5774pub type SmlPivotCacheRecords = Box<PivotCacheRecords>;
5775
5776pub type SmlPivotTableDefinition = Box<CTPivotTableDefinition>;
5777
5778#[derive(Debug, Clone, Serialize, Deserialize)]
5779pub struct PivotCacheDefinition {
5780    #[serde(rename = "@r:id")]
5781    #[serde(default, skip_serializing_if = "Option::is_none")]
5782    pub id: Option<STRelationshipId>,
5783    #[serde(rename = "@invalid")]
5784    #[serde(
5785        default,
5786        skip_serializing_if = "Option::is_none",
5787        with = "ooxml_xml::ooxml_bool"
5788    )]
5789    pub invalid: Option<bool>,
5790    #[serde(rename = "@saveData")]
5791    #[serde(
5792        default,
5793        skip_serializing_if = "Option::is_none",
5794        with = "ooxml_xml::ooxml_bool"
5795    )]
5796    pub save_data: Option<bool>,
5797    #[serde(rename = "@refreshOnLoad")]
5798    #[serde(
5799        default,
5800        skip_serializing_if = "Option::is_none",
5801        with = "ooxml_xml::ooxml_bool"
5802    )]
5803    pub refresh_on_load: Option<bool>,
5804    #[serde(rename = "@optimizeMemory")]
5805    #[serde(
5806        default,
5807        skip_serializing_if = "Option::is_none",
5808        with = "ooxml_xml::ooxml_bool"
5809    )]
5810    pub optimize_memory: Option<bool>,
5811    #[serde(rename = "@enableRefresh")]
5812    #[serde(
5813        default,
5814        skip_serializing_if = "Option::is_none",
5815        with = "ooxml_xml::ooxml_bool"
5816    )]
5817    pub enable_refresh: Option<bool>,
5818    #[serde(rename = "@refreshedBy")]
5819    #[serde(default, skip_serializing_if = "Option::is_none")]
5820    pub refreshed_by: Option<XmlString>,
5821    #[serde(rename = "@refreshedDate")]
5822    #[serde(default, skip_serializing_if = "Option::is_none")]
5823    pub refreshed_date: Option<f64>,
5824    #[serde(rename = "@refreshedDateIso")]
5825    #[serde(default, skip_serializing_if = "Option::is_none")]
5826    pub refreshed_date_iso: Option<String>,
5827    #[serde(rename = "@backgroundQuery")]
5828    #[serde(
5829        default,
5830        skip_serializing_if = "Option::is_none",
5831        with = "ooxml_xml::ooxml_bool"
5832    )]
5833    pub background_query: Option<bool>,
5834    #[serde(rename = "@missingItemsLimit")]
5835    #[serde(default, skip_serializing_if = "Option::is_none")]
5836    pub missing_items_limit: Option<u32>,
5837    #[serde(rename = "@createdVersion")]
5838    #[serde(default, skip_serializing_if = "Option::is_none")]
5839    pub created_version: Option<u8>,
5840    #[serde(rename = "@refreshedVersion")]
5841    #[serde(default, skip_serializing_if = "Option::is_none")]
5842    pub refreshed_version: Option<u8>,
5843    #[serde(rename = "@minRefreshableVersion")]
5844    #[serde(default, skip_serializing_if = "Option::is_none")]
5845    pub min_refreshable_version: Option<u8>,
5846    #[serde(rename = "@recordCount")]
5847    #[serde(default, skip_serializing_if = "Option::is_none")]
5848    pub record_count: Option<u32>,
5849    #[serde(rename = "@upgradeOnRefresh")]
5850    #[serde(
5851        default,
5852        skip_serializing_if = "Option::is_none",
5853        with = "ooxml_xml::ooxml_bool"
5854    )]
5855    pub upgrade_on_refresh: Option<bool>,
5856    #[serde(rename = "@tupleCache")]
5857    #[serde(
5858        default,
5859        skip_serializing_if = "Option::is_none",
5860        with = "ooxml_xml::ooxml_bool"
5861    )]
5862    pub tuple_cache: Option<bool>,
5863    #[serde(rename = "@supportSubquery")]
5864    #[serde(
5865        default,
5866        skip_serializing_if = "Option::is_none",
5867        with = "ooxml_xml::ooxml_bool"
5868    )]
5869    pub support_subquery: Option<bool>,
5870    #[serde(rename = "@supportAdvancedDrill")]
5871    #[serde(
5872        default,
5873        skip_serializing_if = "Option::is_none",
5874        with = "ooxml_xml::ooxml_bool"
5875    )]
5876    pub support_advanced_drill: Option<bool>,
5877    #[serde(rename = "cacheSource")]
5878    pub cache_source: Box<CacheSource>,
5879    #[serde(rename = "cacheFields")]
5880    pub cache_fields: Box<CacheFields>,
5881    #[serde(rename = "cacheHierarchies")]
5882    #[serde(default, skip_serializing_if = "Option::is_none")]
5883    pub cache_hierarchies: Option<Box<CTCacheHierarchies>>,
5884    #[serde(rename = "kpis")]
5885    #[serde(default, skip_serializing_if = "Option::is_none")]
5886    pub kpis: Option<Box<CTPCDKPIs>>,
5887    #[serde(rename = "calculatedItems")]
5888    #[serde(default, skip_serializing_if = "Option::is_none")]
5889    pub calculated_items: Option<Box<CTCalculatedItems>>,
5890    #[serde(rename = "calculatedMembers")]
5891    #[serde(default, skip_serializing_if = "Option::is_none")]
5892    pub calculated_members: Option<Box<CTCalculatedMembers>>,
5893    #[serde(rename = "dimensions")]
5894    #[serde(default, skip_serializing_if = "Option::is_none")]
5895    pub dimensions: Option<Box<CTDimensions>>,
5896    #[serde(rename = "measureGroups")]
5897    #[serde(default, skip_serializing_if = "Option::is_none")]
5898    pub measure_groups: Option<Box<CTMeasureGroups>>,
5899    #[serde(rename = "maps")]
5900    #[serde(default, skip_serializing_if = "Option::is_none")]
5901    pub maps: Option<Box<CTMeasureDimensionMaps>>,
5902    #[serde(rename = "extLst")]
5903    #[serde(default, skip_serializing_if = "Option::is_none")]
5904    pub extension_list: Option<Box<ExtensionList>>,
5905    /// Unknown attributes captured for roundtrip fidelity.
5906    #[cfg(feature = "extra-attrs")]
5907    #[serde(skip)]
5908    #[cfg(feature = "extra-attrs")]
5909    #[serde(default)]
5910    #[cfg(feature = "extra-attrs")]
5911    pub extra_attrs: std::collections::HashMap<String, String>,
5912    /// Unknown child elements captured for roundtrip fidelity.
5913    #[cfg(feature = "extra-children")]
5914    #[serde(skip)]
5915    #[cfg(feature = "extra-children")]
5916    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5917}
5918
5919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5920pub struct CacheFields {
5921    #[serde(rename = "@count")]
5922    #[serde(default, skip_serializing_if = "Option::is_none")]
5923    pub count: Option<u32>,
5924    #[serde(rename = "cacheField")]
5925    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5926    pub cache_field: Vec<CacheField>,
5927    /// Unknown attributes captured for roundtrip fidelity.
5928    #[cfg(feature = "extra-attrs")]
5929    #[serde(skip)]
5930    #[cfg(feature = "extra-attrs")]
5931    #[serde(default)]
5932    #[cfg(feature = "extra-attrs")]
5933    pub extra_attrs: std::collections::HashMap<String, String>,
5934    /// Unknown child elements captured for roundtrip fidelity.
5935    #[cfg(feature = "extra-children")]
5936    #[serde(skip)]
5937    #[cfg(feature = "extra-children")]
5938    pub extra_children: Vec<ooxml_xml::PositionedNode>,
5939}
5940
5941#[derive(Debug, Clone, Serialize, Deserialize)]
5942pub struct CacheField {
5943    #[serde(rename = "@name")]
5944    pub name: XmlString,
5945    #[serde(rename = "@caption")]
5946    #[serde(default, skip_serializing_if = "Option::is_none")]
5947    pub caption: Option<XmlString>,
5948    #[serde(rename = "@propertyName")]
5949    #[serde(default, skip_serializing_if = "Option::is_none")]
5950    pub property_name: Option<XmlString>,
5951    #[serde(rename = "@serverField")]
5952    #[serde(
5953        default,
5954        skip_serializing_if = "Option::is_none",
5955        with = "ooxml_xml::ooxml_bool"
5956    )]
5957    pub server_field: Option<bool>,
5958    #[serde(rename = "@uniqueList")]
5959    #[serde(
5960        default,
5961        skip_serializing_if = "Option::is_none",
5962        with = "ooxml_xml::ooxml_bool"
5963    )]
5964    pub unique_list: Option<bool>,
5965    #[serde(rename = "@numFmtId")]
5966    #[serde(default, skip_serializing_if = "Option::is_none")]
5967    pub number_format_id: Option<STNumFmtId>,
5968    #[serde(rename = "@formula")]
5969    #[serde(default, skip_serializing_if = "Option::is_none")]
5970    pub formula: Option<XmlString>,
5971    #[serde(rename = "@sqlType")]
5972    #[serde(default, skip_serializing_if = "Option::is_none")]
5973    pub sql_type: Option<i32>,
5974    #[serde(rename = "@hierarchy")]
5975    #[serde(default, skip_serializing_if = "Option::is_none")]
5976    pub hierarchy: Option<i32>,
5977    #[serde(rename = "@level")]
5978    #[serde(default, skip_serializing_if = "Option::is_none")]
5979    pub level: Option<u32>,
5980    #[serde(rename = "@databaseField")]
5981    #[serde(
5982        default,
5983        skip_serializing_if = "Option::is_none",
5984        with = "ooxml_xml::ooxml_bool"
5985    )]
5986    pub database_field: Option<bool>,
5987    #[serde(rename = "@mappingCount")]
5988    #[serde(default, skip_serializing_if = "Option::is_none")]
5989    pub mapping_count: Option<u32>,
5990    #[serde(rename = "@memberPropertyField")]
5991    #[serde(
5992        default,
5993        skip_serializing_if = "Option::is_none",
5994        with = "ooxml_xml::ooxml_bool"
5995    )]
5996    pub member_property_field: Option<bool>,
5997    #[serde(rename = "sharedItems")]
5998    #[serde(default, skip_serializing_if = "Option::is_none")]
5999    pub shared_items: Option<Box<SharedItems>>,
6000    #[serde(rename = "fieldGroup")]
6001    #[serde(default, skip_serializing_if = "Option::is_none")]
6002    pub field_group: Option<Box<FieldGroup>>,
6003    #[serde(rename = "mpMap")]
6004    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6005    pub mp_map: Vec<CTX>,
6006    #[serde(rename = "extLst")]
6007    #[serde(default, skip_serializing_if = "Option::is_none")]
6008    pub extension_list: Option<Box<ExtensionList>>,
6009    /// Unknown attributes captured for roundtrip fidelity.
6010    #[cfg(feature = "extra-attrs")]
6011    #[serde(skip)]
6012    #[cfg(feature = "extra-attrs")]
6013    #[serde(default)]
6014    #[cfg(feature = "extra-attrs")]
6015    pub extra_attrs: std::collections::HashMap<String, String>,
6016    /// Unknown child elements captured for roundtrip fidelity.
6017    #[cfg(feature = "extra-children")]
6018    #[serde(skip)]
6019    #[cfg(feature = "extra-children")]
6020    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6021}
6022
6023#[derive(Debug, Clone, Serialize, Deserialize)]
6024pub struct CacheSource {
6025    #[serde(rename = "@type")]
6026    pub r#type: STSourceType,
6027    #[serde(rename = "@connectionId")]
6028    #[serde(default, skip_serializing_if = "Option::is_none")]
6029    pub connection_id: Option<u32>,
6030    #[serde(rename = "worksheetSource")]
6031    #[serde(default, skip_serializing_if = "Option::is_none")]
6032    pub worksheet_source: Option<Box<WorksheetSource>>,
6033    #[serde(rename = "consolidation")]
6034    #[serde(default, skip_serializing_if = "Option::is_none")]
6035    pub consolidation: Option<Box<Consolidation>>,
6036    #[serde(rename = "extLst")]
6037    #[serde(default, skip_serializing_if = "Option::is_none")]
6038    pub extension_list: Option<Box<ExtensionList>>,
6039    /// Unknown attributes captured for roundtrip fidelity.
6040    #[cfg(feature = "extra-attrs")]
6041    #[serde(skip)]
6042    #[cfg(feature = "extra-attrs")]
6043    #[serde(default)]
6044    #[cfg(feature = "extra-attrs")]
6045    pub extra_attrs: std::collections::HashMap<String, String>,
6046    /// Unknown child elements captured for roundtrip fidelity.
6047    #[cfg(feature = "extra-children")]
6048    #[serde(skip)]
6049    #[cfg(feature = "extra-children")]
6050    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6051}
6052
6053#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6054pub struct WorksheetSource {
6055    #[serde(rename = "@ref")]
6056    #[serde(default, skip_serializing_if = "Option::is_none")]
6057    pub reference: Option<Reference>,
6058    #[serde(rename = "@name")]
6059    #[serde(default, skip_serializing_if = "Option::is_none")]
6060    pub name: Option<XmlString>,
6061    #[serde(rename = "@sheet")]
6062    #[serde(default, skip_serializing_if = "Option::is_none")]
6063    pub sheet: Option<XmlString>,
6064    #[serde(rename = "@r:id")]
6065    #[serde(default, skip_serializing_if = "Option::is_none")]
6066    pub id: Option<STRelationshipId>,
6067    /// Unknown attributes captured for roundtrip fidelity.
6068    #[cfg(feature = "extra-attrs")]
6069    #[serde(skip)]
6070    #[cfg(feature = "extra-attrs")]
6071    #[serde(default)]
6072    #[cfg(feature = "extra-attrs")]
6073    pub extra_attrs: std::collections::HashMap<String, String>,
6074}
6075
6076#[derive(Debug, Clone, Serialize, Deserialize)]
6077pub struct Consolidation {
6078    #[serde(rename = "@autoPage")]
6079    #[serde(
6080        default,
6081        skip_serializing_if = "Option::is_none",
6082        with = "ooxml_xml::ooxml_bool"
6083    )]
6084    pub auto_page: Option<bool>,
6085    #[serde(rename = "pages")]
6086    #[serde(default, skip_serializing_if = "Option::is_none")]
6087    pub pages: Option<Box<CTPages>>,
6088    #[serde(rename = "rangeSets")]
6089    pub range_sets: Box<CTRangeSets>,
6090    /// Unknown attributes captured for roundtrip fidelity.
6091    #[cfg(feature = "extra-attrs")]
6092    #[serde(skip)]
6093    #[cfg(feature = "extra-attrs")]
6094    #[serde(default)]
6095    #[cfg(feature = "extra-attrs")]
6096    pub extra_attrs: std::collections::HashMap<String, String>,
6097    /// Unknown child elements captured for roundtrip fidelity.
6098    #[cfg(feature = "extra-children")]
6099    #[serde(skip)]
6100    #[cfg(feature = "extra-children")]
6101    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6102}
6103
6104#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6105pub struct CTPages {
6106    #[serde(rename = "@count")]
6107    #[serde(default, skip_serializing_if = "Option::is_none")]
6108    pub count: Option<u32>,
6109    #[serde(rename = "page")]
6110    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6111    pub page: Vec<CTPCDSCPage>,
6112    /// Unknown attributes captured for roundtrip fidelity.
6113    #[cfg(feature = "extra-attrs")]
6114    #[serde(skip)]
6115    #[cfg(feature = "extra-attrs")]
6116    #[serde(default)]
6117    #[cfg(feature = "extra-attrs")]
6118    pub extra_attrs: std::collections::HashMap<String, String>,
6119    /// Unknown child elements captured for roundtrip fidelity.
6120    #[cfg(feature = "extra-children")]
6121    #[serde(skip)]
6122    #[cfg(feature = "extra-children")]
6123    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6124}
6125
6126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6127pub struct CTPCDSCPage {
6128    #[serde(rename = "@count")]
6129    #[serde(default, skip_serializing_if = "Option::is_none")]
6130    pub count: Option<u32>,
6131    #[serde(rename = "pageItem")]
6132    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6133    pub page_item: Vec<CTPageItem>,
6134    /// Unknown attributes captured for roundtrip fidelity.
6135    #[cfg(feature = "extra-attrs")]
6136    #[serde(skip)]
6137    #[cfg(feature = "extra-attrs")]
6138    #[serde(default)]
6139    #[cfg(feature = "extra-attrs")]
6140    pub extra_attrs: std::collections::HashMap<String, String>,
6141    /// Unknown child elements captured for roundtrip fidelity.
6142    #[cfg(feature = "extra-children")]
6143    #[serde(skip)]
6144    #[cfg(feature = "extra-children")]
6145    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6146}
6147
6148#[derive(Debug, Clone, Serialize, Deserialize)]
6149pub struct CTPageItem {
6150    #[serde(rename = "@name")]
6151    pub name: XmlString,
6152    /// Unknown attributes captured for roundtrip fidelity.
6153    #[cfg(feature = "extra-attrs")]
6154    #[serde(skip)]
6155    #[cfg(feature = "extra-attrs")]
6156    #[serde(default)]
6157    #[cfg(feature = "extra-attrs")]
6158    pub extra_attrs: std::collections::HashMap<String, String>,
6159}
6160
6161#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6162pub struct CTRangeSets {
6163    #[serde(rename = "@count")]
6164    #[serde(default, skip_serializing_if = "Option::is_none")]
6165    pub count: Option<u32>,
6166    #[serde(rename = "rangeSet")]
6167    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6168    pub range_set: Vec<CTRangeSet>,
6169    /// Unknown attributes captured for roundtrip fidelity.
6170    #[cfg(feature = "extra-attrs")]
6171    #[serde(skip)]
6172    #[cfg(feature = "extra-attrs")]
6173    #[serde(default)]
6174    #[cfg(feature = "extra-attrs")]
6175    pub extra_attrs: std::collections::HashMap<String, String>,
6176    /// Unknown child elements captured for roundtrip fidelity.
6177    #[cfg(feature = "extra-children")]
6178    #[serde(skip)]
6179    #[cfg(feature = "extra-children")]
6180    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6181}
6182
6183#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6184pub struct CTRangeSet {
6185    #[serde(rename = "@i1")]
6186    #[serde(default, skip_serializing_if = "Option::is_none")]
6187    pub i1: Option<u32>,
6188    #[serde(rename = "@i2")]
6189    #[serde(default, skip_serializing_if = "Option::is_none")]
6190    pub i2: Option<u32>,
6191    #[serde(rename = "@i3")]
6192    #[serde(default, skip_serializing_if = "Option::is_none")]
6193    pub i3: Option<u32>,
6194    #[serde(rename = "@i4")]
6195    #[serde(default, skip_serializing_if = "Option::is_none")]
6196    pub i4: Option<u32>,
6197    #[serde(rename = "@ref")]
6198    #[serde(default, skip_serializing_if = "Option::is_none")]
6199    pub reference: Option<Reference>,
6200    #[serde(rename = "@name")]
6201    #[serde(default, skip_serializing_if = "Option::is_none")]
6202    pub name: Option<XmlString>,
6203    #[serde(rename = "@sheet")]
6204    #[serde(default, skip_serializing_if = "Option::is_none")]
6205    pub sheet: Option<XmlString>,
6206    #[serde(rename = "@r:id")]
6207    #[serde(default, skip_serializing_if = "Option::is_none")]
6208    pub id: Option<STRelationshipId>,
6209    /// Unknown attributes captured for roundtrip fidelity.
6210    #[cfg(feature = "extra-attrs")]
6211    #[serde(skip)]
6212    #[cfg(feature = "extra-attrs")]
6213    #[serde(default)]
6214    #[cfg(feature = "extra-attrs")]
6215    pub extra_attrs: std::collections::HashMap<String, String>,
6216}
6217
6218#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6219pub struct SharedItems {
6220    #[serde(rename = "@containsSemiMixedTypes")]
6221    #[serde(
6222        default,
6223        skip_serializing_if = "Option::is_none",
6224        with = "ooxml_xml::ooxml_bool"
6225    )]
6226    pub contains_semi_mixed_types: Option<bool>,
6227    #[serde(rename = "@containsNonDate")]
6228    #[serde(
6229        default,
6230        skip_serializing_if = "Option::is_none",
6231        with = "ooxml_xml::ooxml_bool"
6232    )]
6233    pub contains_non_date: Option<bool>,
6234    #[serde(rename = "@containsDate")]
6235    #[serde(
6236        default,
6237        skip_serializing_if = "Option::is_none",
6238        with = "ooxml_xml::ooxml_bool"
6239    )]
6240    pub contains_date: Option<bool>,
6241    #[serde(rename = "@containsString")]
6242    #[serde(
6243        default,
6244        skip_serializing_if = "Option::is_none",
6245        with = "ooxml_xml::ooxml_bool"
6246    )]
6247    pub contains_string: Option<bool>,
6248    #[serde(rename = "@containsBlank")]
6249    #[serde(
6250        default,
6251        skip_serializing_if = "Option::is_none",
6252        with = "ooxml_xml::ooxml_bool"
6253    )]
6254    pub contains_blank: Option<bool>,
6255    #[serde(rename = "@containsMixedTypes")]
6256    #[serde(
6257        default,
6258        skip_serializing_if = "Option::is_none",
6259        with = "ooxml_xml::ooxml_bool"
6260    )]
6261    pub contains_mixed_types: Option<bool>,
6262    #[serde(rename = "@containsNumber")]
6263    #[serde(
6264        default,
6265        skip_serializing_if = "Option::is_none",
6266        with = "ooxml_xml::ooxml_bool"
6267    )]
6268    pub contains_number: Option<bool>,
6269    #[serde(rename = "@containsInteger")]
6270    #[serde(
6271        default,
6272        skip_serializing_if = "Option::is_none",
6273        with = "ooxml_xml::ooxml_bool"
6274    )]
6275    pub contains_integer: Option<bool>,
6276    #[serde(rename = "@minValue")]
6277    #[serde(default, skip_serializing_if = "Option::is_none")]
6278    pub min_value: Option<f64>,
6279    #[serde(rename = "@maxValue")]
6280    #[serde(default, skip_serializing_if = "Option::is_none")]
6281    pub max_value: Option<f64>,
6282    #[serde(rename = "@minDate")]
6283    #[serde(default, skip_serializing_if = "Option::is_none")]
6284    pub min_date: Option<String>,
6285    #[serde(rename = "@maxDate")]
6286    #[serde(default, skip_serializing_if = "Option::is_none")]
6287    pub max_date: Option<String>,
6288    #[serde(rename = "@count")]
6289    #[serde(default, skip_serializing_if = "Option::is_none")]
6290    pub count: Option<u32>,
6291    #[serde(rename = "@longText")]
6292    #[serde(
6293        default,
6294        skip_serializing_if = "Option::is_none",
6295        with = "ooxml_xml::ooxml_bool"
6296    )]
6297    pub long_text: Option<bool>,
6298    #[serde(rename = "m")]
6299    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6300    pub m: Vec<CTMissing>,
6301    #[serde(rename = "n")]
6302    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6303    pub n: Vec<CTNumber>,
6304    #[serde(rename = "b")]
6305    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6306    pub b: Vec<CTBoolean>,
6307    #[serde(rename = "e")]
6308    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6309    pub e: Vec<CTError>,
6310    #[serde(rename = "s")]
6311    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6312    pub style_index: Vec<CTString>,
6313    #[serde(rename = "d")]
6314    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6315    pub d: Vec<CTDateTime>,
6316    /// Unknown attributes captured for roundtrip fidelity.
6317    #[cfg(feature = "extra-attrs")]
6318    #[serde(skip)]
6319    #[cfg(feature = "extra-attrs")]
6320    #[serde(default)]
6321    #[cfg(feature = "extra-attrs")]
6322    pub extra_attrs: std::collections::HashMap<String, String>,
6323    /// Unknown child elements captured for roundtrip fidelity.
6324    #[cfg(feature = "extra-children")]
6325    #[serde(skip)]
6326    #[cfg(feature = "extra-children")]
6327    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6328}
6329
6330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6331pub struct CTMissing {
6332    #[serde(rename = "@u")]
6333    #[serde(
6334        default,
6335        skip_serializing_if = "Option::is_none",
6336        with = "ooxml_xml::ooxml_bool"
6337    )]
6338    pub u: Option<bool>,
6339    #[serde(rename = "@f")]
6340    #[serde(
6341        default,
6342        skip_serializing_if = "Option::is_none",
6343        with = "ooxml_xml::ooxml_bool"
6344    )]
6345    pub formula: Option<bool>,
6346    #[serde(rename = "@c")]
6347    #[serde(default, skip_serializing_if = "Option::is_none")]
6348    pub cells: Option<XmlString>,
6349    #[serde(rename = "@cp")]
6350    #[serde(default, skip_serializing_if = "Option::is_none")]
6351    pub cp: Option<u32>,
6352    #[serde(rename = "@in")]
6353    #[serde(default, skip_serializing_if = "Option::is_none")]
6354    pub r#in: Option<u32>,
6355    #[serde(rename = "@bc")]
6356    #[serde(default, skip_serializing_if = "Option::is_none")]
6357    pub bc: Option<STUnsignedIntHex>,
6358    #[serde(rename = "@fc")]
6359    #[serde(default, skip_serializing_if = "Option::is_none")]
6360    pub fc: Option<STUnsignedIntHex>,
6361    #[serde(rename = "@i")]
6362    #[serde(
6363        default,
6364        skip_serializing_if = "Option::is_none",
6365        with = "ooxml_xml::ooxml_bool"
6366    )]
6367    pub i: Option<bool>,
6368    #[serde(rename = "@un")]
6369    #[serde(
6370        default,
6371        skip_serializing_if = "Option::is_none",
6372        with = "ooxml_xml::ooxml_bool"
6373    )]
6374    pub un: Option<bool>,
6375    #[serde(rename = "@st")]
6376    #[serde(
6377        default,
6378        skip_serializing_if = "Option::is_none",
6379        with = "ooxml_xml::ooxml_bool"
6380    )]
6381    pub st: Option<bool>,
6382    #[serde(rename = "@b")]
6383    #[serde(
6384        default,
6385        skip_serializing_if = "Option::is_none",
6386        with = "ooxml_xml::ooxml_bool"
6387    )]
6388    pub b: Option<bool>,
6389    #[serde(rename = "tpls")]
6390    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6391    pub tpls: Vec<CTTuples>,
6392    #[serde(rename = "x")]
6393    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6394    pub x: Vec<CTX>,
6395    /// Unknown attributes captured for roundtrip fidelity.
6396    #[cfg(feature = "extra-attrs")]
6397    #[serde(skip)]
6398    #[cfg(feature = "extra-attrs")]
6399    #[serde(default)]
6400    #[cfg(feature = "extra-attrs")]
6401    pub extra_attrs: std::collections::HashMap<String, String>,
6402    /// Unknown child elements captured for roundtrip fidelity.
6403    #[cfg(feature = "extra-children")]
6404    #[serde(skip)]
6405    #[cfg(feature = "extra-children")]
6406    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6407}
6408
6409#[derive(Debug, Clone, Serialize, Deserialize)]
6410pub struct CTNumber {
6411    #[serde(rename = "@v")]
6412    pub value: f64,
6413    #[serde(rename = "@u")]
6414    #[serde(
6415        default,
6416        skip_serializing_if = "Option::is_none",
6417        with = "ooxml_xml::ooxml_bool"
6418    )]
6419    pub u: Option<bool>,
6420    #[serde(rename = "@f")]
6421    #[serde(
6422        default,
6423        skip_serializing_if = "Option::is_none",
6424        with = "ooxml_xml::ooxml_bool"
6425    )]
6426    pub formula: Option<bool>,
6427    #[serde(rename = "@c")]
6428    #[serde(default, skip_serializing_if = "Option::is_none")]
6429    pub cells: Option<XmlString>,
6430    #[serde(rename = "@cp")]
6431    #[serde(default, skip_serializing_if = "Option::is_none")]
6432    pub cp: Option<u32>,
6433    #[serde(rename = "@in")]
6434    #[serde(default, skip_serializing_if = "Option::is_none")]
6435    pub r#in: Option<u32>,
6436    #[serde(rename = "@bc")]
6437    #[serde(default, skip_serializing_if = "Option::is_none")]
6438    pub bc: Option<STUnsignedIntHex>,
6439    #[serde(rename = "@fc")]
6440    #[serde(default, skip_serializing_if = "Option::is_none")]
6441    pub fc: Option<STUnsignedIntHex>,
6442    #[serde(rename = "@i")]
6443    #[serde(
6444        default,
6445        skip_serializing_if = "Option::is_none",
6446        with = "ooxml_xml::ooxml_bool"
6447    )]
6448    pub i: Option<bool>,
6449    #[serde(rename = "@un")]
6450    #[serde(
6451        default,
6452        skip_serializing_if = "Option::is_none",
6453        with = "ooxml_xml::ooxml_bool"
6454    )]
6455    pub un: Option<bool>,
6456    #[serde(rename = "@st")]
6457    #[serde(
6458        default,
6459        skip_serializing_if = "Option::is_none",
6460        with = "ooxml_xml::ooxml_bool"
6461    )]
6462    pub st: Option<bool>,
6463    #[serde(rename = "@b")]
6464    #[serde(
6465        default,
6466        skip_serializing_if = "Option::is_none",
6467        with = "ooxml_xml::ooxml_bool"
6468    )]
6469    pub b: Option<bool>,
6470    #[serde(rename = "tpls")]
6471    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6472    pub tpls: Vec<CTTuples>,
6473    #[serde(rename = "x")]
6474    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6475    pub x: Vec<CTX>,
6476    /// Unknown attributes captured for roundtrip fidelity.
6477    #[cfg(feature = "extra-attrs")]
6478    #[serde(skip)]
6479    #[cfg(feature = "extra-attrs")]
6480    #[serde(default)]
6481    #[cfg(feature = "extra-attrs")]
6482    pub extra_attrs: std::collections::HashMap<String, String>,
6483    /// Unknown child elements captured for roundtrip fidelity.
6484    #[cfg(feature = "extra-children")]
6485    #[serde(skip)]
6486    #[cfg(feature = "extra-children")]
6487    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6488}
6489
6490#[derive(Debug, Clone, Serialize, Deserialize)]
6491pub struct CTBoolean {
6492    #[serde(rename = "@v")]
6493    #[serde(with = "ooxml_xml::ooxml_bool_required")]
6494    pub value: bool,
6495    #[serde(rename = "@u")]
6496    #[serde(
6497        default,
6498        skip_serializing_if = "Option::is_none",
6499        with = "ooxml_xml::ooxml_bool"
6500    )]
6501    pub u: Option<bool>,
6502    #[serde(rename = "@f")]
6503    #[serde(
6504        default,
6505        skip_serializing_if = "Option::is_none",
6506        with = "ooxml_xml::ooxml_bool"
6507    )]
6508    pub formula: Option<bool>,
6509    #[serde(rename = "@c")]
6510    #[serde(default, skip_serializing_if = "Option::is_none")]
6511    pub cells: Option<XmlString>,
6512    #[serde(rename = "@cp")]
6513    #[serde(default, skip_serializing_if = "Option::is_none")]
6514    pub cp: Option<u32>,
6515    #[serde(rename = "x")]
6516    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6517    pub x: Vec<CTX>,
6518    /// Unknown attributes captured for roundtrip fidelity.
6519    #[cfg(feature = "extra-attrs")]
6520    #[serde(skip)]
6521    #[cfg(feature = "extra-attrs")]
6522    #[serde(default)]
6523    #[cfg(feature = "extra-attrs")]
6524    pub extra_attrs: std::collections::HashMap<String, String>,
6525    /// Unknown child elements captured for roundtrip fidelity.
6526    #[cfg(feature = "extra-children")]
6527    #[serde(skip)]
6528    #[cfg(feature = "extra-children")]
6529    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6530}
6531
6532#[derive(Debug, Clone, Serialize, Deserialize)]
6533pub struct CTError {
6534    #[serde(rename = "@v")]
6535    pub value: XmlString,
6536    #[serde(rename = "@u")]
6537    #[serde(
6538        default,
6539        skip_serializing_if = "Option::is_none",
6540        with = "ooxml_xml::ooxml_bool"
6541    )]
6542    pub u: Option<bool>,
6543    #[serde(rename = "@f")]
6544    #[serde(
6545        default,
6546        skip_serializing_if = "Option::is_none",
6547        with = "ooxml_xml::ooxml_bool"
6548    )]
6549    pub formula: Option<bool>,
6550    #[serde(rename = "@c")]
6551    #[serde(default, skip_serializing_if = "Option::is_none")]
6552    pub cells: Option<XmlString>,
6553    #[serde(rename = "@cp")]
6554    #[serde(default, skip_serializing_if = "Option::is_none")]
6555    pub cp: Option<u32>,
6556    #[serde(rename = "@in")]
6557    #[serde(default, skip_serializing_if = "Option::is_none")]
6558    pub r#in: Option<u32>,
6559    #[serde(rename = "@bc")]
6560    #[serde(default, skip_serializing_if = "Option::is_none")]
6561    pub bc: Option<STUnsignedIntHex>,
6562    #[serde(rename = "@fc")]
6563    #[serde(default, skip_serializing_if = "Option::is_none")]
6564    pub fc: Option<STUnsignedIntHex>,
6565    #[serde(rename = "@i")]
6566    #[serde(
6567        default,
6568        skip_serializing_if = "Option::is_none",
6569        with = "ooxml_xml::ooxml_bool"
6570    )]
6571    pub i: Option<bool>,
6572    #[serde(rename = "@un")]
6573    #[serde(
6574        default,
6575        skip_serializing_if = "Option::is_none",
6576        with = "ooxml_xml::ooxml_bool"
6577    )]
6578    pub un: Option<bool>,
6579    #[serde(rename = "@st")]
6580    #[serde(
6581        default,
6582        skip_serializing_if = "Option::is_none",
6583        with = "ooxml_xml::ooxml_bool"
6584    )]
6585    pub st: Option<bool>,
6586    #[serde(rename = "@b")]
6587    #[serde(
6588        default,
6589        skip_serializing_if = "Option::is_none",
6590        with = "ooxml_xml::ooxml_bool"
6591    )]
6592    pub b: Option<bool>,
6593    #[serde(rename = "tpls")]
6594    #[serde(default, skip_serializing_if = "Option::is_none")]
6595    pub tpls: Option<Box<CTTuples>>,
6596    #[serde(rename = "x")]
6597    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6598    pub x: Vec<CTX>,
6599    /// Unknown attributes captured for roundtrip fidelity.
6600    #[cfg(feature = "extra-attrs")]
6601    #[serde(skip)]
6602    #[cfg(feature = "extra-attrs")]
6603    #[serde(default)]
6604    #[cfg(feature = "extra-attrs")]
6605    pub extra_attrs: std::collections::HashMap<String, String>,
6606    /// Unknown child elements captured for roundtrip fidelity.
6607    #[cfg(feature = "extra-children")]
6608    #[serde(skip)]
6609    #[cfg(feature = "extra-children")]
6610    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6611}
6612
6613#[derive(Debug, Clone, Serialize, Deserialize)]
6614pub struct CTString {
6615    #[serde(rename = "@v")]
6616    pub value: XmlString,
6617    #[serde(rename = "@u")]
6618    #[serde(
6619        default,
6620        skip_serializing_if = "Option::is_none",
6621        with = "ooxml_xml::ooxml_bool"
6622    )]
6623    pub u: Option<bool>,
6624    #[serde(rename = "@f")]
6625    #[serde(
6626        default,
6627        skip_serializing_if = "Option::is_none",
6628        with = "ooxml_xml::ooxml_bool"
6629    )]
6630    pub formula: Option<bool>,
6631    #[serde(rename = "@c")]
6632    #[serde(default, skip_serializing_if = "Option::is_none")]
6633    pub cells: Option<XmlString>,
6634    #[serde(rename = "@cp")]
6635    #[serde(default, skip_serializing_if = "Option::is_none")]
6636    pub cp: Option<u32>,
6637    #[serde(rename = "@in")]
6638    #[serde(default, skip_serializing_if = "Option::is_none")]
6639    pub r#in: Option<u32>,
6640    #[serde(rename = "@bc")]
6641    #[serde(default, skip_serializing_if = "Option::is_none")]
6642    pub bc: Option<STUnsignedIntHex>,
6643    #[serde(rename = "@fc")]
6644    #[serde(default, skip_serializing_if = "Option::is_none")]
6645    pub fc: Option<STUnsignedIntHex>,
6646    #[serde(rename = "@i")]
6647    #[serde(
6648        default,
6649        skip_serializing_if = "Option::is_none",
6650        with = "ooxml_xml::ooxml_bool"
6651    )]
6652    pub i: Option<bool>,
6653    #[serde(rename = "@un")]
6654    #[serde(
6655        default,
6656        skip_serializing_if = "Option::is_none",
6657        with = "ooxml_xml::ooxml_bool"
6658    )]
6659    pub un: Option<bool>,
6660    #[serde(rename = "@st")]
6661    #[serde(
6662        default,
6663        skip_serializing_if = "Option::is_none",
6664        with = "ooxml_xml::ooxml_bool"
6665    )]
6666    pub st: Option<bool>,
6667    #[serde(rename = "@b")]
6668    #[serde(
6669        default,
6670        skip_serializing_if = "Option::is_none",
6671        with = "ooxml_xml::ooxml_bool"
6672    )]
6673    pub b: Option<bool>,
6674    #[serde(rename = "tpls")]
6675    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6676    pub tpls: Vec<CTTuples>,
6677    #[serde(rename = "x")]
6678    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6679    pub x: Vec<CTX>,
6680    /// Unknown attributes captured for roundtrip fidelity.
6681    #[cfg(feature = "extra-attrs")]
6682    #[serde(skip)]
6683    #[cfg(feature = "extra-attrs")]
6684    #[serde(default)]
6685    #[cfg(feature = "extra-attrs")]
6686    pub extra_attrs: std::collections::HashMap<String, String>,
6687    /// Unknown child elements captured for roundtrip fidelity.
6688    #[cfg(feature = "extra-children")]
6689    #[serde(skip)]
6690    #[cfg(feature = "extra-children")]
6691    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6692}
6693
6694#[derive(Debug, Clone, Serialize, Deserialize)]
6695pub struct CTDateTime {
6696    #[serde(rename = "@v")]
6697    pub value: String,
6698    #[serde(rename = "@u")]
6699    #[serde(
6700        default,
6701        skip_serializing_if = "Option::is_none",
6702        with = "ooxml_xml::ooxml_bool"
6703    )]
6704    pub u: Option<bool>,
6705    #[serde(rename = "@f")]
6706    #[serde(
6707        default,
6708        skip_serializing_if = "Option::is_none",
6709        with = "ooxml_xml::ooxml_bool"
6710    )]
6711    pub formula: Option<bool>,
6712    #[serde(rename = "@c")]
6713    #[serde(default, skip_serializing_if = "Option::is_none")]
6714    pub cells: Option<XmlString>,
6715    #[serde(rename = "@cp")]
6716    #[serde(default, skip_serializing_if = "Option::is_none")]
6717    pub cp: Option<u32>,
6718    #[serde(rename = "x")]
6719    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6720    pub x: Vec<CTX>,
6721    /// Unknown attributes captured for roundtrip fidelity.
6722    #[cfg(feature = "extra-attrs")]
6723    #[serde(skip)]
6724    #[cfg(feature = "extra-attrs")]
6725    #[serde(default)]
6726    #[cfg(feature = "extra-attrs")]
6727    pub extra_attrs: std::collections::HashMap<String, String>,
6728    /// Unknown child elements captured for roundtrip fidelity.
6729    #[cfg(feature = "extra-children")]
6730    #[serde(skip)]
6731    #[cfg(feature = "extra-children")]
6732    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6733}
6734
6735#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6736pub struct FieldGroup {
6737    #[serde(rename = "@par")]
6738    #[serde(default, skip_serializing_if = "Option::is_none")]
6739    pub par: Option<u32>,
6740    #[serde(rename = "@base")]
6741    #[serde(default, skip_serializing_if = "Option::is_none")]
6742    pub base: Option<u32>,
6743    #[serde(rename = "rangePr")]
6744    #[serde(default, skip_serializing_if = "Option::is_none")]
6745    pub range_pr: Option<Box<CTRangePr>>,
6746    #[serde(rename = "discretePr")]
6747    #[serde(default, skip_serializing_if = "Option::is_none")]
6748    pub discrete_pr: Option<Box<CTDiscretePr>>,
6749    #[serde(rename = "groupItems")]
6750    #[serde(default, skip_serializing_if = "Option::is_none")]
6751    pub group_items: Option<Box<GroupItems>>,
6752    /// Unknown attributes captured for roundtrip fidelity.
6753    #[cfg(feature = "extra-attrs")]
6754    #[serde(skip)]
6755    #[cfg(feature = "extra-attrs")]
6756    #[serde(default)]
6757    #[cfg(feature = "extra-attrs")]
6758    pub extra_attrs: std::collections::HashMap<String, String>,
6759    /// Unknown child elements captured for roundtrip fidelity.
6760    #[cfg(feature = "extra-children")]
6761    #[serde(skip)]
6762    #[cfg(feature = "extra-children")]
6763    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6764}
6765
6766#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6767pub struct CTRangePr {
6768    #[serde(rename = "@autoStart")]
6769    #[serde(
6770        default,
6771        skip_serializing_if = "Option::is_none",
6772        with = "ooxml_xml::ooxml_bool"
6773    )]
6774    pub auto_start: Option<bool>,
6775    #[serde(rename = "@autoEnd")]
6776    #[serde(
6777        default,
6778        skip_serializing_if = "Option::is_none",
6779        with = "ooxml_xml::ooxml_bool"
6780    )]
6781    pub auto_end: Option<bool>,
6782    #[serde(rename = "@groupBy")]
6783    #[serde(default, skip_serializing_if = "Option::is_none")]
6784    pub group_by: Option<STGroupBy>,
6785    #[serde(rename = "@startNum")]
6786    #[serde(default, skip_serializing_if = "Option::is_none")]
6787    pub start_num: Option<f64>,
6788    #[serde(rename = "@endNum")]
6789    #[serde(default, skip_serializing_if = "Option::is_none")]
6790    pub end_num: Option<f64>,
6791    #[serde(rename = "@startDate")]
6792    #[serde(default, skip_serializing_if = "Option::is_none")]
6793    pub start_date: Option<String>,
6794    #[serde(rename = "@endDate")]
6795    #[serde(default, skip_serializing_if = "Option::is_none")]
6796    pub end_date: Option<String>,
6797    #[serde(rename = "@groupInterval")]
6798    #[serde(default, skip_serializing_if = "Option::is_none")]
6799    pub group_interval: Option<f64>,
6800    /// Unknown attributes captured for roundtrip fidelity.
6801    #[cfg(feature = "extra-attrs")]
6802    #[serde(skip)]
6803    #[cfg(feature = "extra-attrs")]
6804    #[serde(default)]
6805    #[cfg(feature = "extra-attrs")]
6806    pub extra_attrs: std::collections::HashMap<String, String>,
6807}
6808
6809#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6810pub struct CTDiscretePr {
6811    #[serde(rename = "@count")]
6812    #[serde(default, skip_serializing_if = "Option::is_none")]
6813    pub count: Option<u32>,
6814    #[serde(rename = "x")]
6815    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6816    pub x: Vec<CTIndex>,
6817    /// Unknown attributes captured for roundtrip fidelity.
6818    #[cfg(feature = "extra-attrs")]
6819    #[serde(skip)]
6820    #[cfg(feature = "extra-attrs")]
6821    #[serde(default)]
6822    #[cfg(feature = "extra-attrs")]
6823    pub extra_attrs: std::collections::HashMap<String, String>,
6824    /// Unknown child elements captured for roundtrip fidelity.
6825    #[cfg(feature = "extra-children")]
6826    #[serde(skip)]
6827    #[cfg(feature = "extra-children")]
6828    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6829}
6830
6831#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6832pub struct GroupItems {
6833    #[serde(rename = "@count")]
6834    #[serde(default, skip_serializing_if = "Option::is_none")]
6835    pub count: Option<u32>,
6836    #[serde(rename = "m")]
6837    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6838    pub m: Vec<CTMissing>,
6839    #[serde(rename = "n")]
6840    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6841    pub n: Vec<CTNumber>,
6842    #[serde(rename = "b")]
6843    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6844    pub b: Vec<CTBoolean>,
6845    #[serde(rename = "e")]
6846    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6847    pub e: Vec<CTError>,
6848    #[serde(rename = "s")]
6849    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6850    pub style_index: Vec<CTString>,
6851    #[serde(rename = "d")]
6852    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6853    pub d: Vec<CTDateTime>,
6854    /// Unknown attributes captured for roundtrip fidelity.
6855    #[cfg(feature = "extra-attrs")]
6856    #[serde(skip)]
6857    #[cfg(feature = "extra-attrs")]
6858    #[serde(default)]
6859    #[cfg(feature = "extra-attrs")]
6860    pub extra_attrs: std::collections::HashMap<String, String>,
6861    /// Unknown child elements captured for roundtrip fidelity.
6862    #[cfg(feature = "extra-children")]
6863    #[serde(skip)]
6864    #[cfg(feature = "extra-children")]
6865    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6866}
6867
6868#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6869pub struct PivotCacheRecords {
6870    #[serde(rename = "@count")]
6871    #[serde(default, skip_serializing_if = "Option::is_none")]
6872    pub count: Option<u32>,
6873    #[serde(rename = "r")]
6874    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6875    pub reference: Vec<CTRecord>,
6876    #[serde(rename = "extLst")]
6877    #[serde(default, skip_serializing_if = "Option::is_none")]
6878    pub extension_list: Option<Box<ExtensionList>>,
6879    /// Unknown attributes captured for roundtrip fidelity.
6880    #[cfg(feature = "extra-attrs")]
6881    #[serde(skip)]
6882    #[cfg(feature = "extra-attrs")]
6883    #[serde(default)]
6884    #[cfg(feature = "extra-attrs")]
6885    pub extra_attrs: std::collections::HashMap<String, String>,
6886    /// Unknown child elements captured for roundtrip fidelity.
6887    #[cfg(feature = "extra-children")]
6888    #[serde(skip)]
6889    #[cfg(feature = "extra-children")]
6890    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6891}
6892
6893#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6894pub struct CTRecord {
6895    #[serde(rename = "m")]
6896    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6897    pub m: Vec<CTMissing>,
6898    #[serde(rename = "n")]
6899    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6900    pub n: Vec<CTNumber>,
6901    #[serde(rename = "b")]
6902    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6903    pub b: Vec<CTBoolean>,
6904    #[serde(rename = "e")]
6905    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6906    pub e: Vec<CTError>,
6907    #[serde(rename = "s")]
6908    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6909    pub style_index: Vec<CTString>,
6910    #[serde(rename = "d")]
6911    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6912    pub d: Vec<CTDateTime>,
6913    #[serde(rename = "x")]
6914    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6915    pub x: Vec<CTIndex>,
6916    /// Unknown child elements captured for roundtrip fidelity.
6917    #[cfg(feature = "extra-children")]
6918    #[serde(skip)]
6919    #[cfg(feature = "extra-children")]
6920    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6921}
6922
6923#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6924pub struct CTPCDKPIs {
6925    #[serde(rename = "@count")]
6926    #[serde(default, skip_serializing_if = "Option::is_none")]
6927    pub count: Option<u32>,
6928    #[serde(rename = "kpi")]
6929    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6930    pub kpi: Vec<CTPCDKPI>,
6931    /// Unknown attributes captured for roundtrip fidelity.
6932    #[cfg(feature = "extra-attrs")]
6933    #[serde(skip)]
6934    #[cfg(feature = "extra-attrs")]
6935    #[serde(default)]
6936    #[cfg(feature = "extra-attrs")]
6937    pub extra_attrs: std::collections::HashMap<String, String>,
6938    /// Unknown child elements captured for roundtrip fidelity.
6939    #[cfg(feature = "extra-children")]
6940    #[serde(skip)]
6941    #[cfg(feature = "extra-children")]
6942    pub extra_children: Vec<ooxml_xml::PositionedNode>,
6943}
6944
6945#[derive(Debug, Clone, Serialize, Deserialize)]
6946pub struct CTPCDKPI {
6947    #[serde(rename = "@uniqueName")]
6948    pub unique_name: XmlString,
6949    #[serde(rename = "@caption")]
6950    #[serde(default, skip_serializing_if = "Option::is_none")]
6951    pub caption: Option<XmlString>,
6952    #[serde(rename = "@displayFolder")]
6953    #[serde(default, skip_serializing_if = "Option::is_none")]
6954    pub display_folder: Option<XmlString>,
6955    #[serde(rename = "@measureGroup")]
6956    #[serde(default, skip_serializing_if = "Option::is_none")]
6957    pub measure_group: Option<XmlString>,
6958    #[serde(rename = "@parent")]
6959    #[serde(default, skip_serializing_if = "Option::is_none")]
6960    pub parent: Option<XmlString>,
6961    #[serde(rename = "@value")]
6962    pub value: XmlString,
6963    #[serde(rename = "@goal")]
6964    #[serde(default, skip_serializing_if = "Option::is_none")]
6965    pub goal: Option<XmlString>,
6966    #[serde(rename = "@status")]
6967    #[serde(default, skip_serializing_if = "Option::is_none")]
6968    pub status: Option<XmlString>,
6969    #[serde(rename = "@trend")]
6970    #[serde(default, skip_serializing_if = "Option::is_none")]
6971    pub trend: Option<XmlString>,
6972    #[serde(rename = "@weight")]
6973    #[serde(default, skip_serializing_if = "Option::is_none")]
6974    pub weight: Option<XmlString>,
6975    #[serde(rename = "@time")]
6976    #[serde(default, skip_serializing_if = "Option::is_none")]
6977    pub time: Option<XmlString>,
6978    /// Unknown attributes captured for roundtrip fidelity.
6979    #[cfg(feature = "extra-attrs")]
6980    #[serde(skip)]
6981    #[cfg(feature = "extra-attrs")]
6982    #[serde(default)]
6983    #[cfg(feature = "extra-attrs")]
6984    pub extra_attrs: std::collections::HashMap<String, String>,
6985}
6986
6987#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6988pub struct CTCacheHierarchies {
6989    #[serde(rename = "@count")]
6990    #[serde(default, skip_serializing_if = "Option::is_none")]
6991    pub count: Option<u32>,
6992    #[serde(rename = "cacheHierarchy")]
6993    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6994    pub cache_hierarchy: Vec<CTCacheHierarchy>,
6995    /// Unknown attributes captured for roundtrip fidelity.
6996    #[cfg(feature = "extra-attrs")]
6997    #[serde(skip)]
6998    #[cfg(feature = "extra-attrs")]
6999    #[serde(default)]
7000    #[cfg(feature = "extra-attrs")]
7001    pub extra_attrs: std::collections::HashMap<String, String>,
7002    /// Unknown child elements captured for roundtrip fidelity.
7003    #[cfg(feature = "extra-children")]
7004    #[serde(skip)]
7005    #[cfg(feature = "extra-children")]
7006    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7007}
7008
7009#[derive(Debug, Clone, Serialize, Deserialize)]
7010pub struct CTCacheHierarchy {
7011    #[serde(rename = "@uniqueName")]
7012    pub unique_name: XmlString,
7013    #[serde(rename = "@caption")]
7014    #[serde(default, skip_serializing_if = "Option::is_none")]
7015    pub caption: Option<XmlString>,
7016    #[serde(rename = "@measure")]
7017    #[serde(
7018        default,
7019        skip_serializing_if = "Option::is_none",
7020        with = "ooxml_xml::ooxml_bool"
7021    )]
7022    pub measure: Option<bool>,
7023    #[serde(rename = "@set")]
7024    #[serde(
7025        default,
7026        skip_serializing_if = "Option::is_none",
7027        with = "ooxml_xml::ooxml_bool"
7028    )]
7029    pub set: Option<bool>,
7030    #[serde(rename = "@parentSet")]
7031    #[serde(default, skip_serializing_if = "Option::is_none")]
7032    pub parent_set: Option<u32>,
7033    #[serde(rename = "@iconSet")]
7034    #[serde(default, skip_serializing_if = "Option::is_none")]
7035    pub icon_set: Option<i32>,
7036    #[serde(rename = "@attribute")]
7037    #[serde(
7038        default,
7039        skip_serializing_if = "Option::is_none",
7040        with = "ooxml_xml::ooxml_bool"
7041    )]
7042    pub attribute: Option<bool>,
7043    #[serde(rename = "@time")]
7044    #[serde(
7045        default,
7046        skip_serializing_if = "Option::is_none",
7047        with = "ooxml_xml::ooxml_bool"
7048    )]
7049    pub time: Option<bool>,
7050    #[serde(rename = "@keyAttribute")]
7051    #[serde(
7052        default,
7053        skip_serializing_if = "Option::is_none",
7054        with = "ooxml_xml::ooxml_bool"
7055    )]
7056    pub key_attribute: Option<bool>,
7057    #[serde(rename = "@defaultMemberUniqueName")]
7058    #[serde(default, skip_serializing_if = "Option::is_none")]
7059    pub default_member_unique_name: Option<XmlString>,
7060    #[serde(rename = "@allUniqueName")]
7061    #[serde(default, skip_serializing_if = "Option::is_none")]
7062    pub all_unique_name: Option<XmlString>,
7063    #[serde(rename = "@allCaption")]
7064    #[serde(default, skip_serializing_if = "Option::is_none")]
7065    pub all_caption: Option<XmlString>,
7066    #[serde(rename = "@dimensionUniqueName")]
7067    #[serde(default, skip_serializing_if = "Option::is_none")]
7068    pub dimension_unique_name: Option<XmlString>,
7069    #[serde(rename = "@displayFolder")]
7070    #[serde(default, skip_serializing_if = "Option::is_none")]
7071    pub display_folder: Option<XmlString>,
7072    #[serde(rename = "@measureGroup")]
7073    #[serde(default, skip_serializing_if = "Option::is_none")]
7074    pub measure_group: Option<XmlString>,
7075    #[serde(rename = "@measures")]
7076    #[serde(
7077        default,
7078        skip_serializing_if = "Option::is_none",
7079        with = "ooxml_xml::ooxml_bool"
7080    )]
7081    pub measures: Option<bool>,
7082    #[serde(rename = "@count")]
7083    pub count: u32,
7084    #[serde(rename = "@oneField")]
7085    #[serde(
7086        default,
7087        skip_serializing_if = "Option::is_none",
7088        with = "ooxml_xml::ooxml_bool"
7089    )]
7090    pub one_field: Option<bool>,
7091    #[serde(rename = "@memberValueDatatype")]
7092    #[serde(default, skip_serializing_if = "Option::is_none")]
7093    pub member_value_datatype: Option<u16>,
7094    #[serde(rename = "@unbalanced")]
7095    #[serde(
7096        default,
7097        skip_serializing_if = "Option::is_none",
7098        with = "ooxml_xml::ooxml_bool"
7099    )]
7100    pub unbalanced: Option<bool>,
7101    #[serde(rename = "@unbalancedGroup")]
7102    #[serde(
7103        default,
7104        skip_serializing_if = "Option::is_none",
7105        with = "ooxml_xml::ooxml_bool"
7106    )]
7107    pub unbalanced_group: Option<bool>,
7108    #[serde(rename = "@hidden")]
7109    #[serde(
7110        default,
7111        skip_serializing_if = "Option::is_none",
7112        with = "ooxml_xml::ooxml_bool"
7113    )]
7114    pub hidden: Option<bool>,
7115    #[serde(rename = "fieldsUsage")]
7116    #[serde(default, skip_serializing_if = "Option::is_none")]
7117    pub fields_usage: Option<Box<CTFieldsUsage>>,
7118    #[serde(rename = "groupLevels")]
7119    #[serde(default, skip_serializing_if = "Option::is_none")]
7120    pub group_levels: Option<Box<CTGroupLevels>>,
7121    #[serde(rename = "extLst")]
7122    #[serde(default, skip_serializing_if = "Option::is_none")]
7123    pub extension_list: Option<Box<ExtensionList>>,
7124    /// Unknown attributes captured for roundtrip fidelity.
7125    #[cfg(feature = "extra-attrs")]
7126    #[serde(skip)]
7127    #[cfg(feature = "extra-attrs")]
7128    #[serde(default)]
7129    #[cfg(feature = "extra-attrs")]
7130    pub extra_attrs: std::collections::HashMap<String, String>,
7131    /// Unknown child elements captured for roundtrip fidelity.
7132    #[cfg(feature = "extra-children")]
7133    #[serde(skip)]
7134    #[cfg(feature = "extra-children")]
7135    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7136}
7137
7138#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7139pub struct CTFieldsUsage {
7140    #[serde(rename = "@count")]
7141    #[serde(default, skip_serializing_if = "Option::is_none")]
7142    pub count: Option<u32>,
7143    #[serde(rename = "fieldUsage")]
7144    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7145    pub field_usage: Vec<CTFieldUsage>,
7146    /// Unknown attributes captured for roundtrip fidelity.
7147    #[cfg(feature = "extra-attrs")]
7148    #[serde(skip)]
7149    #[cfg(feature = "extra-attrs")]
7150    #[serde(default)]
7151    #[cfg(feature = "extra-attrs")]
7152    pub extra_attrs: std::collections::HashMap<String, String>,
7153    /// Unknown child elements captured for roundtrip fidelity.
7154    #[cfg(feature = "extra-children")]
7155    #[serde(skip)]
7156    #[cfg(feature = "extra-children")]
7157    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7158}
7159
7160#[derive(Debug, Clone, Serialize, Deserialize)]
7161pub struct CTFieldUsage {
7162    #[serde(rename = "@x")]
7163    pub x: i32,
7164    /// Unknown attributes captured for roundtrip fidelity.
7165    #[cfg(feature = "extra-attrs")]
7166    #[serde(skip)]
7167    #[cfg(feature = "extra-attrs")]
7168    #[serde(default)]
7169    #[cfg(feature = "extra-attrs")]
7170    pub extra_attrs: std::collections::HashMap<String, String>,
7171}
7172
7173#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7174pub struct CTGroupLevels {
7175    #[serde(rename = "@count")]
7176    #[serde(default, skip_serializing_if = "Option::is_none")]
7177    pub count: Option<u32>,
7178    #[serde(rename = "groupLevel")]
7179    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7180    pub group_level: Vec<CTGroupLevel>,
7181    /// Unknown attributes captured for roundtrip fidelity.
7182    #[cfg(feature = "extra-attrs")]
7183    #[serde(skip)]
7184    #[cfg(feature = "extra-attrs")]
7185    #[serde(default)]
7186    #[cfg(feature = "extra-attrs")]
7187    pub extra_attrs: std::collections::HashMap<String, String>,
7188    /// Unknown child elements captured for roundtrip fidelity.
7189    #[cfg(feature = "extra-children")]
7190    #[serde(skip)]
7191    #[cfg(feature = "extra-children")]
7192    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7193}
7194
7195#[derive(Debug, Clone, Serialize, Deserialize)]
7196pub struct CTGroupLevel {
7197    #[serde(rename = "@uniqueName")]
7198    pub unique_name: XmlString,
7199    #[serde(rename = "@caption")]
7200    pub caption: XmlString,
7201    #[serde(rename = "@user")]
7202    #[serde(
7203        default,
7204        skip_serializing_if = "Option::is_none",
7205        with = "ooxml_xml::ooxml_bool"
7206    )]
7207    pub user: Option<bool>,
7208    #[serde(rename = "@customRollUp")]
7209    #[serde(
7210        default,
7211        skip_serializing_if = "Option::is_none",
7212        with = "ooxml_xml::ooxml_bool"
7213    )]
7214    pub custom_roll_up: Option<bool>,
7215    #[serde(rename = "groups")]
7216    #[serde(default, skip_serializing_if = "Option::is_none")]
7217    pub groups: Option<Box<CTGroups>>,
7218    #[serde(rename = "extLst")]
7219    #[serde(default, skip_serializing_if = "Option::is_none")]
7220    pub extension_list: Option<Box<ExtensionList>>,
7221    /// Unknown attributes captured for roundtrip fidelity.
7222    #[cfg(feature = "extra-attrs")]
7223    #[serde(skip)]
7224    #[cfg(feature = "extra-attrs")]
7225    #[serde(default)]
7226    #[cfg(feature = "extra-attrs")]
7227    pub extra_attrs: std::collections::HashMap<String, String>,
7228    /// Unknown child elements captured for roundtrip fidelity.
7229    #[cfg(feature = "extra-children")]
7230    #[serde(skip)]
7231    #[cfg(feature = "extra-children")]
7232    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7233}
7234
7235#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7236pub struct CTGroups {
7237    #[serde(rename = "@count")]
7238    #[serde(default, skip_serializing_if = "Option::is_none")]
7239    pub count: Option<u32>,
7240    #[serde(rename = "group")]
7241    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7242    pub group: Vec<CTLevelGroup>,
7243    /// Unknown attributes captured for roundtrip fidelity.
7244    #[cfg(feature = "extra-attrs")]
7245    #[serde(skip)]
7246    #[cfg(feature = "extra-attrs")]
7247    #[serde(default)]
7248    #[cfg(feature = "extra-attrs")]
7249    pub extra_attrs: std::collections::HashMap<String, String>,
7250    /// Unknown child elements captured for roundtrip fidelity.
7251    #[cfg(feature = "extra-children")]
7252    #[serde(skip)]
7253    #[cfg(feature = "extra-children")]
7254    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7255}
7256
7257#[derive(Debug, Clone, Serialize, Deserialize)]
7258pub struct CTLevelGroup {
7259    #[serde(rename = "@name")]
7260    pub name: XmlString,
7261    #[serde(rename = "@uniqueName")]
7262    pub unique_name: XmlString,
7263    #[serde(rename = "@caption")]
7264    pub caption: XmlString,
7265    #[serde(rename = "@uniqueParent")]
7266    #[serde(default, skip_serializing_if = "Option::is_none")]
7267    pub unique_parent: Option<XmlString>,
7268    #[serde(rename = "@id")]
7269    #[serde(default, skip_serializing_if = "Option::is_none")]
7270    pub id: Option<i32>,
7271    #[serde(rename = "groupMembers")]
7272    pub group_members: Box<CTGroupMembers>,
7273    /// Unknown attributes captured for roundtrip fidelity.
7274    #[cfg(feature = "extra-attrs")]
7275    #[serde(skip)]
7276    #[cfg(feature = "extra-attrs")]
7277    #[serde(default)]
7278    #[cfg(feature = "extra-attrs")]
7279    pub extra_attrs: std::collections::HashMap<String, String>,
7280    /// Unknown child elements captured for roundtrip fidelity.
7281    #[cfg(feature = "extra-children")]
7282    #[serde(skip)]
7283    #[cfg(feature = "extra-children")]
7284    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7285}
7286
7287#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7288pub struct CTGroupMembers {
7289    #[serde(rename = "@count")]
7290    #[serde(default, skip_serializing_if = "Option::is_none")]
7291    pub count: Option<u32>,
7292    #[serde(rename = "groupMember")]
7293    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7294    pub group_member: Vec<CTGroupMember>,
7295    /// Unknown attributes captured for roundtrip fidelity.
7296    #[cfg(feature = "extra-attrs")]
7297    #[serde(skip)]
7298    #[cfg(feature = "extra-attrs")]
7299    #[serde(default)]
7300    #[cfg(feature = "extra-attrs")]
7301    pub extra_attrs: std::collections::HashMap<String, String>,
7302    /// Unknown child elements captured for roundtrip fidelity.
7303    #[cfg(feature = "extra-children")]
7304    #[serde(skip)]
7305    #[cfg(feature = "extra-children")]
7306    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7307}
7308
7309#[derive(Debug, Clone, Serialize, Deserialize)]
7310pub struct CTGroupMember {
7311    #[serde(rename = "@uniqueName")]
7312    pub unique_name: XmlString,
7313    #[serde(rename = "@group")]
7314    #[serde(
7315        default,
7316        skip_serializing_if = "Option::is_none",
7317        with = "ooxml_xml::ooxml_bool"
7318    )]
7319    pub group: Option<bool>,
7320    /// Unknown attributes captured for roundtrip fidelity.
7321    #[cfg(feature = "extra-attrs")]
7322    #[serde(skip)]
7323    #[cfg(feature = "extra-attrs")]
7324    #[serde(default)]
7325    #[cfg(feature = "extra-attrs")]
7326    pub extra_attrs: std::collections::HashMap<String, String>,
7327}
7328
7329#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7330pub struct CTTupleCache {
7331    #[serde(rename = "entries")]
7332    #[serde(default, skip_serializing_if = "Option::is_none")]
7333    pub entries: Option<Box<CTPCDSDTCEntries>>,
7334    #[serde(rename = "sets")]
7335    #[serde(default, skip_serializing_if = "Option::is_none")]
7336    pub sets: Option<Box<CTSets>>,
7337    #[serde(rename = "queryCache")]
7338    #[serde(default, skip_serializing_if = "Option::is_none")]
7339    pub query_cache: Option<Box<CTQueryCache>>,
7340    #[serde(rename = "serverFormats")]
7341    #[serde(default, skip_serializing_if = "Option::is_none")]
7342    pub server_formats: Option<Box<CTServerFormats>>,
7343    #[serde(rename = "extLst")]
7344    #[serde(default, skip_serializing_if = "Option::is_none")]
7345    pub extension_list: Option<Box<ExtensionList>>,
7346    /// Unknown child elements captured for roundtrip fidelity.
7347    #[cfg(feature = "extra-children")]
7348    #[serde(skip)]
7349    #[cfg(feature = "extra-children")]
7350    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7351}
7352
7353#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7354pub struct CTServerFormat {
7355    #[serde(rename = "@culture")]
7356    #[serde(default, skip_serializing_if = "Option::is_none")]
7357    pub culture: Option<XmlString>,
7358    #[serde(rename = "@format")]
7359    #[serde(default, skip_serializing_if = "Option::is_none")]
7360    pub format: Option<XmlString>,
7361    /// Unknown attributes captured for roundtrip fidelity.
7362    #[cfg(feature = "extra-attrs")]
7363    #[serde(skip)]
7364    #[cfg(feature = "extra-attrs")]
7365    #[serde(default)]
7366    #[cfg(feature = "extra-attrs")]
7367    pub extra_attrs: std::collections::HashMap<String, String>,
7368}
7369
7370#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7371pub struct CTServerFormats {
7372    #[serde(rename = "@count")]
7373    #[serde(default, skip_serializing_if = "Option::is_none")]
7374    pub count: Option<u32>,
7375    #[serde(rename = "serverFormat")]
7376    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7377    pub server_format: Vec<CTServerFormat>,
7378    /// Unknown attributes captured for roundtrip fidelity.
7379    #[cfg(feature = "extra-attrs")]
7380    #[serde(skip)]
7381    #[cfg(feature = "extra-attrs")]
7382    #[serde(default)]
7383    #[cfg(feature = "extra-attrs")]
7384    pub extra_attrs: std::collections::HashMap<String, String>,
7385    /// Unknown child elements captured for roundtrip fidelity.
7386    #[cfg(feature = "extra-children")]
7387    #[serde(skip)]
7388    #[cfg(feature = "extra-children")]
7389    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7390}
7391
7392#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7393pub struct CTPCDSDTCEntries {
7394    #[serde(rename = "@count")]
7395    #[serde(default, skip_serializing_if = "Option::is_none")]
7396    pub count: Option<u32>,
7397    #[serde(rename = "m")]
7398    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7399    pub m: Vec<CTMissing>,
7400    #[serde(rename = "n")]
7401    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7402    pub n: Vec<CTNumber>,
7403    #[serde(rename = "e")]
7404    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7405    pub e: Vec<CTError>,
7406    #[serde(rename = "s")]
7407    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7408    pub style_index: Vec<CTString>,
7409    /// Unknown attributes captured for roundtrip fidelity.
7410    #[cfg(feature = "extra-attrs")]
7411    #[serde(skip)]
7412    #[cfg(feature = "extra-attrs")]
7413    #[serde(default)]
7414    #[cfg(feature = "extra-attrs")]
7415    pub extra_attrs: std::collections::HashMap<String, String>,
7416    /// Unknown child elements captured for roundtrip fidelity.
7417    #[cfg(feature = "extra-children")]
7418    #[serde(skip)]
7419    #[cfg(feature = "extra-children")]
7420    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7421}
7422
7423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7424pub struct CTTuples {
7425    #[serde(rename = "@c")]
7426    #[serde(default, skip_serializing_if = "Option::is_none")]
7427    pub cells: Option<u32>,
7428    #[serde(rename = "tpl")]
7429    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7430    pub tpl: Vec<CTTuple>,
7431    /// Unknown attributes captured for roundtrip fidelity.
7432    #[cfg(feature = "extra-attrs")]
7433    #[serde(skip)]
7434    #[cfg(feature = "extra-attrs")]
7435    #[serde(default)]
7436    #[cfg(feature = "extra-attrs")]
7437    pub extra_attrs: std::collections::HashMap<String, String>,
7438    /// Unknown child elements captured for roundtrip fidelity.
7439    #[cfg(feature = "extra-children")]
7440    #[serde(skip)]
7441    #[cfg(feature = "extra-children")]
7442    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7443}
7444
7445#[derive(Debug, Clone, Serialize, Deserialize)]
7446pub struct CTTuple {
7447    #[serde(rename = "@fld")]
7448    #[serde(default, skip_serializing_if = "Option::is_none")]
7449    pub fld: Option<u32>,
7450    #[serde(rename = "@hier")]
7451    #[serde(default, skip_serializing_if = "Option::is_none")]
7452    pub hier: Option<u32>,
7453    #[serde(rename = "@item")]
7454    pub item: u32,
7455    /// Unknown attributes captured for roundtrip fidelity.
7456    #[cfg(feature = "extra-attrs")]
7457    #[serde(skip)]
7458    #[cfg(feature = "extra-attrs")]
7459    #[serde(default)]
7460    #[cfg(feature = "extra-attrs")]
7461    pub extra_attrs: std::collections::HashMap<String, String>,
7462}
7463
7464#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7465pub struct CTSets {
7466    #[serde(rename = "@count")]
7467    #[serde(default, skip_serializing_if = "Option::is_none")]
7468    pub count: Option<u32>,
7469    #[serde(rename = "set")]
7470    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7471    pub set: Vec<CTSet>,
7472    /// Unknown attributes captured for roundtrip fidelity.
7473    #[cfg(feature = "extra-attrs")]
7474    #[serde(skip)]
7475    #[cfg(feature = "extra-attrs")]
7476    #[serde(default)]
7477    #[cfg(feature = "extra-attrs")]
7478    pub extra_attrs: std::collections::HashMap<String, String>,
7479    /// Unknown child elements captured for roundtrip fidelity.
7480    #[cfg(feature = "extra-children")]
7481    #[serde(skip)]
7482    #[cfg(feature = "extra-children")]
7483    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7484}
7485
7486#[derive(Debug, Clone, Serialize, Deserialize)]
7487pub struct CTSet {
7488    #[serde(rename = "@count")]
7489    #[serde(default, skip_serializing_if = "Option::is_none")]
7490    pub count: Option<u32>,
7491    #[serde(rename = "@maxRank")]
7492    pub max_rank: i32,
7493    #[serde(rename = "@setDefinition")]
7494    pub set_definition: XmlString,
7495    #[serde(rename = "@sortType")]
7496    #[serde(default, skip_serializing_if = "Option::is_none")]
7497    pub sort_type: Option<STSortType>,
7498    #[serde(rename = "@queryFailed")]
7499    #[serde(
7500        default,
7501        skip_serializing_if = "Option::is_none",
7502        with = "ooxml_xml::ooxml_bool"
7503    )]
7504    pub query_failed: Option<bool>,
7505    #[serde(rename = "tpls")]
7506    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7507    pub tpls: Vec<CTTuples>,
7508    #[serde(rename = "sortByTuple")]
7509    #[serde(default, skip_serializing_if = "Option::is_none")]
7510    pub sort_by_tuple: Option<Box<CTTuples>>,
7511    /// Unknown attributes captured for roundtrip fidelity.
7512    #[cfg(feature = "extra-attrs")]
7513    #[serde(skip)]
7514    #[cfg(feature = "extra-attrs")]
7515    #[serde(default)]
7516    #[cfg(feature = "extra-attrs")]
7517    pub extra_attrs: std::collections::HashMap<String, String>,
7518    /// Unknown child elements captured for roundtrip fidelity.
7519    #[cfg(feature = "extra-children")]
7520    #[serde(skip)]
7521    #[cfg(feature = "extra-children")]
7522    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7523}
7524
7525#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7526pub struct CTQueryCache {
7527    #[serde(rename = "@count")]
7528    #[serde(default, skip_serializing_if = "Option::is_none")]
7529    pub count: Option<u32>,
7530    #[serde(rename = "query")]
7531    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7532    pub query: Vec<CTQuery>,
7533    /// Unknown attributes captured for roundtrip fidelity.
7534    #[cfg(feature = "extra-attrs")]
7535    #[serde(skip)]
7536    #[cfg(feature = "extra-attrs")]
7537    #[serde(default)]
7538    #[cfg(feature = "extra-attrs")]
7539    pub extra_attrs: std::collections::HashMap<String, String>,
7540    /// Unknown child elements captured for roundtrip fidelity.
7541    #[cfg(feature = "extra-children")]
7542    #[serde(skip)]
7543    #[cfg(feature = "extra-children")]
7544    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7545}
7546
7547#[derive(Debug, Clone, Serialize, Deserialize)]
7548pub struct CTQuery {
7549    #[serde(rename = "@mdx")]
7550    pub mdx: XmlString,
7551    #[serde(rename = "tpls")]
7552    #[serde(default, skip_serializing_if = "Option::is_none")]
7553    pub tpls: Option<Box<CTTuples>>,
7554    /// Unknown attributes captured for roundtrip fidelity.
7555    #[cfg(feature = "extra-attrs")]
7556    #[serde(skip)]
7557    #[cfg(feature = "extra-attrs")]
7558    #[serde(default)]
7559    #[cfg(feature = "extra-attrs")]
7560    pub extra_attrs: std::collections::HashMap<String, String>,
7561    /// Unknown child elements captured for roundtrip fidelity.
7562    #[cfg(feature = "extra-children")]
7563    #[serde(skip)]
7564    #[cfg(feature = "extra-children")]
7565    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7566}
7567
7568#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7569pub struct CTCalculatedItems {
7570    #[serde(rename = "@count")]
7571    #[serde(default, skip_serializing_if = "Option::is_none")]
7572    pub count: Option<u32>,
7573    #[serde(rename = "calculatedItem")]
7574    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7575    pub calculated_item: Vec<CTCalculatedItem>,
7576    /// Unknown attributes captured for roundtrip fidelity.
7577    #[cfg(feature = "extra-attrs")]
7578    #[serde(skip)]
7579    #[cfg(feature = "extra-attrs")]
7580    #[serde(default)]
7581    #[cfg(feature = "extra-attrs")]
7582    pub extra_attrs: std::collections::HashMap<String, String>,
7583    /// Unknown child elements captured for roundtrip fidelity.
7584    #[cfg(feature = "extra-children")]
7585    #[serde(skip)]
7586    #[cfg(feature = "extra-children")]
7587    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7588}
7589
7590#[derive(Debug, Clone, Serialize, Deserialize)]
7591pub struct CTCalculatedItem {
7592    #[serde(rename = "@field")]
7593    #[serde(default, skip_serializing_if = "Option::is_none")]
7594    pub field: Option<u32>,
7595    #[serde(rename = "@formula")]
7596    #[serde(default, skip_serializing_if = "Option::is_none")]
7597    pub formula: Option<XmlString>,
7598    #[serde(rename = "pivotArea")]
7599    pub pivot_area: Box<PivotArea>,
7600    #[serde(rename = "extLst")]
7601    #[serde(default, skip_serializing_if = "Option::is_none")]
7602    pub extension_list: Option<Box<ExtensionList>>,
7603    /// Unknown attributes captured for roundtrip fidelity.
7604    #[cfg(feature = "extra-attrs")]
7605    #[serde(skip)]
7606    #[cfg(feature = "extra-attrs")]
7607    #[serde(default)]
7608    #[cfg(feature = "extra-attrs")]
7609    pub extra_attrs: std::collections::HashMap<String, String>,
7610    /// Unknown child elements captured for roundtrip fidelity.
7611    #[cfg(feature = "extra-children")]
7612    #[serde(skip)]
7613    #[cfg(feature = "extra-children")]
7614    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7615}
7616
7617#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7618pub struct CTCalculatedMembers {
7619    #[serde(rename = "@count")]
7620    #[serde(default, skip_serializing_if = "Option::is_none")]
7621    pub count: Option<u32>,
7622    #[serde(rename = "calculatedMember")]
7623    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7624    pub calculated_member: Vec<CTCalculatedMember>,
7625    /// Unknown attributes captured for roundtrip fidelity.
7626    #[cfg(feature = "extra-attrs")]
7627    #[serde(skip)]
7628    #[cfg(feature = "extra-attrs")]
7629    #[serde(default)]
7630    #[cfg(feature = "extra-attrs")]
7631    pub extra_attrs: std::collections::HashMap<String, String>,
7632    /// Unknown child elements captured for roundtrip fidelity.
7633    #[cfg(feature = "extra-children")]
7634    #[serde(skip)]
7635    #[cfg(feature = "extra-children")]
7636    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7637}
7638
7639#[derive(Debug, Clone, Serialize, Deserialize)]
7640pub struct CTCalculatedMember {
7641    #[serde(rename = "@name")]
7642    pub name: XmlString,
7643    #[serde(rename = "@mdx")]
7644    pub mdx: XmlString,
7645    #[serde(rename = "@memberName")]
7646    #[serde(default, skip_serializing_if = "Option::is_none")]
7647    pub member_name: Option<XmlString>,
7648    #[serde(rename = "@hierarchy")]
7649    #[serde(default, skip_serializing_if = "Option::is_none")]
7650    pub hierarchy: Option<XmlString>,
7651    #[serde(rename = "@parent")]
7652    #[serde(default, skip_serializing_if = "Option::is_none")]
7653    pub parent: Option<XmlString>,
7654    #[serde(rename = "@solveOrder")]
7655    #[serde(default, skip_serializing_if = "Option::is_none")]
7656    pub solve_order: Option<i32>,
7657    #[serde(rename = "@set")]
7658    #[serde(
7659        default,
7660        skip_serializing_if = "Option::is_none",
7661        with = "ooxml_xml::ooxml_bool"
7662    )]
7663    pub set: Option<bool>,
7664    #[serde(rename = "extLst")]
7665    #[serde(default, skip_serializing_if = "Option::is_none")]
7666    pub extension_list: Option<Box<ExtensionList>>,
7667    /// Unknown attributes captured for roundtrip fidelity.
7668    #[cfg(feature = "extra-attrs")]
7669    #[serde(skip)]
7670    #[cfg(feature = "extra-attrs")]
7671    #[serde(default)]
7672    #[cfg(feature = "extra-attrs")]
7673    pub extra_attrs: std::collections::HashMap<String, String>,
7674    /// Unknown child elements captured for roundtrip fidelity.
7675    #[cfg(feature = "extra-children")]
7676    #[serde(skip)]
7677    #[cfg(feature = "extra-children")]
7678    pub extra_children: Vec<ooxml_xml::PositionedNode>,
7679}
7680
7681#[derive(Debug, Clone, Serialize, Deserialize)]
7682pub struct CTPivotTableDefinition {
7683    #[serde(rename = "@name")]
7684    pub name: XmlString,
7685    #[serde(rename = "@cacheId")]
7686    pub cache_id: u32,
7687    #[serde(rename = "@dataOnRows")]
7688    #[serde(
7689        default,
7690        skip_serializing_if = "Option::is_none",
7691        with = "ooxml_xml::ooxml_bool"
7692    )]
7693    pub data_on_rows: Option<bool>,
7694    #[serde(rename = "@dataPosition")]
7695    #[serde(default, skip_serializing_if = "Option::is_none")]
7696    pub data_position: Option<u32>,
7697    #[serde(rename = "@autoFormatId")]
7698    #[serde(default, skip_serializing_if = "Option::is_none")]
7699    pub auto_format_id: Option<u32>,
7700    #[serde(rename = "@applyNumberFormats")]
7701    #[serde(
7702        default,
7703        skip_serializing_if = "Option::is_none",
7704        with = "ooxml_xml::ooxml_bool"
7705    )]
7706    pub apply_number_formats: Option<bool>,
7707    #[serde(rename = "@applyBorderFormats")]
7708    #[serde(
7709        default,
7710        skip_serializing_if = "Option::is_none",
7711        with = "ooxml_xml::ooxml_bool"
7712    )]
7713    pub apply_border_formats: Option<bool>,
7714    #[serde(rename = "@applyFontFormats")]
7715    #[serde(
7716        default,
7717        skip_serializing_if = "Option::is_none",
7718        with = "ooxml_xml::ooxml_bool"
7719    )]
7720    pub apply_font_formats: Option<bool>,
7721    #[serde(rename = "@applyPatternFormats")]
7722    #[serde(
7723        default,
7724        skip_serializing_if = "Option::is_none",
7725        with = "ooxml_xml::ooxml_bool"
7726    )]
7727    pub apply_pattern_formats: Option<bool>,
7728    #[serde(rename = "@applyAlignmentFormats")]
7729    #[serde(
7730        default,
7731        skip_serializing_if = "Option::is_none",
7732        with = "ooxml_xml::ooxml_bool"
7733    )]
7734    pub apply_alignment_formats: Option<bool>,
7735    #[serde(rename = "@applyWidthHeightFormats")]
7736    #[serde(
7737        default,
7738        skip_serializing_if = "Option::is_none",
7739        with = "ooxml_xml::ooxml_bool"
7740    )]
7741    pub apply_width_height_formats: Option<bool>,
7742    #[serde(rename = "@dataCaption")]
7743    pub data_caption: XmlString,
7744    #[serde(rename = "@grandTotalCaption")]
7745    #[serde(default, skip_serializing_if = "Option::is_none")]
7746    pub grand_total_caption: Option<XmlString>,
7747    #[serde(rename = "@errorCaption")]
7748    #[serde(default, skip_serializing_if = "Option::is_none")]
7749    pub error_caption: Option<XmlString>,
7750    #[serde(rename = "@showError")]
7751    #[serde(
7752        default,
7753        skip_serializing_if = "Option::is_none",
7754        with = "ooxml_xml::ooxml_bool"
7755    )]
7756    pub show_error: Option<bool>,
7757    #[serde(rename = "@missingCaption")]
7758    #[serde(default, skip_serializing_if = "Option::is_none")]
7759    pub missing_caption: Option<XmlString>,
7760    #[serde(rename = "@showMissing")]
7761    #[serde(
7762        default,
7763        skip_serializing_if = "Option::is_none",
7764        with = "ooxml_xml::ooxml_bool"
7765    )]
7766    pub show_missing: Option<bool>,
7767    #[serde(rename = "@pageStyle")]
7768    #[serde(default, skip_serializing_if = "Option::is_none")]
7769    pub page_style: Option<XmlString>,
7770    #[serde(rename = "@pivotTableStyle")]
7771    #[serde(default, skip_serializing_if = "Option::is_none")]
7772    pub pivot_table_style: Option<XmlString>,
7773    #[serde(rename = "@vacatedStyle")]
7774    #[serde(default, skip_serializing_if = "Option::is_none")]
7775    pub vacated_style: Option<XmlString>,
7776    #[serde(rename = "@tag")]
7777    #[serde(default, skip_serializing_if = "Option::is_none")]
7778    pub tag: Option<XmlString>,
7779    #[serde(rename = "@updatedVersion")]
7780    #[serde(default, skip_serializing_if = "Option::is_none")]
7781    pub updated_version: Option<u8>,
7782    #[serde(rename = "@minRefreshableVersion")]
7783    #[serde(default, skip_serializing_if = "Option::is_none")]
7784    pub min_refreshable_version: Option<u8>,
7785    #[serde(rename = "@asteriskTotals")]
7786    #[serde(
7787        default,
7788        skip_serializing_if = "Option::is_none",
7789        with = "ooxml_xml::ooxml_bool"
7790    )]
7791    pub asterisk_totals: Option<bool>,
7792    #[serde(rename = "@showItems")]
7793    #[serde(
7794        default,
7795        skip_serializing_if = "Option::is_none",
7796        with = "ooxml_xml::ooxml_bool"
7797    )]
7798    pub show_items: Option<bool>,
7799    #[serde(rename = "@editData")]
7800    #[serde(
7801        default,
7802        skip_serializing_if = "Option::is_none",
7803        with = "ooxml_xml::ooxml_bool"
7804    )]
7805    pub edit_data: Option<bool>,
7806    #[serde(rename = "@disableFieldList")]
7807    #[serde(
7808        default,
7809        skip_serializing_if = "Option::is_none",
7810        with = "ooxml_xml::ooxml_bool"
7811    )]
7812    pub disable_field_list: Option<bool>,
7813    #[serde(rename = "@showCalcMbrs")]
7814    #[serde(
7815        default,
7816        skip_serializing_if = "Option::is_none",
7817        with = "ooxml_xml::ooxml_bool"
7818    )]
7819    pub show_calc_mbrs: Option<bool>,
7820    #[serde(rename = "@visualTotals")]
7821    #[serde(
7822        default,
7823        skip_serializing_if = "Option::is_none",
7824        with = "ooxml_xml::ooxml_bool"
7825    )]
7826    pub visual_totals: Option<bool>,
7827    #[serde(rename = "@showMultipleLabel")]
7828    #[serde(
7829        default,
7830        skip_serializing_if = "Option::is_none",
7831        with = "ooxml_xml::ooxml_bool"
7832    )]
7833    pub show_multiple_label: Option<bool>,
7834    #[serde(rename = "@showDataDropDown")]
7835    #[serde(
7836        default,
7837        skip_serializing_if = "Option::is_none",
7838        with = "ooxml_xml::ooxml_bool"
7839    )]
7840    pub show_data_drop_down: Option<bool>,
7841    #[serde(rename = "@showDrill")]
7842    #[serde(
7843        default,
7844        skip_serializing_if = "Option::is_none",
7845        with = "ooxml_xml::ooxml_bool"
7846    )]
7847    pub show_drill: Option<bool>,
7848    #[serde(rename = "@printDrill")]
7849    #[serde(
7850        default,
7851        skip_serializing_if = "Option::is_none",
7852        with = "ooxml_xml::ooxml_bool"
7853    )]
7854    pub print_drill: Option<bool>,
7855    #[serde(rename = "@showMemberPropertyTips")]
7856    #[serde(
7857        default,
7858        skip_serializing_if = "Option::is_none",
7859        with = "ooxml_xml::ooxml_bool"
7860    )]
7861    pub show_member_property_tips: Option<bool>,
7862    #[serde(rename = "@showDataTips")]
7863    #[serde(
7864        default,
7865        skip_serializing_if = "Option::is_none",
7866        with = "ooxml_xml::ooxml_bool"
7867    )]
7868    pub show_data_tips: Option<bool>,
7869    #[serde(rename = "@enableWizard")]
7870    #[serde(
7871        default,
7872        skip_serializing_if = "Option::is_none",
7873        with = "ooxml_xml::ooxml_bool"
7874    )]
7875    pub enable_wizard: Option<bool>,
7876    #[serde(rename = "@enableDrill")]
7877    #[serde(
7878        default,
7879        skip_serializing_if = "Option::is_none",
7880        with = "ooxml_xml::ooxml_bool"
7881    )]
7882    pub enable_drill: Option<bool>,
7883    #[serde(rename = "@enableFieldProperties")]
7884    #[serde(
7885        default,
7886        skip_serializing_if = "Option::is_none",
7887        with = "ooxml_xml::ooxml_bool"
7888    )]
7889    pub enable_field_properties: Option<bool>,
7890    #[serde(rename = "@preserveFormatting")]
7891    #[serde(
7892        default,
7893        skip_serializing_if = "Option::is_none",
7894        with = "ooxml_xml::ooxml_bool"
7895    )]
7896    pub preserve_formatting: Option<bool>,
7897    #[serde(rename = "@useAutoFormatting")]
7898    #[serde(
7899        default,
7900        skip_serializing_if = "Option::is_none",
7901        with = "ooxml_xml::ooxml_bool"
7902    )]
7903    pub use_auto_formatting: Option<bool>,
7904    #[serde(rename = "@pageWrap")]
7905    #[serde(default, skip_serializing_if = "Option::is_none")]
7906    pub page_wrap: Option<u32>,
7907    #[serde(rename = "@pageOverThenDown")]
7908    #[serde(
7909        default,
7910        skip_serializing_if = "Option::is_none",
7911        with = "ooxml_xml::ooxml_bool"
7912    )]
7913    pub page_over_then_down: Option<bool>,
7914    #[serde(rename = "@subtotalHiddenItems")]
7915    #[serde(
7916        default,
7917        skip_serializing_if = "Option::is_none",
7918        with = "ooxml_xml::ooxml_bool"
7919    )]
7920    pub subtotal_hidden_items: Option<bool>,
7921    #[serde(rename = "@rowGrandTotals")]
7922    #[serde(
7923        default,
7924        skip_serializing_if = "Option::is_none",
7925        with = "ooxml_xml::ooxml_bool"
7926    )]
7927    pub row_grand_totals: Option<bool>,
7928    #[serde(rename = "@colGrandTotals")]
7929    #[serde(
7930        default,
7931        skip_serializing_if = "Option::is_none",
7932        with = "ooxml_xml::ooxml_bool"
7933    )]
7934    pub col_grand_totals: Option<bool>,
7935    #[serde(rename = "@fieldPrintTitles")]
7936    #[serde(
7937        default,
7938        skip_serializing_if = "Option::is_none",
7939        with = "ooxml_xml::ooxml_bool"
7940    )]
7941    pub field_print_titles: Option<bool>,
7942    #[serde(rename = "@itemPrintTitles")]
7943    #[serde(
7944        default,
7945        skip_serializing_if = "Option::is_none",
7946        with = "ooxml_xml::ooxml_bool"
7947    )]
7948    pub item_print_titles: Option<bool>,
7949    #[serde(rename = "@mergeItem")]
7950    #[serde(
7951        default,
7952        skip_serializing_if = "Option::is_none",
7953        with = "ooxml_xml::ooxml_bool"
7954    )]
7955    pub merge_item: Option<bool>,
7956    #[serde(rename = "@showDropZones")]
7957    #[serde(
7958        default,
7959        skip_serializing_if = "Option::is_none",
7960        with = "ooxml_xml::ooxml_bool"
7961    )]
7962    pub show_drop_zones: Option<bool>,
7963    #[serde(rename = "@createdVersion")]
7964    #[serde(default, skip_serializing_if = "Option::is_none")]
7965    pub created_version: Option<u8>,
7966    #[serde(rename = "@indent")]
7967    #[serde(default, skip_serializing_if = "Option::is_none")]
7968    pub indent: Option<u32>,
7969    #[serde(rename = "@showEmptyRow")]
7970    #[serde(
7971        default,
7972        skip_serializing_if = "Option::is_none",
7973        with = "ooxml_xml::ooxml_bool"
7974    )]
7975    pub show_empty_row: Option<bool>,
7976    #[serde(rename = "@showEmptyCol")]
7977    #[serde(
7978        default,
7979        skip_serializing_if = "Option::is_none",
7980        with = "ooxml_xml::ooxml_bool"
7981    )]
7982    pub show_empty_col: Option<bool>,
7983    #[serde(rename = "@showHeaders")]
7984    #[serde(
7985        default,
7986        skip_serializing_if = "Option::is_none",
7987        with = "ooxml_xml::ooxml_bool"
7988    )]
7989    pub show_headers: Option<bool>,
7990    #[serde(rename = "@compact")]
7991    #[serde(
7992        default,
7993        skip_serializing_if = "Option::is_none",
7994        with = "ooxml_xml::ooxml_bool"
7995    )]
7996    pub compact: Option<bool>,
7997    #[serde(rename = "@outline")]
7998    #[serde(
7999        default,
8000        skip_serializing_if = "Option::is_none",
8001        with = "ooxml_xml::ooxml_bool"
8002    )]
8003    pub outline: Option<bool>,
8004    #[serde(rename = "@outlineData")]
8005    #[serde(
8006        default,
8007        skip_serializing_if = "Option::is_none",
8008        with = "ooxml_xml::ooxml_bool"
8009    )]
8010    pub outline_data: Option<bool>,
8011    #[serde(rename = "@compactData")]
8012    #[serde(
8013        default,
8014        skip_serializing_if = "Option::is_none",
8015        with = "ooxml_xml::ooxml_bool"
8016    )]
8017    pub compact_data: Option<bool>,
8018    #[serde(rename = "@published")]
8019    #[serde(
8020        default,
8021        skip_serializing_if = "Option::is_none",
8022        with = "ooxml_xml::ooxml_bool"
8023    )]
8024    pub published: Option<bool>,
8025    #[serde(rename = "@gridDropZones")]
8026    #[serde(
8027        default,
8028        skip_serializing_if = "Option::is_none",
8029        with = "ooxml_xml::ooxml_bool"
8030    )]
8031    pub grid_drop_zones: Option<bool>,
8032    #[serde(rename = "@immersive")]
8033    #[serde(
8034        default,
8035        skip_serializing_if = "Option::is_none",
8036        with = "ooxml_xml::ooxml_bool"
8037    )]
8038    pub immersive: Option<bool>,
8039    #[serde(rename = "@multipleFieldFilters")]
8040    #[serde(
8041        default,
8042        skip_serializing_if = "Option::is_none",
8043        with = "ooxml_xml::ooxml_bool"
8044    )]
8045    pub multiple_field_filters: Option<bool>,
8046    #[serde(rename = "@chartFormat")]
8047    #[serde(default, skip_serializing_if = "Option::is_none")]
8048    pub chart_format: Option<u32>,
8049    #[serde(rename = "@rowHeaderCaption")]
8050    #[serde(default, skip_serializing_if = "Option::is_none")]
8051    pub row_header_caption: Option<XmlString>,
8052    #[serde(rename = "@colHeaderCaption")]
8053    #[serde(default, skip_serializing_if = "Option::is_none")]
8054    pub col_header_caption: Option<XmlString>,
8055    #[serde(rename = "@fieldListSortAscending")]
8056    #[serde(
8057        default,
8058        skip_serializing_if = "Option::is_none",
8059        with = "ooxml_xml::ooxml_bool"
8060    )]
8061    pub field_list_sort_ascending: Option<bool>,
8062    #[serde(rename = "@mdxSubqueries")]
8063    #[serde(
8064        default,
8065        skip_serializing_if = "Option::is_none",
8066        with = "ooxml_xml::ooxml_bool"
8067    )]
8068    pub mdx_subqueries: Option<bool>,
8069    #[serde(rename = "@customListSort")]
8070    #[serde(
8071        default,
8072        skip_serializing_if = "Option::is_none",
8073        with = "ooxml_xml::ooxml_bool"
8074    )]
8075    pub custom_list_sort: Option<bool>,
8076    #[serde(rename = "location")]
8077    pub location: Box<PivotLocation>,
8078    #[serde(rename = "pivotFields")]
8079    #[serde(default, skip_serializing_if = "Option::is_none")]
8080    pub pivot_fields: Option<Box<PivotFields>>,
8081    #[serde(rename = "rowFields")]
8082    #[serde(default, skip_serializing_if = "Option::is_none")]
8083    pub row_fields: Option<Box<RowFields>>,
8084    #[serde(rename = "rowItems")]
8085    #[serde(default, skip_serializing_if = "Option::is_none")]
8086    pub row_items: Option<Box<CTRowItems>>,
8087    #[serde(rename = "colFields")]
8088    #[serde(default, skip_serializing_if = "Option::is_none")]
8089    pub col_fields: Option<Box<ColFields>>,
8090    #[serde(rename = "colItems")]
8091    #[serde(default, skip_serializing_if = "Option::is_none")]
8092    pub col_items: Option<Box<CTColItems>>,
8093    #[serde(rename = "pageFields")]
8094    #[serde(default, skip_serializing_if = "Option::is_none")]
8095    pub page_fields: Option<Box<PageFields>>,
8096    #[serde(rename = "dataFields")]
8097    #[serde(default, skip_serializing_if = "Option::is_none")]
8098    pub data_fields: Option<Box<DataFields>>,
8099    #[serde(rename = "formats")]
8100    #[serde(default, skip_serializing_if = "Option::is_none")]
8101    pub formats: Option<Box<CTFormats>>,
8102    #[serde(rename = "conditionalFormats")]
8103    #[serde(default, skip_serializing_if = "Option::is_none")]
8104    pub conditional_formats: Option<Box<CTConditionalFormats>>,
8105    #[serde(rename = "chartFormats")]
8106    #[serde(default, skip_serializing_if = "Option::is_none")]
8107    pub chart_formats: Option<Box<CTChartFormats>>,
8108    #[serde(rename = "pivotHierarchies")]
8109    #[serde(default, skip_serializing_if = "Option::is_none")]
8110    pub pivot_hierarchies: Option<Box<CTPivotHierarchies>>,
8111    #[serde(rename = "pivotTableStyleInfo")]
8112    #[serde(default, skip_serializing_if = "Option::is_none")]
8113    pub pivot_table_style_info: Option<Box<CTPivotTableStyle>>,
8114    #[serde(rename = "filters")]
8115    #[serde(default, skip_serializing_if = "Option::is_none")]
8116    pub filters: Option<Box<PivotFilters>>,
8117    #[serde(rename = "rowHierarchiesUsage")]
8118    #[serde(default, skip_serializing_if = "Option::is_none")]
8119    pub row_hierarchies_usage: Option<Box<CTRowHierarchiesUsage>>,
8120    #[serde(rename = "colHierarchiesUsage")]
8121    #[serde(default, skip_serializing_if = "Option::is_none")]
8122    pub col_hierarchies_usage: Option<Box<CTColHierarchiesUsage>>,
8123    #[serde(rename = "extLst")]
8124    #[serde(default, skip_serializing_if = "Option::is_none")]
8125    pub extension_list: Option<Box<ExtensionList>>,
8126    /// Unknown attributes captured for roundtrip fidelity.
8127    #[cfg(feature = "extra-attrs")]
8128    #[serde(skip)]
8129    #[cfg(feature = "extra-attrs")]
8130    #[serde(default)]
8131    #[cfg(feature = "extra-attrs")]
8132    pub extra_attrs: std::collections::HashMap<String, String>,
8133    /// Unknown child elements captured for roundtrip fidelity.
8134    #[cfg(feature = "extra-children")]
8135    #[serde(skip)]
8136    #[cfg(feature = "extra-children")]
8137    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8138}
8139
8140#[derive(Debug, Clone, Serialize, Deserialize)]
8141pub struct PivotLocation {
8142    #[serde(rename = "@ref")]
8143    pub reference: Reference,
8144    #[serde(rename = "@firstHeaderRow")]
8145    pub first_header_row: u32,
8146    #[serde(rename = "@firstDataRow")]
8147    pub first_data_row: u32,
8148    #[serde(rename = "@firstDataCol")]
8149    pub first_data_col: u32,
8150    #[serde(rename = "@rowPageCount")]
8151    #[serde(default, skip_serializing_if = "Option::is_none")]
8152    pub row_page_count: Option<u32>,
8153    #[serde(rename = "@colPageCount")]
8154    #[serde(default, skip_serializing_if = "Option::is_none")]
8155    pub col_page_count: Option<u32>,
8156    /// Unknown attributes captured for roundtrip fidelity.
8157    #[cfg(feature = "extra-attrs")]
8158    #[serde(skip)]
8159    #[cfg(feature = "extra-attrs")]
8160    #[serde(default)]
8161    #[cfg(feature = "extra-attrs")]
8162    pub extra_attrs: std::collections::HashMap<String, String>,
8163}
8164
8165#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8166pub struct PivotFields {
8167    #[serde(rename = "@count")]
8168    #[serde(default, skip_serializing_if = "Option::is_none")]
8169    pub count: Option<u32>,
8170    #[serde(rename = "pivotField")]
8171    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8172    pub pivot_field: Vec<PivotField>,
8173    /// Unknown attributes captured for roundtrip fidelity.
8174    #[cfg(feature = "extra-attrs")]
8175    #[serde(skip)]
8176    #[cfg(feature = "extra-attrs")]
8177    #[serde(default)]
8178    #[cfg(feature = "extra-attrs")]
8179    pub extra_attrs: std::collections::HashMap<String, String>,
8180    /// Unknown child elements captured for roundtrip fidelity.
8181    #[cfg(feature = "extra-children")]
8182    #[serde(skip)]
8183    #[cfg(feature = "extra-children")]
8184    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8185}
8186
8187#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8188pub struct PivotField {
8189    #[serde(rename = "@name")]
8190    #[serde(default, skip_serializing_if = "Option::is_none")]
8191    pub name: Option<XmlString>,
8192    #[serde(rename = "@axis")]
8193    #[serde(default, skip_serializing_if = "Option::is_none")]
8194    pub axis: Option<STAxis>,
8195    #[serde(rename = "@dataField")]
8196    #[serde(
8197        default,
8198        skip_serializing_if = "Option::is_none",
8199        with = "ooxml_xml::ooxml_bool"
8200    )]
8201    pub data_field: Option<bool>,
8202    #[serde(rename = "@subtotalCaption")]
8203    #[serde(default, skip_serializing_if = "Option::is_none")]
8204    pub subtotal_caption: Option<XmlString>,
8205    #[serde(rename = "@showDropDowns")]
8206    #[serde(
8207        default,
8208        skip_serializing_if = "Option::is_none",
8209        with = "ooxml_xml::ooxml_bool"
8210    )]
8211    pub show_drop_downs: Option<bool>,
8212    #[serde(rename = "@hiddenLevel")]
8213    #[serde(
8214        default,
8215        skip_serializing_if = "Option::is_none",
8216        with = "ooxml_xml::ooxml_bool"
8217    )]
8218    pub hidden_level: Option<bool>,
8219    #[serde(rename = "@uniqueMemberProperty")]
8220    #[serde(default, skip_serializing_if = "Option::is_none")]
8221    pub unique_member_property: Option<XmlString>,
8222    #[serde(rename = "@compact")]
8223    #[serde(
8224        default,
8225        skip_serializing_if = "Option::is_none",
8226        with = "ooxml_xml::ooxml_bool"
8227    )]
8228    pub compact: Option<bool>,
8229    #[serde(rename = "@allDrilled")]
8230    #[serde(
8231        default,
8232        skip_serializing_if = "Option::is_none",
8233        with = "ooxml_xml::ooxml_bool"
8234    )]
8235    pub all_drilled: Option<bool>,
8236    #[serde(rename = "@numFmtId")]
8237    #[serde(default, skip_serializing_if = "Option::is_none")]
8238    pub number_format_id: Option<STNumFmtId>,
8239    #[serde(rename = "@outline")]
8240    #[serde(
8241        default,
8242        skip_serializing_if = "Option::is_none",
8243        with = "ooxml_xml::ooxml_bool"
8244    )]
8245    pub outline: Option<bool>,
8246    #[serde(rename = "@subtotalTop")]
8247    #[serde(
8248        default,
8249        skip_serializing_if = "Option::is_none",
8250        with = "ooxml_xml::ooxml_bool"
8251    )]
8252    pub subtotal_top: Option<bool>,
8253    #[serde(rename = "@dragToRow")]
8254    #[serde(
8255        default,
8256        skip_serializing_if = "Option::is_none",
8257        with = "ooxml_xml::ooxml_bool"
8258    )]
8259    pub drag_to_row: Option<bool>,
8260    #[serde(rename = "@dragToCol")]
8261    #[serde(
8262        default,
8263        skip_serializing_if = "Option::is_none",
8264        with = "ooxml_xml::ooxml_bool"
8265    )]
8266    pub drag_to_col: Option<bool>,
8267    #[serde(rename = "@multipleItemSelectionAllowed")]
8268    #[serde(
8269        default,
8270        skip_serializing_if = "Option::is_none",
8271        with = "ooxml_xml::ooxml_bool"
8272    )]
8273    pub multiple_item_selection_allowed: Option<bool>,
8274    #[serde(rename = "@dragToPage")]
8275    #[serde(
8276        default,
8277        skip_serializing_if = "Option::is_none",
8278        with = "ooxml_xml::ooxml_bool"
8279    )]
8280    pub drag_to_page: Option<bool>,
8281    #[serde(rename = "@dragToData")]
8282    #[serde(
8283        default,
8284        skip_serializing_if = "Option::is_none",
8285        with = "ooxml_xml::ooxml_bool"
8286    )]
8287    pub drag_to_data: Option<bool>,
8288    #[serde(rename = "@dragOff")]
8289    #[serde(
8290        default,
8291        skip_serializing_if = "Option::is_none",
8292        with = "ooxml_xml::ooxml_bool"
8293    )]
8294    pub drag_off: Option<bool>,
8295    #[serde(rename = "@showAll")]
8296    #[serde(
8297        default,
8298        skip_serializing_if = "Option::is_none",
8299        with = "ooxml_xml::ooxml_bool"
8300    )]
8301    pub show_all: Option<bool>,
8302    #[serde(rename = "@insertBlankRow")]
8303    #[serde(
8304        default,
8305        skip_serializing_if = "Option::is_none",
8306        with = "ooxml_xml::ooxml_bool"
8307    )]
8308    pub insert_blank_row: Option<bool>,
8309    #[serde(rename = "@serverField")]
8310    #[serde(
8311        default,
8312        skip_serializing_if = "Option::is_none",
8313        with = "ooxml_xml::ooxml_bool"
8314    )]
8315    pub server_field: Option<bool>,
8316    #[serde(rename = "@insertPageBreak")]
8317    #[serde(
8318        default,
8319        skip_serializing_if = "Option::is_none",
8320        with = "ooxml_xml::ooxml_bool"
8321    )]
8322    pub insert_page_break: Option<bool>,
8323    #[serde(rename = "@autoShow")]
8324    #[serde(
8325        default,
8326        skip_serializing_if = "Option::is_none",
8327        with = "ooxml_xml::ooxml_bool"
8328    )]
8329    pub auto_show: Option<bool>,
8330    #[serde(rename = "@topAutoShow")]
8331    #[serde(
8332        default,
8333        skip_serializing_if = "Option::is_none",
8334        with = "ooxml_xml::ooxml_bool"
8335    )]
8336    pub top_auto_show: Option<bool>,
8337    #[serde(rename = "@hideNewItems")]
8338    #[serde(
8339        default,
8340        skip_serializing_if = "Option::is_none",
8341        with = "ooxml_xml::ooxml_bool"
8342    )]
8343    pub hide_new_items: Option<bool>,
8344    #[serde(rename = "@measureFilter")]
8345    #[serde(
8346        default,
8347        skip_serializing_if = "Option::is_none",
8348        with = "ooxml_xml::ooxml_bool"
8349    )]
8350    pub measure_filter: Option<bool>,
8351    #[serde(rename = "@includeNewItemsInFilter")]
8352    #[serde(
8353        default,
8354        skip_serializing_if = "Option::is_none",
8355        with = "ooxml_xml::ooxml_bool"
8356    )]
8357    pub include_new_items_in_filter: Option<bool>,
8358    #[serde(rename = "@itemPageCount")]
8359    #[serde(default, skip_serializing_if = "Option::is_none")]
8360    pub item_page_count: Option<u32>,
8361    #[serde(rename = "@sortType")]
8362    #[serde(default, skip_serializing_if = "Option::is_none")]
8363    pub sort_type: Option<STFieldSortType>,
8364    #[serde(rename = "@dataSourceSort")]
8365    #[serde(
8366        default,
8367        skip_serializing_if = "Option::is_none",
8368        with = "ooxml_xml::ooxml_bool"
8369    )]
8370    pub data_source_sort: Option<bool>,
8371    #[serde(rename = "@nonAutoSortDefault")]
8372    #[serde(
8373        default,
8374        skip_serializing_if = "Option::is_none",
8375        with = "ooxml_xml::ooxml_bool"
8376    )]
8377    pub non_auto_sort_default: Option<bool>,
8378    #[serde(rename = "@rankBy")]
8379    #[serde(default, skip_serializing_if = "Option::is_none")]
8380    pub rank_by: Option<u32>,
8381    #[serde(rename = "@defaultSubtotal")]
8382    #[serde(
8383        default,
8384        skip_serializing_if = "Option::is_none",
8385        with = "ooxml_xml::ooxml_bool"
8386    )]
8387    pub default_subtotal: Option<bool>,
8388    #[serde(rename = "@sumSubtotal")]
8389    #[serde(
8390        default,
8391        skip_serializing_if = "Option::is_none",
8392        with = "ooxml_xml::ooxml_bool"
8393    )]
8394    pub sum_subtotal: Option<bool>,
8395    #[serde(rename = "@countASubtotal")]
8396    #[serde(
8397        default,
8398        skip_serializing_if = "Option::is_none",
8399        with = "ooxml_xml::ooxml_bool"
8400    )]
8401    pub count_a_subtotal: Option<bool>,
8402    #[serde(rename = "@avgSubtotal")]
8403    #[serde(
8404        default,
8405        skip_serializing_if = "Option::is_none",
8406        with = "ooxml_xml::ooxml_bool"
8407    )]
8408    pub avg_subtotal: Option<bool>,
8409    #[serde(rename = "@maxSubtotal")]
8410    #[serde(
8411        default,
8412        skip_serializing_if = "Option::is_none",
8413        with = "ooxml_xml::ooxml_bool"
8414    )]
8415    pub max_subtotal: Option<bool>,
8416    #[serde(rename = "@minSubtotal")]
8417    #[serde(
8418        default,
8419        skip_serializing_if = "Option::is_none",
8420        with = "ooxml_xml::ooxml_bool"
8421    )]
8422    pub min_subtotal: Option<bool>,
8423    #[serde(rename = "@productSubtotal")]
8424    #[serde(
8425        default,
8426        skip_serializing_if = "Option::is_none",
8427        with = "ooxml_xml::ooxml_bool"
8428    )]
8429    pub product_subtotal: Option<bool>,
8430    #[serde(rename = "@countSubtotal")]
8431    #[serde(
8432        default,
8433        skip_serializing_if = "Option::is_none",
8434        with = "ooxml_xml::ooxml_bool"
8435    )]
8436    pub count_subtotal: Option<bool>,
8437    #[serde(rename = "@stdDevSubtotal")]
8438    #[serde(
8439        default,
8440        skip_serializing_if = "Option::is_none",
8441        with = "ooxml_xml::ooxml_bool"
8442    )]
8443    pub std_dev_subtotal: Option<bool>,
8444    #[serde(rename = "@stdDevPSubtotal")]
8445    #[serde(
8446        default,
8447        skip_serializing_if = "Option::is_none",
8448        with = "ooxml_xml::ooxml_bool"
8449    )]
8450    pub std_dev_p_subtotal: Option<bool>,
8451    #[serde(rename = "@varSubtotal")]
8452    #[serde(
8453        default,
8454        skip_serializing_if = "Option::is_none",
8455        with = "ooxml_xml::ooxml_bool"
8456    )]
8457    pub var_subtotal: Option<bool>,
8458    #[serde(rename = "@varPSubtotal")]
8459    #[serde(
8460        default,
8461        skip_serializing_if = "Option::is_none",
8462        with = "ooxml_xml::ooxml_bool"
8463    )]
8464    pub var_p_subtotal: Option<bool>,
8465    #[serde(rename = "@showPropCell")]
8466    #[serde(
8467        default,
8468        skip_serializing_if = "Option::is_none",
8469        with = "ooxml_xml::ooxml_bool"
8470    )]
8471    pub show_prop_cell: Option<bool>,
8472    #[serde(rename = "@showPropTip")]
8473    #[serde(
8474        default,
8475        skip_serializing_if = "Option::is_none",
8476        with = "ooxml_xml::ooxml_bool"
8477    )]
8478    pub show_prop_tip: Option<bool>,
8479    #[serde(rename = "@showPropAsCaption")]
8480    #[serde(
8481        default,
8482        skip_serializing_if = "Option::is_none",
8483        with = "ooxml_xml::ooxml_bool"
8484    )]
8485    pub show_prop_as_caption: Option<bool>,
8486    #[serde(rename = "@defaultAttributeDrillState")]
8487    #[serde(
8488        default,
8489        skip_serializing_if = "Option::is_none",
8490        with = "ooxml_xml::ooxml_bool"
8491    )]
8492    pub default_attribute_drill_state: Option<bool>,
8493    #[serde(rename = "items")]
8494    #[serde(default, skip_serializing_if = "Option::is_none")]
8495    pub items: Option<Box<PivotItems>>,
8496    #[serde(rename = "autoSortScope")]
8497    #[serde(default, skip_serializing_if = "Option::is_none")]
8498    pub auto_sort_scope: Option<AutoSortScopeElement>,
8499    #[serde(rename = "extLst")]
8500    #[serde(default, skip_serializing_if = "Option::is_none")]
8501    pub extension_list: Option<Box<ExtensionList>>,
8502    /// Unknown attributes captured for roundtrip fidelity.
8503    #[cfg(feature = "extra-attrs")]
8504    #[serde(skip)]
8505    #[cfg(feature = "extra-attrs")]
8506    #[serde(default)]
8507    #[cfg(feature = "extra-attrs")]
8508    pub extra_attrs: std::collections::HashMap<String, String>,
8509    /// Unknown child elements captured for roundtrip fidelity.
8510    #[cfg(feature = "extra-children")]
8511    #[serde(skip)]
8512    #[cfg(feature = "extra-children")]
8513    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8514}
8515
8516pub type AutoSortScopeElement = Box<PivotArea>;
8517
8518#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8519pub struct PivotItems {
8520    #[serde(rename = "@count")]
8521    #[serde(default, skip_serializing_if = "Option::is_none")]
8522    pub count: Option<u32>,
8523    #[serde(rename = "item")]
8524    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8525    pub item: Vec<PivotItem>,
8526    /// Unknown attributes captured for roundtrip fidelity.
8527    #[cfg(feature = "extra-attrs")]
8528    #[serde(skip)]
8529    #[cfg(feature = "extra-attrs")]
8530    #[serde(default)]
8531    #[cfg(feature = "extra-attrs")]
8532    pub extra_attrs: std::collections::HashMap<String, String>,
8533    /// Unknown child elements captured for roundtrip fidelity.
8534    #[cfg(feature = "extra-children")]
8535    #[serde(skip)]
8536    #[cfg(feature = "extra-children")]
8537    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8538}
8539
8540#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8541pub struct PivotItem {
8542    #[serde(rename = "@n")]
8543    #[serde(default, skip_serializing_if = "Option::is_none")]
8544    pub n: Option<XmlString>,
8545    #[serde(rename = "@t")]
8546    #[serde(default, skip_serializing_if = "Option::is_none")]
8547    pub cell_type: Option<STItemType>,
8548    #[serde(rename = "@h")]
8549    #[serde(
8550        default,
8551        skip_serializing_if = "Option::is_none",
8552        with = "ooxml_xml::ooxml_bool"
8553    )]
8554    pub height: Option<bool>,
8555    #[serde(rename = "@s")]
8556    #[serde(
8557        default,
8558        skip_serializing_if = "Option::is_none",
8559        with = "ooxml_xml::ooxml_bool"
8560    )]
8561    pub style_index: Option<bool>,
8562    #[serde(rename = "@sd")]
8563    #[serde(
8564        default,
8565        skip_serializing_if = "Option::is_none",
8566        with = "ooxml_xml::ooxml_bool"
8567    )]
8568    pub sd: Option<bool>,
8569    #[serde(rename = "@f")]
8570    #[serde(
8571        default,
8572        skip_serializing_if = "Option::is_none",
8573        with = "ooxml_xml::ooxml_bool"
8574    )]
8575    pub formula: Option<bool>,
8576    #[serde(rename = "@m")]
8577    #[serde(
8578        default,
8579        skip_serializing_if = "Option::is_none",
8580        with = "ooxml_xml::ooxml_bool"
8581    )]
8582    pub m: Option<bool>,
8583    #[serde(rename = "@c")]
8584    #[serde(
8585        default,
8586        skip_serializing_if = "Option::is_none",
8587        with = "ooxml_xml::ooxml_bool"
8588    )]
8589    pub cells: Option<bool>,
8590    #[serde(rename = "@x")]
8591    #[serde(default, skip_serializing_if = "Option::is_none")]
8592    pub x: Option<u32>,
8593    #[serde(rename = "@d")]
8594    #[serde(
8595        default,
8596        skip_serializing_if = "Option::is_none",
8597        with = "ooxml_xml::ooxml_bool"
8598    )]
8599    pub d: Option<bool>,
8600    #[serde(rename = "@e")]
8601    #[serde(
8602        default,
8603        skip_serializing_if = "Option::is_none",
8604        with = "ooxml_xml::ooxml_bool"
8605    )]
8606    pub e: Option<bool>,
8607    /// Unknown attributes captured for roundtrip fidelity.
8608    #[cfg(feature = "extra-attrs")]
8609    #[serde(skip)]
8610    #[cfg(feature = "extra-attrs")]
8611    #[serde(default)]
8612    #[cfg(feature = "extra-attrs")]
8613    pub extra_attrs: std::collections::HashMap<String, String>,
8614}
8615
8616#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8617pub struct PageFields {
8618    #[serde(rename = "@count")]
8619    #[serde(default, skip_serializing_if = "Option::is_none")]
8620    pub count: Option<u32>,
8621    #[serde(rename = "pageField")]
8622    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8623    pub page_field: Vec<PageField>,
8624    /// Unknown attributes captured for roundtrip fidelity.
8625    #[cfg(feature = "extra-attrs")]
8626    #[serde(skip)]
8627    #[cfg(feature = "extra-attrs")]
8628    #[serde(default)]
8629    #[cfg(feature = "extra-attrs")]
8630    pub extra_attrs: std::collections::HashMap<String, String>,
8631    /// Unknown child elements captured for roundtrip fidelity.
8632    #[cfg(feature = "extra-children")]
8633    #[serde(skip)]
8634    #[cfg(feature = "extra-children")]
8635    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8636}
8637
8638#[derive(Debug, Clone, Serialize, Deserialize)]
8639pub struct PageField {
8640    #[serde(rename = "@fld")]
8641    pub fld: i32,
8642    #[serde(rename = "@item")]
8643    #[serde(default, skip_serializing_if = "Option::is_none")]
8644    pub item: Option<u32>,
8645    #[serde(rename = "@hier")]
8646    #[serde(default, skip_serializing_if = "Option::is_none")]
8647    pub hier: Option<i32>,
8648    #[serde(rename = "@name")]
8649    #[serde(default, skip_serializing_if = "Option::is_none")]
8650    pub name: Option<XmlString>,
8651    #[serde(rename = "@cap")]
8652    #[serde(default, skip_serializing_if = "Option::is_none")]
8653    pub cap: Option<XmlString>,
8654    #[serde(rename = "extLst")]
8655    #[serde(default, skip_serializing_if = "Option::is_none")]
8656    pub extension_list: Option<Box<ExtensionList>>,
8657    /// Unknown attributes captured for roundtrip fidelity.
8658    #[cfg(feature = "extra-attrs")]
8659    #[serde(skip)]
8660    #[cfg(feature = "extra-attrs")]
8661    #[serde(default)]
8662    #[cfg(feature = "extra-attrs")]
8663    pub extra_attrs: std::collections::HashMap<String, String>,
8664    /// Unknown child elements captured for roundtrip fidelity.
8665    #[cfg(feature = "extra-children")]
8666    #[serde(skip)]
8667    #[cfg(feature = "extra-children")]
8668    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8669}
8670
8671#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8672pub struct DataFields {
8673    #[serde(rename = "@count")]
8674    #[serde(default, skip_serializing_if = "Option::is_none")]
8675    pub count: Option<u32>,
8676    #[serde(rename = "dataField")]
8677    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8678    pub data_field: Vec<DataField>,
8679    /// Unknown attributes captured for roundtrip fidelity.
8680    #[cfg(feature = "extra-attrs")]
8681    #[serde(skip)]
8682    #[cfg(feature = "extra-attrs")]
8683    #[serde(default)]
8684    #[cfg(feature = "extra-attrs")]
8685    pub extra_attrs: std::collections::HashMap<String, String>,
8686    /// Unknown child elements captured for roundtrip fidelity.
8687    #[cfg(feature = "extra-children")]
8688    #[serde(skip)]
8689    #[cfg(feature = "extra-children")]
8690    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8691}
8692
8693#[derive(Debug, Clone, Serialize, Deserialize)]
8694pub struct DataField {
8695    #[serde(rename = "@name")]
8696    #[serde(default, skip_serializing_if = "Option::is_none")]
8697    pub name: Option<XmlString>,
8698    #[serde(rename = "@fld")]
8699    pub fld: u32,
8700    #[serde(rename = "@subtotal")]
8701    #[serde(default, skip_serializing_if = "Option::is_none")]
8702    pub subtotal: Option<STDataConsolidateFunction>,
8703    #[serde(rename = "@showDataAs")]
8704    #[serde(default, skip_serializing_if = "Option::is_none")]
8705    pub show_data_as: Option<STShowDataAs>,
8706    #[serde(rename = "@baseField")]
8707    #[serde(default, skip_serializing_if = "Option::is_none")]
8708    pub base_field: Option<i32>,
8709    #[serde(rename = "@baseItem")]
8710    #[serde(default, skip_serializing_if = "Option::is_none")]
8711    pub base_item: Option<u32>,
8712    #[serde(rename = "@numFmtId")]
8713    #[serde(default, skip_serializing_if = "Option::is_none")]
8714    pub number_format_id: Option<STNumFmtId>,
8715    #[serde(rename = "extLst")]
8716    #[serde(default, skip_serializing_if = "Option::is_none")]
8717    pub extension_list: Option<Box<ExtensionList>>,
8718    /// Unknown attributes captured for roundtrip fidelity.
8719    #[cfg(feature = "extra-attrs")]
8720    #[serde(skip)]
8721    #[cfg(feature = "extra-attrs")]
8722    #[serde(default)]
8723    #[cfg(feature = "extra-attrs")]
8724    pub extra_attrs: std::collections::HashMap<String, String>,
8725    /// Unknown child elements captured for roundtrip fidelity.
8726    #[cfg(feature = "extra-children")]
8727    #[serde(skip)]
8728    #[cfg(feature = "extra-children")]
8729    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8730}
8731
8732#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8733pub struct CTRowItems {
8734    #[serde(rename = "@count")]
8735    #[serde(default, skip_serializing_if = "Option::is_none")]
8736    pub count: Option<u32>,
8737    #[serde(rename = "i")]
8738    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8739    pub i: Vec<CTI>,
8740    /// Unknown attributes captured for roundtrip fidelity.
8741    #[cfg(feature = "extra-attrs")]
8742    #[serde(skip)]
8743    #[cfg(feature = "extra-attrs")]
8744    #[serde(default)]
8745    #[cfg(feature = "extra-attrs")]
8746    pub extra_attrs: std::collections::HashMap<String, String>,
8747    /// Unknown child elements captured for roundtrip fidelity.
8748    #[cfg(feature = "extra-children")]
8749    #[serde(skip)]
8750    #[cfg(feature = "extra-children")]
8751    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8752}
8753
8754#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8755pub struct CTColItems {
8756    #[serde(rename = "@count")]
8757    #[serde(default, skip_serializing_if = "Option::is_none")]
8758    pub count: Option<u32>,
8759    #[serde(rename = "i")]
8760    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8761    pub i: Vec<CTI>,
8762    /// Unknown attributes captured for roundtrip fidelity.
8763    #[cfg(feature = "extra-attrs")]
8764    #[serde(skip)]
8765    #[cfg(feature = "extra-attrs")]
8766    #[serde(default)]
8767    #[cfg(feature = "extra-attrs")]
8768    pub extra_attrs: std::collections::HashMap<String, String>,
8769    /// Unknown child elements captured for roundtrip fidelity.
8770    #[cfg(feature = "extra-children")]
8771    #[serde(skip)]
8772    #[cfg(feature = "extra-children")]
8773    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8774}
8775
8776#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8777pub struct CTI {
8778    #[serde(rename = "@t")]
8779    #[serde(default, skip_serializing_if = "Option::is_none")]
8780    pub cell_type: Option<STItemType>,
8781    #[serde(rename = "@r")]
8782    #[serde(default, skip_serializing_if = "Option::is_none")]
8783    pub reference: Option<u32>,
8784    #[serde(rename = "@i")]
8785    #[serde(default, skip_serializing_if = "Option::is_none")]
8786    pub i: Option<u32>,
8787    #[serde(rename = "x")]
8788    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8789    pub x: Vec<CTX>,
8790    /// Unknown attributes captured for roundtrip fidelity.
8791    #[cfg(feature = "extra-attrs")]
8792    #[serde(skip)]
8793    #[cfg(feature = "extra-attrs")]
8794    #[serde(default)]
8795    #[cfg(feature = "extra-attrs")]
8796    pub extra_attrs: std::collections::HashMap<String, String>,
8797    /// Unknown child elements captured for roundtrip fidelity.
8798    #[cfg(feature = "extra-children")]
8799    #[serde(skip)]
8800    #[cfg(feature = "extra-children")]
8801    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8802}
8803
8804#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8805pub struct CTX {
8806    #[serde(rename = "@v")]
8807    #[serde(default, skip_serializing_if = "Option::is_none")]
8808    pub value: Option<i32>,
8809    /// Unknown attributes captured for roundtrip fidelity.
8810    #[cfg(feature = "extra-attrs")]
8811    #[serde(skip)]
8812    #[cfg(feature = "extra-attrs")]
8813    #[serde(default)]
8814    #[cfg(feature = "extra-attrs")]
8815    pub extra_attrs: std::collections::HashMap<String, String>,
8816}
8817
8818#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8819pub struct RowFields {
8820    #[serde(rename = "@count")]
8821    #[serde(default, skip_serializing_if = "Option::is_none")]
8822    pub count: Option<u32>,
8823    #[serde(rename = "field")]
8824    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8825    pub field: Vec<CTField>,
8826    /// Unknown attributes captured for roundtrip fidelity.
8827    #[cfg(feature = "extra-attrs")]
8828    #[serde(skip)]
8829    #[cfg(feature = "extra-attrs")]
8830    #[serde(default)]
8831    #[cfg(feature = "extra-attrs")]
8832    pub extra_attrs: std::collections::HashMap<String, String>,
8833    /// Unknown child elements captured for roundtrip fidelity.
8834    #[cfg(feature = "extra-children")]
8835    #[serde(skip)]
8836    #[cfg(feature = "extra-children")]
8837    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8838}
8839
8840#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8841pub struct ColFields {
8842    #[serde(rename = "@count")]
8843    #[serde(default, skip_serializing_if = "Option::is_none")]
8844    pub count: Option<u32>,
8845    #[serde(rename = "field")]
8846    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8847    pub field: Vec<CTField>,
8848    /// Unknown attributes captured for roundtrip fidelity.
8849    #[cfg(feature = "extra-attrs")]
8850    #[serde(skip)]
8851    #[cfg(feature = "extra-attrs")]
8852    #[serde(default)]
8853    #[cfg(feature = "extra-attrs")]
8854    pub extra_attrs: std::collections::HashMap<String, String>,
8855    /// Unknown child elements captured for roundtrip fidelity.
8856    #[cfg(feature = "extra-children")]
8857    #[serde(skip)]
8858    #[cfg(feature = "extra-children")]
8859    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8860}
8861
8862#[derive(Debug, Clone, Serialize, Deserialize)]
8863pub struct CTField {
8864    #[serde(rename = "@x")]
8865    pub x: i32,
8866    /// Unknown attributes captured for roundtrip fidelity.
8867    #[cfg(feature = "extra-attrs")]
8868    #[serde(skip)]
8869    #[cfg(feature = "extra-attrs")]
8870    #[serde(default)]
8871    #[cfg(feature = "extra-attrs")]
8872    pub extra_attrs: std::collections::HashMap<String, String>,
8873}
8874
8875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8876pub struct CTFormats {
8877    #[serde(rename = "@count")]
8878    #[serde(default, skip_serializing_if = "Option::is_none")]
8879    pub count: Option<u32>,
8880    #[serde(rename = "format")]
8881    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8882    pub format: Vec<CTFormat>,
8883    /// Unknown attributes captured for roundtrip fidelity.
8884    #[cfg(feature = "extra-attrs")]
8885    #[serde(skip)]
8886    #[cfg(feature = "extra-attrs")]
8887    #[serde(default)]
8888    #[cfg(feature = "extra-attrs")]
8889    pub extra_attrs: std::collections::HashMap<String, String>,
8890    /// Unknown child elements captured for roundtrip fidelity.
8891    #[cfg(feature = "extra-children")]
8892    #[serde(skip)]
8893    #[cfg(feature = "extra-children")]
8894    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8895}
8896
8897#[derive(Debug, Clone, Serialize, Deserialize)]
8898pub struct CTFormat {
8899    #[serde(rename = "@action")]
8900    #[serde(default, skip_serializing_if = "Option::is_none")]
8901    pub action: Option<STFormatAction>,
8902    #[serde(rename = "@dxfId")]
8903    #[serde(default, skip_serializing_if = "Option::is_none")]
8904    pub dxf_id: Option<STDxfId>,
8905    #[serde(rename = "pivotArea")]
8906    pub pivot_area: Box<PivotArea>,
8907    #[serde(rename = "extLst")]
8908    #[serde(default, skip_serializing_if = "Option::is_none")]
8909    pub extension_list: Option<Box<ExtensionList>>,
8910    /// Unknown attributes captured for roundtrip fidelity.
8911    #[cfg(feature = "extra-attrs")]
8912    #[serde(skip)]
8913    #[cfg(feature = "extra-attrs")]
8914    #[serde(default)]
8915    #[cfg(feature = "extra-attrs")]
8916    pub extra_attrs: std::collections::HashMap<String, String>,
8917    /// Unknown child elements captured for roundtrip fidelity.
8918    #[cfg(feature = "extra-children")]
8919    #[serde(skip)]
8920    #[cfg(feature = "extra-children")]
8921    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8922}
8923
8924#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8925pub struct CTConditionalFormats {
8926    #[serde(rename = "@count")]
8927    #[serde(default, skip_serializing_if = "Option::is_none")]
8928    pub count: Option<u32>,
8929    #[serde(rename = "conditionalFormat")]
8930    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8931    pub conditional_format: Vec<CTConditionalFormat>,
8932    /// Unknown attributes captured for roundtrip fidelity.
8933    #[cfg(feature = "extra-attrs")]
8934    #[serde(skip)]
8935    #[cfg(feature = "extra-attrs")]
8936    #[serde(default)]
8937    #[cfg(feature = "extra-attrs")]
8938    pub extra_attrs: std::collections::HashMap<String, String>,
8939    /// Unknown child elements captured for roundtrip fidelity.
8940    #[cfg(feature = "extra-children")]
8941    #[serde(skip)]
8942    #[cfg(feature = "extra-children")]
8943    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8944}
8945
8946#[derive(Debug, Clone, Serialize, Deserialize)]
8947pub struct CTConditionalFormat {
8948    #[serde(rename = "@scope")]
8949    #[serde(default, skip_serializing_if = "Option::is_none")]
8950    pub scope: Option<STScope>,
8951    #[serde(rename = "@type")]
8952    #[serde(default, skip_serializing_if = "Option::is_none")]
8953    pub r#type: Option<STType>,
8954    #[serde(rename = "@priority")]
8955    pub priority: u32,
8956    #[serde(rename = "pivotAreas")]
8957    pub pivot_areas: Box<PivotAreas>,
8958    #[serde(rename = "extLst")]
8959    #[serde(default, skip_serializing_if = "Option::is_none")]
8960    pub extension_list: Option<Box<ExtensionList>>,
8961    /// Unknown attributes captured for roundtrip fidelity.
8962    #[cfg(feature = "extra-attrs")]
8963    #[serde(skip)]
8964    #[cfg(feature = "extra-attrs")]
8965    #[serde(default)]
8966    #[cfg(feature = "extra-attrs")]
8967    pub extra_attrs: std::collections::HashMap<String, String>,
8968    /// Unknown child elements captured for roundtrip fidelity.
8969    #[cfg(feature = "extra-children")]
8970    #[serde(skip)]
8971    #[cfg(feature = "extra-children")]
8972    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8973}
8974
8975#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8976pub struct PivotAreas {
8977    #[serde(rename = "@count")]
8978    #[serde(default, skip_serializing_if = "Option::is_none")]
8979    pub count: Option<u32>,
8980    #[serde(rename = "pivotArea")]
8981    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8982    pub pivot_area: Vec<PivotArea>,
8983    /// Unknown attributes captured for roundtrip fidelity.
8984    #[cfg(feature = "extra-attrs")]
8985    #[serde(skip)]
8986    #[cfg(feature = "extra-attrs")]
8987    #[serde(default)]
8988    #[cfg(feature = "extra-attrs")]
8989    pub extra_attrs: std::collections::HashMap<String, String>,
8990    /// Unknown child elements captured for roundtrip fidelity.
8991    #[cfg(feature = "extra-children")]
8992    #[serde(skip)]
8993    #[cfg(feature = "extra-children")]
8994    pub extra_children: Vec<ooxml_xml::PositionedNode>,
8995}
8996
8997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
8998pub struct CTChartFormats {
8999    #[serde(rename = "@count")]
9000    #[serde(default, skip_serializing_if = "Option::is_none")]
9001    pub count: Option<u32>,
9002    #[serde(rename = "chartFormat")]
9003    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9004    pub chart_format: Vec<CTChartFormat>,
9005    /// Unknown attributes captured for roundtrip fidelity.
9006    #[cfg(feature = "extra-attrs")]
9007    #[serde(skip)]
9008    #[cfg(feature = "extra-attrs")]
9009    #[serde(default)]
9010    #[cfg(feature = "extra-attrs")]
9011    pub extra_attrs: std::collections::HashMap<String, String>,
9012    /// Unknown child elements captured for roundtrip fidelity.
9013    #[cfg(feature = "extra-children")]
9014    #[serde(skip)]
9015    #[cfg(feature = "extra-children")]
9016    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9017}
9018
9019#[derive(Debug, Clone, Serialize, Deserialize)]
9020pub struct CTChartFormat {
9021    #[serde(rename = "@chart")]
9022    pub chart: u32,
9023    #[serde(rename = "@format")]
9024    pub format: u32,
9025    #[serde(rename = "@series")]
9026    #[serde(
9027        default,
9028        skip_serializing_if = "Option::is_none",
9029        with = "ooxml_xml::ooxml_bool"
9030    )]
9031    pub series: Option<bool>,
9032    #[serde(rename = "pivotArea")]
9033    pub pivot_area: Box<PivotArea>,
9034    /// Unknown attributes captured for roundtrip fidelity.
9035    #[cfg(feature = "extra-attrs")]
9036    #[serde(skip)]
9037    #[cfg(feature = "extra-attrs")]
9038    #[serde(default)]
9039    #[cfg(feature = "extra-attrs")]
9040    pub extra_attrs: std::collections::HashMap<String, String>,
9041    /// Unknown child elements captured for roundtrip fidelity.
9042    #[cfg(feature = "extra-children")]
9043    #[serde(skip)]
9044    #[cfg(feature = "extra-children")]
9045    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9046}
9047
9048#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9049pub struct CTPivotHierarchies {
9050    #[serde(rename = "@count")]
9051    #[serde(default, skip_serializing_if = "Option::is_none")]
9052    pub count: Option<u32>,
9053    #[serde(rename = "pivotHierarchy")]
9054    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9055    pub pivot_hierarchy: Vec<CTPivotHierarchy>,
9056    /// Unknown attributes captured for roundtrip fidelity.
9057    #[cfg(feature = "extra-attrs")]
9058    #[serde(skip)]
9059    #[cfg(feature = "extra-attrs")]
9060    #[serde(default)]
9061    #[cfg(feature = "extra-attrs")]
9062    pub extra_attrs: std::collections::HashMap<String, String>,
9063    /// Unknown child elements captured for roundtrip fidelity.
9064    #[cfg(feature = "extra-children")]
9065    #[serde(skip)]
9066    #[cfg(feature = "extra-children")]
9067    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9068}
9069
9070#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9071pub struct CTPivotHierarchy {
9072    #[serde(rename = "@outline")]
9073    #[serde(
9074        default,
9075        skip_serializing_if = "Option::is_none",
9076        with = "ooxml_xml::ooxml_bool"
9077    )]
9078    pub outline: Option<bool>,
9079    #[serde(rename = "@multipleItemSelectionAllowed")]
9080    #[serde(
9081        default,
9082        skip_serializing_if = "Option::is_none",
9083        with = "ooxml_xml::ooxml_bool"
9084    )]
9085    pub multiple_item_selection_allowed: Option<bool>,
9086    #[serde(rename = "@subtotalTop")]
9087    #[serde(
9088        default,
9089        skip_serializing_if = "Option::is_none",
9090        with = "ooxml_xml::ooxml_bool"
9091    )]
9092    pub subtotal_top: Option<bool>,
9093    #[serde(rename = "@showInFieldList")]
9094    #[serde(
9095        default,
9096        skip_serializing_if = "Option::is_none",
9097        with = "ooxml_xml::ooxml_bool"
9098    )]
9099    pub show_in_field_list: Option<bool>,
9100    #[serde(rename = "@dragToRow")]
9101    #[serde(
9102        default,
9103        skip_serializing_if = "Option::is_none",
9104        with = "ooxml_xml::ooxml_bool"
9105    )]
9106    pub drag_to_row: Option<bool>,
9107    #[serde(rename = "@dragToCol")]
9108    #[serde(
9109        default,
9110        skip_serializing_if = "Option::is_none",
9111        with = "ooxml_xml::ooxml_bool"
9112    )]
9113    pub drag_to_col: Option<bool>,
9114    #[serde(rename = "@dragToPage")]
9115    #[serde(
9116        default,
9117        skip_serializing_if = "Option::is_none",
9118        with = "ooxml_xml::ooxml_bool"
9119    )]
9120    pub drag_to_page: Option<bool>,
9121    #[serde(rename = "@dragToData")]
9122    #[serde(
9123        default,
9124        skip_serializing_if = "Option::is_none",
9125        with = "ooxml_xml::ooxml_bool"
9126    )]
9127    pub drag_to_data: Option<bool>,
9128    #[serde(rename = "@dragOff")]
9129    #[serde(
9130        default,
9131        skip_serializing_if = "Option::is_none",
9132        with = "ooxml_xml::ooxml_bool"
9133    )]
9134    pub drag_off: Option<bool>,
9135    #[serde(rename = "@includeNewItemsInFilter")]
9136    #[serde(
9137        default,
9138        skip_serializing_if = "Option::is_none",
9139        with = "ooxml_xml::ooxml_bool"
9140    )]
9141    pub include_new_items_in_filter: Option<bool>,
9142    #[serde(rename = "@caption")]
9143    #[serde(default, skip_serializing_if = "Option::is_none")]
9144    pub caption: Option<XmlString>,
9145    #[serde(rename = "mps")]
9146    #[serde(default, skip_serializing_if = "Option::is_none")]
9147    pub mps: Option<Box<CTMemberProperties>>,
9148    #[serde(rename = "members")]
9149    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9150    pub members: Vec<CTMembers>,
9151    #[serde(rename = "extLst")]
9152    #[serde(default, skip_serializing_if = "Option::is_none")]
9153    pub extension_list: Option<Box<ExtensionList>>,
9154    /// Unknown attributes captured for roundtrip fidelity.
9155    #[cfg(feature = "extra-attrs")]
9156    #[serde(skip)]
9157    #[cfg(feature = "extra-attrs")]
9158    #[serde(default)]
9159    #[cfg(feature = "extra-attrs")]
9160    pub extra_attrs: std::collections::HashMap<String, String>,
9161    /// Unknown child elements captured for roundtrip fidelity.
9162    #[cfg(feature = "extra-children")]
9163    #[serde(skip)]
9164    #[cfg(feature = "extra-children")]
9165    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9166}
9167
9168#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9169pub struct CTRowHierarchiesUsage {
9170    #[serde(rename = "@count")]
9171    #[serde(default, skip_serializing_if = "Option::is_none")]
9172    pub count: Option<u32>,
9173    #[serde(rename = "rowHierarchyUsage")]
9174    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9175    pub row_hierarchy_usage: Vec<CTHierarchyUsage>,
9176    /// Unknown attributes captured for roundtrip fidelity.
9177    #[cfg(feature = "extra-attrs")]
9178    #[serde(skip)]
9179    #[cfg(feature = "extra-attrs")]
9180    #[serde(default)]
9181    #[cfg(feature = "extra-attrs")]
9182    pub extra_attrs: std::collections::HashMap<String, String>,
9183    /// Unknown child elements captured for roundtrip fidelity.
9184    #[cfg(feature = "extra-children")]
9185    #[serde(skip)]
9186    #[cfg(feature = "extra-children")]
9187    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9188}
9189
9190#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9191pub struct CTColHierarchiesUsage {
9192    #[serde(rename = "@count")]
9193    #[serde(default, skip_serializing_if = "Option::is_none")]
9194    pub count: Option<u32>,
9195    #[serde(rename = "colHierarchyUsage")]
9196    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9197    pub col_hierarchy_usage: Vec<CTHierarchyUsage>,
9198    /// Unknown attributes captured for roundtrip fidelity.
9199    #[cfg(feature = "extra-attrs")]
9200    #[serde(skip)]
9201    #[cfg(feature = "extra-attrs")]
9202    #[serde(default)]
9203    #[cfg(feature = "extra-attrs")]
9204    pub extra_attrs: std::collections::HashMap<String, String>,
9205    /// Unknown child elements captured for roundtrip fidelity.
9206    #[cfg(feature = "extra-children")]
9207    #[serde(skip)]
9208    #[cfg(feature = "extra-children")]
9209    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9210}
9211
9212#[derive(Debug, Clone, Serialize, Deserialize)]
9213pub struct CTHierarchyUsage {
9214    #[serde(rename = "@hierarchyUsage")]
9215    pub hierarchy_usage: i32,
9216    /// Unknown attributes captured for roundtrip fidelity.
9217    #[cfg(feature = "extra-attrs")]
9218    #[serde(skip)]
9219    #[cfg(feature = "extra-attrs")]
9220    #[serde(default)]
9221    #[cfg(feature = "extra-attrs")]
9222    pub extra_attrs: std::collections::HashMap<String, String>,
9223}
9224
9225#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9226pub struct CTMemberProperties {
9227    #[serde(rename = "@count")]
9228    #[serde(default, skip_serializing_if = "Option::is_none")]
9229    pub count: Option<u32>,
9230    #[serde(rename = "mp")]
9231    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9232    pub mp: Vec<CTMemberProperty>,
9233    /// Unknown attributes captured for roundtrip fidelity.
9234    #[cfg(feature = "extra-attrs")]
9235    #[serde(skip)]
9236    #[cfg(feature = "extra-attrs")]
9237    #[serde(default)]
9238    #[cfg(feature = "extra-attrs")]
9239    pub extra_attrs: std::collections::HashMap<String, String>,
9240    /// Unknown child elements captured for roundtrip fidelity.
9241    #[cfg(feature = "extra-children")]
9242    #[serde(skip)]
9243    #[cfg(feature = "extra-children")]
9244    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9245}
9246
9247#[derive(Debug, Clone, Serialize, Deserialize)]
9248pub struct CTMemberProperty {
9249    #[serde(rename = "@name")]
9250    #[serde(default, skip_serializing_if = "Option::is_none")]
9251    pub name: Option<XmlString>,
9252    #[serde(rename = "@showCell")]
9253    #[serde(
9254        default,
9255        skip_serializing_if = "Option::is_none",
9256        with = "ooxml_xml::ooxml_bool"
9257    )]
9258    pub show_cell: Option<bool>,
9259    #[serde(rename = "@showTip")]
9260    #[serde(
9261        default,
9262        skip_serializing_if = "Option::is_none",
9263        with = "ooxml_xml::ooxml_bool"
9264    )]
9265    pub show_tip: Option<bool>,
9266    #[serde(rename = "@showAsCaption")]
9267    #[serde(
9268        default,
9269        skip_serializing_if = "Option::is_none",
9270        with = "ooxml_xml::ooxml_bool"
9271    )]
9272    pub show_as_caption: Option<bool>,
9273    #[serde(rename = "@nameLen")]
9274    #[serde(default, skip_serializing_if = "Option::is_none")]
9275    pub name_len: Option<u32>,
9276    #[serde(rename = "@pPos")]
9277    #[serde(default, skip_serializing_if = "Option::is_none")]
9278    pub p_pos: Option<u32>,
9279    #[serde(rename = "@pLen")]
9280    #[serde(default, skip_serializing_if = "Option::is_none")]
9281    pub p_len: Option<u32>,
9282    #[serde(rename = "@level")]
9283    #[serde(default, skip_serializing_if = "Option::is_none")]
9284    pub level: Option<u32>,
9285    #[serde(rename = "@field")]
9286    pub field: u32,
9287    /// Unknown attributes captured for roundtrip fidelity.
9288    #[cfg(feature = "extra-attrs")]
9289    #[serde(skip)]
9290    #[cfg(feature = "extra-attrs")]
9291    #[serde(default)]
9292    #[cfg(feature = "extra-attrs")]
9293    pub extra_attrs: std::collections::HashMap<String, String>,
9294}
9295
9296#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9297pub struct CTMembers {
9298    #[serde(rename = "@count")]
9299    #[serde(default, skip_serializing_if = "Option::is_none")]
9300    pub count: Option<u32>,
9301    #[serde(rename = "@level")]
9302    #[serde(default, skip_serializing_if = "Option::is_none")]
9303    pub level: Option<u32>,
9304    #[serde(rename = "member")]
9305    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9306    pub member: Vec<CTMember>,
9307    /// Unknown attributes captured for roundtrip fidelity.
9308    #[cfg(feature = "extra-attrs")]
9309    #[serde(skip)]
9310    #[cfg(feature = "extra-attrs")]
9311    #[serde(default)]
9312    #[cfg(feature = "extra-attrs")]
9313    pub extra_attrs: std::collections::HashMap<String, String>,
9314    /// Unknown child elements captured for roundtrip fidelity.
9315    #[cfg(feature = "extra-children")]
9316    #[serde(skip)]
9317    #[cfg(feature = "extra-children")]
9318    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9319}
9320
9321#[derive(Debug, Clone, Serialize, Deserialize)]
9322pub struct CTMember {
9323    #[serde(rename = "@name")]
9324    pub name: XmlString,
9325    /// Unknown attributes captured for roundtrip fidelity.
9326    #[cfg(feature = "extra-attrs")]
9327    #[serde(skip)]
9328    #[cfg(feature = "extra-attrs")]
9329    #[serde(default)]
9330    #[cfg(feature = "extra-attrs")]
9331    pub extra_attrs: std::collections::HashMap<String, String>,
9332}
9333
9334#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9335pub struct CTDimensions {
9336    #[serde(rename = "@count")]
9337    #[serde(default, skip_serializing_if = "Option::is_none")]
9338    pub count: Option<u32>,
9339    #[serde(rename = "dimension")]
9340    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9341    pub dimension: Vec<CTPivotDimension>,
9342    /// Unknown attributes captured for roundtrip fidelity.
9343    #[cfg(feature = "extra-attrs")]
9344    #[serde(skip)]
9345    #[cfg(feature = "extra-attrs")]
9346    #[serde(default)]
9347    #[cfg(feature = "extra-attrs")]
9348    pub extra_attrs: std::collections::HashMap<String, String>,
9349    /// Unknown child elements captured for roundtrip fidelity.
9350    #[cfg(feature = "extra-children")]
9351    #[serde(skip)]
9352    #[cfg(feature = "extra-children")]
9353    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9354}
9355
9356#[derive(Debug, Clone, Serialize, Deserialize)]
9357pub struct CTPivotDimension {
9358    #[serde(rename = "@measure")]
9359    #[serde(
9360        default,
9361        skip_serializing_if = "Option::is_none",
9362        with = "ooxml_xml::ooxml_bool"
9363    )]
9364    pub measure: Option<bool>,
9365    #[serde(rename = "@name")]
9366    pub name: XmlString,
9367    #[serde(rename = "@uniqueName")]
9368    pub unique_name: XmlString,
9369    #[serde(rename = "@caption")]
9370    pub caption: XmlString,
9371    /// Unknown attributes captured for roundtrip fidelity.
9372    #[cfg(feature = "extra-attrs")]
9373    #[serde(skip)]
9374    #[cfg(feature = "extra-attrs")]
9375    #[serde(default)]
9376    #[cfg(feature = "extra-attrs")]
9377    pub extra_attrs: std::collections::HashMap<String, String>,
9378}
9379
9380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9381pub struct CTMeasureGroups {
9382    #[serde(rename = "@count")]
9383    #[serde(default, skip_serializing_if = "Option::is_none")]
9384    pub count: Option<u32>,
9385    #[serde(rename = "measureGroup")]
9386    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9387    pub measure_group: Vec<CTMeasureGroup>,
9388    /// Unknown attributes captured for roundtrip fidelity.
9389    #[cfg(feature = "extra-attrs")]
9390    #[serde(skip)]
9391    #[cfg(feature = "extra-attrs")]
9392    #[serde(default)]
9393    #[cfg(feature = "extra-attrs")]
9394    pub extra_attrs: std::collections::HashMap<String, String>,
9395    /// Unknown child elements captured for roundtrip fidelity.
9396    #[cfg(feature = "extra-children")]
9397    #[serde(skip)]
9398    #[cfg(feature = "extra-children")]
9399    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9400}
9401
9402#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9403pub struct CTMeasureDimensionMaps {
9404    #[serde(rename = "@count")]
9405    #[serde(default, skip_serializing_if = "Option::is_none")]
9406    pub count: Option<u32>,
9407    #[serde(rename = "map")]
9408    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9409    pub map: Vec<CTMeasureDimensionMap>,
9410    /// Unknown attributes captured for roundtrip fidelity.
9411    #[cfg(feature = "extra-attrs")]
9412    #[serde(skip)]
9413    #[cfg(feature = "extra-attrs")]
9414    #[serde(default)]
9415    #[cfg(feature = "extra-attrs")]
9416    pub extra_attrs: std::collections::HashMap<String, String>,
9417    /// Unknown child elements captured for roundtrip fidelity.
9418    #[cfg(feature = "extra-children")]
9419    #[serde(skip)]
9420    #[cfg(feature = "extra-children")]
9421    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9422}
9423
9424#[derive(Debug, Clone, Serialize, Deserialize)]
9425pub struct CTMeasureGroup {
9426    #[serde(rename = "@name")]
9427    pub name: XmlString,
9428    #[serde(rename = "@caption")]
9429    pub caption: XmlString,
9430    /// Unknown attributes captured for roundtrip fidelity.
9431    #[cfg(feature = "extra-attrs")]
9432    #[serde(skip)]
9433    #[cfg(feature = "extra-attrs")]
9434    #[serde(default)]
9435    #[cfg(feature = "extra-attrs")]
9436    pub extra_attrs: std::collections::HashMap<String, String>,
9437}
9438
9439#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9440pub struct CTMeasureDimensionMap {
9441    #[serde(rename = "@measureGroup")]
9442    #[serde(default, skip_serializing_if = "Option::is_none")]
9443    pub measure_group: Option<u32>,
9444    #[serde(rename = "@dimension")]
9445    #[serde(default, skip_serializing_if = "Option::is_none")]
9446    pub dimension: Option<u32>,
9447    /// Unknown attributes captured for roundtrip fidelity.
9448    #[cfg(feature = "extra-attrs")]
9449    #[serde(skip)]
9450    #[cfg(feature = "extra-attrs")]
9451    #[serde(default)]
9452    #[cfg(feature = "extra-attrs")]
9453    pub extra_attrs: std::collections::HashMap<String, String>,
9454}
9455
9456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9457pub struct CTPivotTableStyle {
9458    #[serde(rename = "@name")]
9459    #[serde(default, skip_serializing_if = "Option::is_none")]
9460    pub name: Option<String>,
9461    #[serde(rename = "@showRowHeaders")]
9462    #[serde(
9463        default,
9464        skip_serializing_if = "Option::is_none",
9465        with = "ooxml_xml::ooxml_bool"
9466    )]
9467    pub show_row_headers: Option<bool>,
9468    #[serde(rename = "@showColHeaders")]
9469    #[serde(
9470        default,
9471        skip_serializing_if = "Option::is_none",
9472        with = "ooxml_xml::ooxml_bool"
9473    )]
9474    pub show_col_headers: Option<bool>,
9475    #[serde(rename = "@showRowStripes")]
9476    #[serde(
9477        default,
9478        skip_serializing_if = "Option::is_none",
9479        with = "ooxml_xml::ooxml_bool"
9480    )]
9481    pub show_row_stripes: Option<bool>,
9482    #[serde(rename = "@showColStripes")]
9483    #[serde(
9484        default,
9485        skip_serializing_if = "Option::is_none",
9486        with = "ooxml_xml::ooxml_bool"
9487    )]
9488    pub show_col_stripes: Option<bool>,
9489    #[serde(rename = "@showLastColumn")]
9490    #[serde(
9491        default,
9492        skip_serializing_if = "Option::is_none",
9493        with = "ooxml_xml::ooxml_bool"
9494    )]
9495    pub show_last_column: Option<bool>,
9496    /// Unknown attributes captured for roundtrip fidelity.
9497    #[cfg(feature = "extra-attrs")]
9498    #[serde(skip)]
9499    #[cfg(feature = "extra-attrs")]
9500    #[serde(default)]
9501    #[cfg(feature = "extra-attrs")]
9502    pub extra_attrs: std::collections::HashMap<String, String>,
9503}
9504
9505#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9506pub struct PivotFilters {
9507    #[serde(rename = "@count")]
9508    #[serde(default, skip_serializing_if = "Option::is_none")]
9509    pub count: Option<u32>,
9510    #[serde(rename = "filter")]
9511    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9512    pub filter: Vec<PivotFilter>,
9513    /// Unknown attributes captured for roundtrip fidelity.
9514    #[cfg(feature = "extra-attrs")]
9515    #[serde(skip)]
9516    #[cfg(feature = "extra-attrs")]
9517    #[serde(default)]
9518    #[cfg(feature = "extra-attrs")]
9519    pub extra_attrs: std::collections::HashMap<String, String>,
9520    /// Unknown child elements captured for roundtrip fidelity.
9521    #[cfg(feature = "extra-children")]
9522    #[serde(skip)]
9523    #[cfg(feature = "extra-children")]
9524    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9525}
9526
9527#[derive(Debug, Clone, Serialize, Deserialize)]
9528pub struct PivotFilter {
9529    #[serde(rename = "@fld")]
9530    pub fld: u32,
9531    #[serde(rename = "@mpFld")]
9532    #[serde(default, skip_serializing_if = "Option::is_none")]
9533    pub mp_fld: Option<u32>,
9534    #[serde(rename = "@type")]
9535    pub r#type: STPivotFilterType,
9536    #[serde(rename = "@evalOrder")]
9537    #[serde(default, skip_serializing_if = "Option::is_none")]
9538    pub eval_order: Option<i32>,
9539    #[serde(rename = "@id")]
9540    pub id: u32,
9541    #[serde(rename = "@iMeasureHier")]
9542    #[serde(default, skip_serializing_if = "Option::is_none")]
9543    pub i_measure_hier: Option<u32>,
9544    #[serde(rename = "@iMeasureFld")]
9545    #[serde(default, skip_serializing_if = "Option::is_none")]
9546    pub i_measure_fld: Option<u32>,
9547    #[serde(rename = "@name")]
9548    #[serde(default, skip_serializing_if = "Option::is_none")]
9549    pub name: Option<XmlString>,
9550    #[serde(rename = "@description")]
9551    #[serde(default, skip_serializing_if = "Option::is_none")]
9552    pub description: Option<XmlString>,
9553    #[serde(rename = "@stringValue1")]
9554    #[serde(default, skip_serializing_if = "Option::is_none")]
9555    pub string_value1: Option<XmlString>,
9556    #[serde(rename = "@stringValue2")]
9557    #[serde(default, skip_serializing_if = "Option::is_none")]
9558    pub string_value2: Option<XmlString>,
9559    #[serde(rename = "autoFilter")]
9560    pub auto_filter: Box<AutoFilter>,
9561    #[serde(rename = "extLst")]
9562    #[serde(default, skip_serializing_if = "Option::is_none")]
9563    pub extension_list: Option<Box<ExtensionList>>,
9564    /// Unknown attributes captured for roundtrip fidelity.
9565    #[cfg(feature = "extra-attrs")]
9566    #[serde(skip)]
9567    #[cfg(feature = "extra-attrs")]
9568    #[serde(default)]
9569    #[cfg(feature = "extra-attrs")]
9570    pub extra_attrs: std::collections::HashMap<String, String>,
9571    /// Unknown child elements captured for roundtrip fidelity.
9572    #[cfg(feature = "extra-children")]
9573    #[serde(skip)]
9574    #[cfg(feature = "extra-children")]
9575    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9576}
9577
9578#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9579pub struct PivotArea {
9580    #[serde(rename = "@field")]
9581    #[serde(default, skip_serializing_if = "Option::is_none")]
9582    pub field: Option<i32>,
9583    #[serde(rename = "@type")]
9584    #[serde(default, skip_serializing_if = "Option::is_none")]
9585    pub r#type: Option<STPivotAreaType>,
9586    #[serde(rename = "@dataOnly")]
9587    #[serde(
9588        default,
9589        skip_serializing_if = "Option::is_none",
9590        with = "ooxml_xml::ooxml_bool"
9591    )]
9592    pub data_only: Option<bool>,
9593    #[serde(rename = "@labelOnly")]
9594    #[serde(
9595        default,
9596        skip_serializing_if = "Option::is_none",
9597        with = "ooxml_xml::ooxml_bool"
9598    )]
9599    pub label_only: Option<bool>,
9600    #[serde(rename = "@grandRow")]
9601    #[serde(
9602        default,
9603        skip_serializing_if = "Option::is_none",
9604        with = "ooxml_xml::ooxml_bool"
9605    )]
9606    pub grand_row: Option<bool>,
9607    #[serde(rename = "@grandCol")]
9608    #[serde(
9609        default,
9610        skip_serializing_if = "Option::is_none",
9611        with = "ooxml_xml::ooxml_bool"
9612    )]
9613    pub grand_col: Option<bool>,
9614    #[serde(rename = "@cacheIndex")]
9615    #[serde(
9616        default,
9617        skip_serializing_if = "Option::is_none",
9618        with = "ooxml_xml::ooxml_bool"
9619    )]
9620    pub cache_index: Option<bool>,
9621    #[serde(rename = "@outline")]
9622    #[serde(
9623        default,
9624        skip_serializing_if = "Option::is_none",
9625        with = "ooxml_xml::ooxml_bool"
9626    )]
9627    pub outline: Option<bool>,
9628    #[serde(rename = "@offset")]
9629    #[serde(default, skip_serializing_if = "Option::is_none")]
9630    pub offset: Option<Reference>,
9631    #[serde(rename = "@collapsedLevelsAreSubtotals")]
9632    #[serde(
9633        default,
9634        skip_serializing_if = "Option::is_none",
9635        with = "ooxml_xml::ooxml_bool"
9636    )]
9637    pub collapsed_levels_are_subtotals: Option<bool>,
9638    #[serde(rename = "@axis")]
9639    #[serde(default, skip_serializing_if = "Option::is_none")]
9640    pub axis: Option<STAxis>,
9641    #[serde(rename = "@fieldPosition")]
9642    #[serde(default, skip_serializing_if = "Option::is_none")]
9643    pub field_position: Option<u32>,
9644    #[serde(rename = "references")]
9645    #[serde(default, skip_serializing_if = "Option::is_none")]
9646    pub references: Option<Box<CTPivotAreaReferences>>,
9647    #[serde(rename = "extLst")]
9648    #[serde(default, skip_serializing_if = "Option::is_none")]
9649    pub extension_list: Option<Box<ExtensionList>>,
9650    /// Unknown attributes captured for roundtrip fidelity.
9651    #[cfg(feature = "extra-attrs")]
9652    #[serde(skip)]
9653    #[cfg(feature = "extra-attrs")]
9654    #[serde(default)]
9655    #[cfg(feature = "extra-attrs")]
9656    pub extra_attrs: std::collections::HashMap<String, String>,
9657    /// Unknown child elements captured for roundtrip fidelity.
9658    #[cfg(feature = "extra-children")]
9659    #[serde(skip)]
9660    #[cfg(feature = "extra-children")]
9661    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9662}
9663
9664#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9665pub struct CTPivotAreaReferences {
9666    #[serde(rename = "@count")]
9667    #[serde(default, skip_serializing_if = "Option::is_none")]
9668    pub count: Option<u32>,
9669    #[serde(rename = "reference")]
9670    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9671    pub reference: Vec<CTPivotAreaReference>,
9672    /// Unknown attributes captured for roundtrip fidelity.
9673    #[cfg(feature = "extra-attrs")]
9674    #[serde(skip)]
9675    #[cfg(feature = "extra-attrs")]
9676    #[serde(default)]
9677    #[cfg(feature = "extra-attrs")]
9678    pub extra_attrs: std::collections::HashMap<String, String>,
9679    /// Unknown child elements captured for roundtrip fidelity.
9680    #[cfg(feature = "extra-children")]
9681    #[serde(skip)]
9682    #[cfg(feature = "extra-children")]
9683    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9684}
9685
9686#[derive(Debug, Clone, Default, Serialize, Deserialize)]
9687pub struct CTPivotAreaReference {
9688    #[serde(rename = "@field")]
9689    #[serde(default, skip_serializing_if = "Option::is_none")]
9690    pub field: Option<u32>,
9691    #[serde(rename = "@count")]
9692    #[serde(default, skip_serializing_if = "Option::is_none")]
9693    pub count: Option<u32>,
9694    #[serde(rename = "@selected")]
9695    #[serde(
9696        default,
9697        skip_serializing_if = "Option::is_none",
9698        with = "ooxml_xml::ooxml_bool"
9699    )]
9700    pub selected: Option<bool>,
9701    #[serde(rename = "@byPosition")]
9702    #[serde(
9703        default,
9704        skip_serializing_if = "Option::is_none",
9705        with = "ooxml_xml::ooxml_bool"
9706    )]
9707    pub by_position: Option<bool>,
9708    #[serde(rename = "@relative")]
9709    #[serde(
9710        default,
9711        skip_serializing_if = "Option::is_none",
9712        with = "ooxml_xml::ooxml_bool"
9713    )]
9714    pub relative: Option<bool>,
9715    #[serde(rename = "@defaultSubtotal")]
9716    #[serde(
9717        default,
9718        skip_serializing_if = "Option::is_none",
9719        with = "ooxml_xml::ooxml_bool"
9720    )]
9721    pub default_subtotal: Option<bool>,
9722    #[serde(rename = "@sumSubtotal")]
9723    #[serde(
9724        default,
9725        skip_serializing_if = "Option::is_none",
9726        with = "ooxml_xml::ooxml_bool"
9727    )]
9728    pub sum_subtotal: Option<bool>,
9729    #[serde(rename = "@countASubtotal")]
9730    #[serde(
9731        default,
9732        skip_serializing_if = "Option::is_none",
9733        with = "ooxml_xml::ooxml_bool"
9734    )]
9735    pub count_a_subtotal: Option<bool>,
9736    #[serde(rename = "@avgSubtotal")]
9737    #[serde(
9738        default,
9739        skip_serializing_if = "Option::is_none",
9740        with = "ooxml_xml::ooxml_bool"
9741    )]
9742    pub avg_subtotal: Option<bool>,
9743    #[serde(rename = "@maxSubtotal")]
9744    #[serde(
9745        default,
9746        skip_serializing_if = "Option::is_none",
9747        with = "ooxml_xml::ooxml_bool"
9748    )]
9749    pub max_subtotal: Option<bool>,
9750    #[serde(rename = "@minSubtotal")]
9751    #[serde(
9752        default,
9753        skip_serializing_if = "Option::is_none",
9754        with = "ooxml_xml::ooxml_bool"
9755    )]
9756    pub min_subtotal: Option<bool>,
9757    #[serde(rename = "@productSubtotal")]
9758    #[serde(
9759        default,
9760        skip_serializing_if = "Option::is_none",
9761        with = "ooxml_xml::ooxml_bool"
9762    )]
9763    pub product_subtotal: Option<bool>,
9764    #[serde(rename = "@countSubtotal")]
9765    #[serde(
9766        default,
9767        skip_serializing_if = "Option::is_none",
9768        with = "ooxml_xml::ooxml_bool"
9769    )]
9770    pub count_subtotal: Option<bool>,
9771    #[serde(rename = "@stdDevSubtotal")]
9772    #[serde(
9773        default,
9774        skip_serializing_if = "Option::is_none",
9775        with = "ooxml_xml::ooxml_bool"
9776    )]
9777    pub std_dev_subtotal: Option<bool>,
9778    #[serde(rename = "@stdDevPSubtotal")]
9779    #[serde(
9780        default,
9781        skip_serializing_if = "Option::is_none",
9782        with = "ooxml_xml::ooxml_bool"
9783    )]
9784    pub std_dev_p_subtotal: Option<bool>,
9785    #[serde(rename = "@varSubtotal")]
9786    #[serde(
9787        default,
9788        skip_serializing_if = "Option::is_none",
9789        with = "ooxml_xml::ooxml_bool"
9790    )]
9791    pub var_subtotal: Option<bool>,
9792    #[serde(rename = "@varPSubtotal")]
9793    #[serde(
9794        default,
9795        skip_serializing_if = "Option::is_none",
9796        with = "ooxml_xml::ooxml_bool"
9797    )]
9798    pub var_p_subtotal: Option<bool>,
9799    #[serde(rename = "x")]
9800    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9801    pub x: Vec<CTIndex>,
9802    #[serde(rename = "extLst")]
9803    #[serde(default, skip_serializing_if = "Option::is_none")]
9804    pub extension_list: Option<Box<ExtensionList>>,
9805    /// Unknown attributes captured for roundtrip fidelity.
9806    #[cfg(feature = "extra-attrs")]
9807    #[serde(skip)]
9808    #[cfg(feature = "extra-attrs")]
9809    #[serde(default)]
9810    #[cfg(feature = "extra-attrs")]
9811    pub extra_attrs: std::collections::HashMap<String, String>,
9812    /// Unknown child elements captured for roundtrip fidelity.
9813    #[cfg(feature = "extra-children")]
9814    #[serde(skip)]
9815    #[cfg(feature = "extra-children")]
9816    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9817}
9818
9819#[derive(Debug, Clone, Serialize, Deserialize)]
9820pub struct CTIndex {
9821    #[serde(rename = "@v")]
9822    pub value: u32,
9823    /// Unknown attributes captured for roundtrip fidelity.
9824    #[cfg(feature = "extra-attrs")]
9825    #[serde(skip)]
9826    #[cfg(feature = "extra-attrs")]
9827    #[serde(default)]
9828    #[cfg(feature = "extra-attrs")]
9829    pub extra_attrs: std::collections::HashMap<String, String>,
9830}
9831
9832pub type SmlQueryTable = Box<QueryTable>;
9833
9834#[derive(Debug, Clone, Serialize, Deserialize)]
9835pub struct QueryTable {
9836    #[serde(rename = "@name")]
9837    pub name: XmlString,
9838    #[serde(rename = "@headers")]
9839    #[serde(
9840        default,
9841        skip_serializing_if = "Option::is_none",
9842        with = "ooxml_xml::ooxml_bool"
9843    )]
9844    pub headers: Option<bool>,
9845    #[serde(rename = "@rowNumbers")]
9846    #[serde(
9847        default,
9848        skip_serializing_if = "Option::is_none",
9849        with = "ooxml_xml::ooxml_bool"
9850    )]
9851    pub row_numbers: Option<bool>,
9852    #[serde(rename = "@disableRefresh")]
9853    #[serde(
9854        default,
9855        skip_serializing_if = "Option::is_none",
9856        with = "ooxml_xml::ooxml_bool"
9857    )]
9858    pub disable_refresh: Option<bool>,
9859    #[serde(rename = "@backgroundRefresh")]
9860    #[serde(
9861        default,
9862        skip_serializing_if = "Option::is_none",
9863        with = "ooxml_xml::ooxml_bool"
9864    )]
9865    pub background_refresh: Option<bool>,
9866    #[serde(rename = "@firstBackgroundRefresh")]
9867    #[serde(
9868        default,
9869        skip_serializing_if = "Option::is_none",
9870        with = "ooxml_xml::ooxml_bool"
9871    )]
9872    pub first_background_refresh: Option<bool>,
9873    #[serde(rename = "@refreshOnLoad")]
9874    #[serde(
9875        default,
9876        skip_serializing_if = "Option::is_none",
9877        with = "ooxml_xml::ooxml_bool"
9878    )]
9879    pub refresh_on_load: Option<bool>,
9880    #[serde(rename = "@growShrinkType")]
9881    #[serde(default, skip_serializing_if = "Option::is_none")]
9882    pub grow_shrink_type: Option<STGrowShrinkType>,
9883    #[serde(rename = "@fillFormulas")]
9884    #[serde(
9885        default,
9886        skip_serializing_if = "Option::is_none",
9887        with = "ooxml_xml::ooxml_bool"
9888    )]
9889    pub fill_formulas: Option<bool>,
9890    #[serde(rename = "@removeDataOnSave")]
9891    #[serde(
9892        default,
9893        skip_serializing_if = "Option::is_none",
9894        with = "ooxml_xml::ooxml_bool"
9895    )]
9896    pub remove_data_on_save: Option<bool>,
9897    #[serde(rename = "@disableEdit")]
9898    #[serde(
9899        default,
9900        skip_serializing_if = "Option::is_none",
9901        with = "ooxml_xml::ooxml_bool"
9902    )]
9903    pub disable_edit: Option<bool>,
9904    #[serde(rename = "@preserveFormatting")]
9905    #[serde(
9906        default,
9907        skip_serializing_if = "Option::is_none",
9908        with = "ooxml_xml::ooxml_bool"
9909    )]
9910    pub preserve_formatting: Option<bool>,
9911    #[serde(rename = "@adjustColumnWidth")]
9912    #[serde(
9913        default,
9914        skip_serializing_if = "Option::is_none",
9915        with = "ooxml_xml::ooxml_bool"
9916    )]
9917    pub adjust_column_width: Option<bool>,
9918    #[serde(rename = "@intermediate")]
9919    #[serde(
9920        default,
9921        skip_serializing_if = "Option::is_none",
9922        with = "ooxml_xml::ooxml_bool"
9923    )]
9924    pub intermediate: Option<bool>,
9925    #[serde(rename = "@connectionId")]
9926    pub connection_id: u32,
9927    #[serde(rename = "@autoFormatId")]
9928    #[serde(default, skip_serializing_if = "Option::is_none")]
9929    pub auto_format_id: Option<u32>,
9930    #[serde(rename = "@applyNumberFormats")]
9931    #[serde(
9932        default,
9933        skip_serializing_if = "Option::is_none",
9934        with = "ooxml_xml::ooxml_bool"
9935    )]
9936    pub apply_number_formats: Option<bool>,
9937    #[serde(rename = "@applyBorderFormats")]
9938    #[serde(
9939        default,
9940        skip_serializing_if = "Option::is_none",
9941        with = "ooxml_xml::ooxml_bool"
9942    )]
9943    pub apply_border_formats: Option<bool>,
9944    #[serde(rename = "@applyFontFormats")]
9945    #[serde(
9946        default,
9947        skip_serializing_if = "Option::is_none",
9948        with = "ooxml_xml::ooxml_bool"
9949    )]
9950    pub apply_font_formats: Option<bool>,
9951    #[serde(rename = "@applyPatternFormats")]
9952    #[serde(
9953        default,
9954        skip_serializing_if = "Option::is_none",
9955        with = "ooxml_xml::ooxml_bool"
9956    )]
9957    pub apply_pattern_formats: Option<bool>,
9958    #[serde(rename = "@applyAlignmentFormats")]
9959    #[serde(
9960        default,
9961        skip_serializing_if = "Option::is_none",
9962        with = "ooxml_xml::ooxml_bool"
9963    )]
9964    pub apply_alignment_formats: Option<bool>,
9965    #[serde(rename = "@applyWidthHeightFormats")]
9966    #[serde(
9967        default,
9968        skip_serializing_if = "Option::is_none",
9969        with = "ooxml_xml::ooxml_bool"
9970    )]
9971    pub apply_width_height_formats: Option<bool>,
9972    #[serde(rename = "queryTableRefresh")]
9973    #[serde(default, skip_serializing_if = "Option::is_none")]
9974    pub query_table_refresh: Option<Box<QueryTableRefresh>>,
9975    #[serde(rename = "extLst")]
9976    #[serde(default, skip_serializing_if = "Option::is_none")]
9977    pub extension_list: Option<Box<ExtensionList>>,
9978    /// Unknown attributes captured for roundtrip fidelity.
9979    #[cfg(feature = "extra-attrs")]
9980    #[serde(skip)]
9981    #[cfg(feature = "extra-attrs")]
9982    #[serde(default)]
9983    #[cfg(feature = "extra-attrs")]
9984    pub extra_attrs: std::collections::HashMap<String, String>,
9985    /// Unknown child elements captured for roundtrip fidelity.
9986    #[cfg(feature = "extra-children")]
9987    #[serde(skip)]
9988    #[cfg(feature = "extra-children")]
9989    pub extra_children: Vec<ooxml_xml::PositionedNode>,
9990}
9991
9992#[derive(Debug, Clone, Serialize, Deserialize)]
9993pub struct QueryTableRefresh {
9994    #[serde(rename = "@preserveSortFilterLayout")]
9995    #[serde(
9996        default,
9997        skip_serializing_if = "Option::is_none",
9998        with = "ooxml_xml::ooxml_bool"
9999    )]
10000    pub preserve_sort_filter_layout: Option<bool>,
10001    #[serde(rename = "@fieldIdWrapped")]
10002    #[serde(
10003        default,
10004        skip_serializing_if = "Option::is_none",
10005        with = "ooxml_xml::ooxml_bool"
10006    )]
10007    pub field_id_wrapped: Option<bool>,
10008    #[serde(rename = "@headersInLastRefresh")]
10009    #[serde(
10010        default,
10011        skip_serializing_if = "Option::is_none",
10012        with = "ooxml_xml::ooxml_bool"
10013    )]
10014    pub headers_in_last_refresh: Option<bool>,
10015    #[serde(rename = "@minimumVersion")]
10016    #[serde(default, skip_serializing_if = "Option::is_none")]
10017    pub minimum_version: Option<u8>,
10018    #[serde(rename = "@nextId")]
10019    #[serde(default, skip_serializing_if = "Option::is_none")]
10020    pub next_id: Option<u32>,
10021    #[serde(rename = "@unboundColumnsLeft")]
10022    #[serde(default, skip_serializing_if = "Option::is_none")]
10023    pub unbound_columns_left: Option<u32>,
10024    #[serde(rename = "@unboundColumnsRight")]
10025    #[serde(default, skip_serializing_if = "Option::is_none")]
10026    pub unbound_columns_right: Option<u32>,
10027    #[serde(rename = "queryTableFields")]
10028    pub query_table_fields: Box<QueryTableFields>,
10029    #[serde(rename = "queryTableDeletedFields")]
10030    #[serde(default, skip_serializing_if = "Option::is_none")]
10031    pub query_table_deleted_fields: Option<Box<QueryTableDeletedFields>>,
10032    #[serde(rename = "sortState")]
10033    #[serde(default, skip_serializing_if = "Option::is_none")]
10034    pub sort_state: Option<Box<SortState>>,
10035    #[serde(rename = "extLst")]
10036    #[serde(default, skip_serializing_if = "Option::is_none")]
10037    pub extension_list: Option<Box<ExtensionList>>,
10038    /// Unknown attributes captured for roundtrip fidelity.
10039    #[cfg(feature = "extra-attrs")]
10040    #[serde(skip)]
10041    #[cfg(feature = "extra-attrs")]
10042    #[serde(default)]
10043    #[cfg(feature = "extra-attrs")]
10044    pub extra_attrs: std::collections::HashMap<String, String>,
10045    /// Unknown child elements captured for roundtrip fidelity.
10046    #[cfg(feature = "extra-children")]
10047    #[serde(skip)]
10048    #[cfg(feature = "extra-children")]
10049    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10050}
10051
10052#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10053pub struct QueryTableDeletedFields {
10054    #[serde(rename = "@count")]
10055    #[serde(default, skip_serializing_if = "Option::is_none")]
10056    pub count: Option<u32>,
10057    #[serde(rename = "deletedField")]
10058    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10059    pub deleted_field: Vec<CTDeletedField>,
10060    /// Unknown attributes captured for roundtrip fidelity.
10061    #[cfg(feature = "extra-attrs")]
10062    #[serde(skip)]
10063    #[cfg(feature = "extra-attrs")]
10064    #[serde(default)]
10065    #[cfg(feature = "extra-attrs")]
10066    pub extra_attrs: std::collections::HashMap<String, String>,
10067    /// Unknown child elements captured for roundtrip fidelity.
10068    #[cfg(feature = "extra-children")]
10069    #[serde(skip)]
10070    #[cfg(feature = "extra-children")]
10071    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10072}
10073
10074#[derive(Debug, Clone, Serialize, Deserialize)]
10075pub struct CTDeletedField {
10076    #[serde(rename = "@name")]
10077    pub name: XmlString,
10078    /// Unknown attributes captured for roundtrip fidelity.
10079    #[cfg(feature = "extra-attrs")]
10080    #[serde(skip)]
10081    #[cfg(feature = "extra-attrs")]
10082    #[serde(default)]
10083    #[cfg(feature = "extra-attrs")]
10084    pub extra_attrs: std::collections::HashMap<String, String>,
10085}
10086
10087#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10088pub struct QueryTableFields {
10089    #[serde(rename = "@count")]
10090    #[serde(default, skip_serializing_if = "Option::is_none")]
10091    pub count: Option<u32>,
10092    #[serde(rename = "queryTableField")]
10093    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10094    pub query_table_field: Vec<QueryTableField>,
10095    /// Unknown attributes captured for roundtrip fidelity.
10096    #[cfg(feature = "extra-attrs")]
10097    #[serde(skip)]
10098    #[cfg(feature = "extra-attrs")]
10099    #[serde(default)]
10100    #[cfg(feature = "extra-attrs")]
10101    pub extra_attrs: std::collections::HashMap<String, String>,
10102    /// Unknown child elements captured for roundtrip fidelity.
10103    #[cfg(feature = "extra-children")]
10104    #[serde(skip)]
10105    #[cfg(feature = "extra-children")]
10106    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10107}
10108
10109#[derive(Debug, Clone, Serialize, Deserialize)]
10110pub struct QueryTableField {
10111    #[serde(rename = "@id")]
10112    pub id: u32,
10113    #[serde(rename = "@name")]
10114    #[serde(default, skip_serializing_if = "Option::is_none")]
10115    pub name: Option<XmlString>,
10116    #[serde(rename = "@dataBound")]
10117    #[serde(
10118        default,
10119        skip_serializing_if = "Option::is_none",
10120        with = "ooxml_xml::ooxml_bool"
10121    )]
10122    pub data_bound: Option<bool>,
10123    #[serde(rename = "@rowNumbers")]
10124    #[serde(
10125        default,
10126        skip_serializing_if = "Option::is_none",
10127        with = "ooxml_xml::ooxml_bool"
10128    )]
10129    pub row_numbers: Option<bool>,
10130    #[serde(rename = "@fillFormulas")]
10131    #[serde(
10132        default,
10133        skip_serializing_if = "Option::is_none",
10134        with = "ooxml_xml::ooxml_bool"
10135    )]
10136    pub fill_formulas: Option<bool>,
10137    #[serde(rename = "@clipped")]
10138    #[serde(
10139        default,
10140        skip_serializing_if = "Option::is_none",
10141        with = "ooxml_xml::ooxml_bool"
10142    )]
10143    pub clipped: Option<bool>,
10144    #[serde(rename = "@tableColumnId")]
10145    #[serde(default, skip_serializing_if = "Option::is_none")]
10146    pub table_column_id: Option<u32>,
10147    #[serde(rename = "extLst")]
10148    #[serde(default, skip_serializing_if = "Option::is_none")]
10149    pub extension_list: Option<Box<ExtensionList>>,
10150    /// Unknown attributes captured for roundtrip fidelity.
10151    #[cfg(feature = "extra-attrs")]
10152    #[serde(skip)]
10153    #[cfg(feature = "extra-attrs")]
10154    #[serde(default)]
10155    #[cfg(feature = "extra-attrs")]
10156    pub extra_attrs: std::collections::HashMap<String, String>,
10157    /// Unknown child elements captured for roundtrip fidelity.
10158    #[cfg(feature = "extra-children")]
10159    #[serde(skip)]
10160    #[cfg(feature = "extra-children")]
10161    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10162}
10163
10164pub type SmlSst = Box<SharedStrings>;
10165
10166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10167#[serde(rename = "sst")]
10168pub struct SharedStrings {
10169    #[serde(rename = "@count")]
10170    #[serde(default, skip_serializing_if = "Option::is_none")]
10171    pub count: Option<u32>,
10172    #[serde(rename = "@uniqueCount")]
10173    #[serde(default, skip_serializing_if = "Option::is_none")]
10174    pub unique_count: Option<u32>,
10175    #[serde(rename = "si")]
10176    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10177    pub si: Vec<RichString>,
10178    #[serde(rename = "extLst")]
10179    #[serde(default, skip_serializing_if = "Option::is_none")]
10180    pub extension_list: Option<Box<ExtensionList>>,
10181    /// Unknown attributes captured for roundtrip fidelity.
10182    #[cfg(feature = "extra-attrs")]
10183    #[serde(skip)]
10184    #[cfg(feature = "extra-attrs")]
10185    #[serde(default)]
10186    #[cfg(feature = "extra-attrs")]
10187    pub extra_attrs: std::collections::HashMap<String, String>,
10188    /// Unknown child elements captured for roundtrip fidelity.
10189    #[cfg(feature = "extra-children")]
10190    #[serde(skip)]
10191    #[cfg(feature = "extra-children")]
10192    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10193}
10194
10195#[derive(Debug, Clone, Serialize, Deserialize)]
10196pub struct PhoneticRun {
10197    #[serde(rename = "@sb")]
10198    pub sb: u32,
10199    #[serde(rename = "@eb")]
10200    pub eb: u32,
10201    #[serde(rename = "t")]
10202    pub cell_type: XmlString,
10203    /// Unknown attributes captured for roundtrip fidelity.
10204    #[cfg(feature = "extra-attrs")]
10205    #[serde(skip)]
10206    #[cfg(feature = "extra-attrs")]
10207    #[serde(default)]
10208    #[cfg(feature = "extra-attrs")]
10209    pub extra_attrs: std::collections::HashMap<String, String>,
10210    /// Unknown child elements captured for roundtrip fidelity.
10211    #[cfg(feature = "extra-children")]
10212    #[serde(skip)]
10213    #[cfg(feature = "extra-children")]
10214    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10215}
10216
10217#[derive(Debug, Clone, Serialize, Deserialize)]
10218#[serde(rename = "r")]
10219pub struct RichTextElement {
10220    #[serde(rename = "rPr")]
10221    #[serde(default, skip_serializing_if = "Option::is_none")]
10222    pub r_pr: Option<Box<RichTextRunProperties>>,
10223    #[serde(rename = "t")]
10224    pub cell_type: XmlString,
10225    /// Unknown child elements captured for roundtrip fidelity.
10226    #[cfg(feature = "extra-children")]
10227    #[serde(skip)]
10228    #[cfg(feature = "extra-children")]
10229    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10230}
10231
10232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10233#[serde(rename = "rPr")]
10234pub struct RichTextRunProperties {
10235    #[serde(rename = "rFont")]
10236    #[serde(default, skip_serializing_if = "Option::is_none")]
10237    pub r_font: Option<Box<FontName>>,
10238    #[serde(rename = "charset")]
10239    #[serde(default, skip_serializing_if = "Option::is_none")]
10240    pub charset: Option<Box<IntProperty>>,
10241    #[serde(rename = "family")]
10242    #[serde(default, skip_serializing_if = "Option::is_none")]
10243    pub family: Option<Box<IntProperty>>,
10244    #[serde(rename = "b")]
10245    #[serde(default, skip_serializing_if = "Option::is_none")]
10246    pub b: Option<Box<BooleanProperty>>,
10247    #[serde(rename = "i")]
10248    #[serde(default, skip_serializing_if = "Option::is_none")]
10249    pub i: Option<Box<BooleanProperty>>,
10250    #[serde(rename = "strike")]
10251    #[serde(default, skip_serializing_if = "Option::is_none")]
10252    pub strike: Option<Box<BooleanProperty>>,
10253    #[serde(rename = "outline")]
10254    #[serde(default, skip_serializing_if = "Option::is_none")]
10255    pub outline: Option<Box<BooleanProperty>>,
10256    #[serde(rename = "shadow")]
10257    #[serde(default, skip_serializing_if = "Option::is_none")]
10258    pub shadow: Option<Box<BooleanProperty>>,
10259    #[serde(rename = "condense")]
10260    #[serde(default, skip_serializing_if = "Option::is_none")]
10261    pub condense: Option<Box<BooleanProperty>>,
10262    #[serde(rename = "extend")]
10263    #[serde(default, skip_serializing_if = "Option::is_none")]
10264    pub extend: Option<Box<BooleanProperty>>,
10265    #[serde(rename = "color")]
10266    #[serde(default, skip_serializing_if = "Option::is_none")]
10267    pub color: Option<Box<Color>>,
10268    #[serde(rename = "sz")]
10269    #[serde(default, skip_serializing_if = "Option::is_none")]
10270    pub sz: Option<Box<FontSize>>,
10271    #[serde(rename = "u")]
10272    #[serde(default, skip_serializing_if = "Option::is_none")]
10273    pub u: Option<Box<UnderlineProperty>>,
10274    #[serde(rename = "vertAlign")]
10275    #[serde(default, skip_serializing_if = "Option::is_none")]
10276    pub vert_align: Option<Box<VerticalAlignFontProperty>>,
10277    #[serde(rename = "scheme")]
10278    #[serde(default, skip_serializing_if = "Option::is_none")]
10279    pub scheme: Option<Box<FontSchemeProperty>>,
10280    /// Unknown child elements captured for roundtrip fidelity.
10281    #[cfg(feature = "extra-children")]
10282    #[serde(skip)]
10283    #[cfg(feature = "extra-children")]
10284    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10285}
10286
10287#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10288#[serde(rename = "is")]
10289pub struct RichString {
10290    #[serde(rename = "t")]
10291    #[serde(default, skip_serializing_if = "Option::is_none")]
10292    pub cell_type: Option<XmlString>,
10293    #[serde(rename = "r")]
10294    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10295    pub reference: Vec<RichTextElement>,
10296    #[serde(rename = "rPh")]
10297    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10298    pub r_ph: Vec<PhoneticRun>,
10299    #[serde(rename = "phoneticPr")]
10300    #[serde(default, skip_serializing_if = "Option::is_none")]
10301    pub phonetic_pr: Option<Box<PhoneticProperties>>,
10302    /// Unknown child elements captured for roundtrip fidelity.
10303    #[cfg(feature = "extra-children")]
10304    #[serde(skip)]
10305    #[cfg(feature = "extra-children")]
10306    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10307}
10308
10309#[derive(Debug, Clone, Serialize, Deserialize)]
10310pub struct PhoneticProperties {
10311    #[serde(rename = "@fontId")]
10312    pub font_id: STFontId,
10313    #[serde(rename = "@type")]
10314    #[serde(default, skip_serializing_if = "Option::is_none")]
10315    pub r#type: Option<STPhoneticType>,
10316    #[serde(rename = "@alignment")]
10317    #[serde(default, skip_serializing_if = "Option::is_none")]
10318    pub alignment: Option<STPhoneticAlignment>,
10319    /// Unknown attributes captured for roundtrip fidelity.
10320    #[cfg(feature = "extra-attrs")]
10321    #[serde(skip)]
10322    #[cfg(feature = "extra-attrs")]
10323    #[serde(default)]
10324    #[cfg(feature = "extra-attrs")]
10325    pub extra_attrs: std::collections::HashMap<String, String>,
10326}
10327
10328pub type SmlHeaders = Box<RevisionHeaders>;
10329
10330pub type SmlRevisions = Box<Revisions>;
10331
10332#[derive(Debug, Clone, Serialize, Deserialize)]
10333pub struct RevisionHeaders {
10334    #[serde(rename = "@guid")]
10335    pub guid: Guid,
10336    #[serde(rename = "@lastGuid")]
10337    #[serde(default, skip_serializing_if = "Option::is_none")]
10338    pub last_guid: Option<Guid>,
10339    #[serde(rename = "@shared")]
10340    #[serde(
10341        default,
10342        skip_serializing_if = "Option::is_none",
10343        with = "ooxml_xml::ooxml_bool"
10344    )]
10345    pub shared: Option<bool>,
10346    #[serde(rename = "@diskRevisions")]
10347    #[serde(
10348        default,
10349        skip_serializing_if = "Option::is_none",
10350        with = "ooxml_xml::ooxml_bool"
10351    )]
10352    pub disk_revisions: Option<bool>,
10353    #[serde(rename = "@history")]
10354    #[serde(
10355        default,
10356        skip_serializing_if = "Option::is_none",
10357        with = "ooxml_xml::ooxml_bool"
10358    )]
10359    pub history: Option<bool>,
10360    #[serde(rename = "@trackRevisions")]
10361    #[serde(
10362        default,
10363        skip_serializing_if = "Option::is_none",
10364        with = "ooxml_xml::ooxml_bool"
10365    )]
10366    pub track_revisions: Option<bool>,
10367    #[serde(rename = "@exclusive")]
10368    #[serde(
10369        default,
10370        skip_serializing_if = "Option::is_none",
10371        with = "ooxml_xml::ooxml_bool"
10372    )]
10373    pub exclusive: Option<bool>,
10374    #[serde(rename = "@revisionId")]
10375    #[serde(default, skip_serializing_if = "Option::is_none")]
10376    pub revision_id: Option<u32>,
10377    #[serde(rename = "@version")]
10378    #[serde(default, skip_serializing_if = "Option::is_none")]
10379    pub version: Option<i32>,
10380    #[serde(rename = "@keepChangeHistory")]
10381    #[serde(
10382        default,
10383        skip_serializing_if = "Option::is_none",
10384        with = "ooxml_xml::ooxml_bool"
10385    )]
10386    pub keep_change_history: Option<bool>,
10387    #[serde(rename = "@protected")]
10388    #[serde(
10389        default,
10390        skip_serializing_if = "Option::is_none",
10391        with = "ooxml_xml::ooxml_bool"
10392    )]
10393    pub protected: Option<bool>,
10394    #[serde(rename = "@preserveHistory")]
10395    #[serde(default, skip_serializing_if = "Option::is_none")]
10396    pub preserve_history: Option<u32>,
10397    #[serde(rename = "header")]
10398    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10399    pub header: Vec<RevisionHeader>,
10400    /// Unknown attributes captured for roundtrip fidelity.
10401    #[cfg(feature = "extra-attrs")]
10402    #[serde(skip)]
10403    #[cfg(feature = "extra-attrs")]
10404    #[serde(default)]
10405    #[cfg(feature = "extra-attrs")]
10406    pub extra_attrs: std::collections::HashMap<String, String>,
10407    /// Unknown child elements captured for roundtrip fidelity.
10408    #[cfg(feature = "extra-children")]
10409    #[serde(skip)]
10410    #[cfg(feature = "extra-children")]
10411    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10412}
10413
10414#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10415pub struct Revisions {
10416    /// Unknown child elements captured for roundtrip fidelity.
10417    #[cfg(feature = "extra-children")]
10418    #[serde(skip)]
10419    #[cfg(feature = "extra-children")]
10420    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10421}
10422
10423#[derive(Debug, Clone, Serialize, Deserialize)]
10424pub struct SmlAGRevData {
10425    #[serde(rename = "@rId")]
10426    pub r_id: u32,
10427    #[serde(rename = "@ua")]
10428    #[serde(
10429        default,
10430        skip_serializing_if = "Option::is_none",
10431        with = "ooxml_xml::ooxml_bool"
10432    )]
10433    pub ua: Option<bool>,
10434    #[serde(rename = "@ra")]
10435    #[serde(
10436        default,
10437        skip_serializing_if = "Option::is_none",
10438        with = "ooxml_xml::ooxml_bool"
10439    )]
10440    pub ra: Option<bool>,
10441    /// Unknown attributes captured for roundtrip fidelity.
10442    #[cfg(feature = "extra-attrs")]
10443    #[serde(skip)]
10444    #[cfg(feature = "extra-attrs")]
10445    #[serde(default)]
10446    #[cfg(feature = "extra-attrs")]
10447    pub extra_attrs: std::collections::HashMap<String, String>,
10448}
10449
10450#[derive(Debug, Clone, Serialize, Deserialize)]
10451pub struct RevisionHeader {
10452    #[serde(rename = "@guid")]
10453    pub guid: Guid,
10454    #[serde(rename = "@dateTime")]
10455    pub date_time: String,
10456    #[serde(rename = "@maxSheetId")]
10457    pub max_sheet_id: u32,
10458    #[serde(rename = "@userName")]
10459    pub user_name: XmlString,
10460    #[serde(rename = "@r:id")]
10461    pub id: STRelationshipId,
10462    #[serde(rename = "@minRId")]
10463    #[serde(default, skip_serializing_if = "Option::is_none")]
10464    pub min_r_id: Option<u32>,
10465    #[serde(rename = "@maxRId")]
10466    #[serde(default, skip_serializing_if = "Option::is_none")]
10467    pub max_r_id: Option<u32>,
10468    #[serde(rename = "sheetIdMap")]
10469    pub sheet_id_map: Box<CTSheetIdMap>,
10470    #[serde(rename = "reviewedList")]
10471    #[serde(default, skip_serializing_if = "Option::is_none")]
10472    pub reviewed_list: Option<Box<ReviewedRevisions>>,
10473    #[serde(rename = "extLst")]
10474    #[serde(default, skip_serializing_if = "Option::is_none")]
10475    pub extension_list: Option<Box<ExtensionList>>,
10476    /// Unknown attributes captured for roundtrip fidelity.
10477    #[cfg(feature = "extra-attrs")]
10478    #[serde(skip)]
10479    #[cfg(feature = "extra-attrs")]
10480    #[serde(default)]
10481    #[cfg(feature = "extra-attrs")]
10482    pub extra_attrs: std::collections::HashMap<String, String>,
10483    /// Unknown child elements captured for roundtrip fidelity.
10484    #[cfg(feature = "extra-children")]
10485    #[serde(skip)]
10486    #[cfg(feature = "extra-children")]
10487    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10488}
10489
10490#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10491pub struct CTSheetIdMap {
10492    #[serde(rename = "@count")]
10493    #[serde(default, skip_serializing_if = "Option::is_none")]
10494    pub count: Option<u32>,
10495    #[serde(rename = "sheetId")]
10496    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10497    pub sheet_id: Vec<CTSheetId>,
10498    /// Unknown attributes captured for roundtrip fidelity.
10499    #[cfg(feature = "extra-attrs")]
10500    #[serde(skip)]
10501    #[cfg(feature = "extra-attrs")]
10502    #[serde(default)]
10503    #[cfg(feature = "extra-attrs")]
10504    pub extra_attrs: std::collections::HashMap<String, String>,
10505    /// Unknown child elements captured for roundtrip fidelity.
10506    #[cfg(feature = "extra-children")]
10507    #[serde(skip)]
10508    #[cfg(feature = "extra-children")]
10509    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10510}
10511
10512#[derive(Debug, Clone, Serialize, Deserialize)]
10513pub struct CTSheetId {
10514    #[serde(rename = "@val")]
10515    pub value: u32,
10516    /// Unknown attributes captured for roundtrip fidelity.
10517    #[cfg(feature = "extra-attrs")]
10518    #[serde(skip)]
10519    #[cfg(feature = "extra-attrs")]
10520    #[serde(default)]
10521    #[cfg(feature = "extra-attrs")]
10522    pub extra_attrs: std::collections::HashMap<String, String>,
10523}
10524
10525#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10526pub struct ReviewedRevisions {
10527    #[serde(rename = "@count")]
10528    #[serde(default, skip_serializing_if = "Option::is_none")]
10529    pub count: Option<u32>,
10530    #[serde(rename = "reviewed")]
10531    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10532    pub reviewed: Vec<Reviewed>,
10533    /// Unknown attributes captured for roundtrip fidelity.
10534    #[cfg(feature = "extra-attrs")]
10535    #[serde(skip)]
10536    #[cfg(feature = "extra-attrs")]
10537    #[serde(default)]
10538    #[cfg(feature = "extra-attrs")]
10539    pub extra_attrs: std::collections::HashMap<String, String>,
10540    /// Unknown child elements captured for roundtrip fidelity.
10541    #[cfg(feature = "extra-children")]
10542    #[serde(skip)]
10543    #[cfg(feature = "extra-children")]
10544    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10545}
10546
10547#[derive(Debug, Clone, Serialize, Deserialize)]
10548pub struct Reviewed {
10549    #[serde(rename = "@rId")]
10550    pub r_id: u32,
10551    /// Unknown attributes captured for roundtrip fidelity.
10552    #[cfg(feature = "extra-attrs")]
10553    #[serde(skip)]
10554    #[cfg(feature = "extra-attrs")]
10555    #[serde(default)]
10556    #[cfg(feature = "extra-attrs")]
10557    pub extra_attrs: std::collections::HashMap<String, String>,
10558}
10559
10560#[derive(Debug, Clone, Serialize, Deserialize)]
10561pub struct UndoInfo {
10562    #[serde(rename = "@index")]
10563    pub index: u32,
10564    #[serde(rename = "@exp")]
10565    pub exp: STFormulaExpression,
10566    #[serde(rename = "@ref3D")]
10567    #[serde(
10568        default,
10569        skip_serializing_if = "Option::is_none",
10570        with = "ooxml_xml::ooxml_bool"
10571    )]
10572    pub ref3_d: Option<bool>,
10573    #[serde(rename = "@array")]
10574    #[serde(
10575        default,
10576        skip_serializing_if = "Option::is_none",
10577        with = "ooxml_xml::ooxml_bool"
10578    )]
10579    pub array: Option<bool>,
10580    #[serde(rename = "@v")]
10581    #[serde(
10582        default,
10583        skip_serializing_if = "Option::is_none",
10584        with = "ooxml_xml::ooxml_bool"
10585    )]
10586    pub value: Option<bool>,
10587    #[serde(rename = "@nf")]
10588    #[serde(
10589        default,
10590        skip_serializing_if = "Option::is_none",
10591        with = "ooxml_xml::ooxml_bool"
10592    )]
10593    pub nf: Option<bool>,
10594    #[serde(rename = "@cs")]
10595    #[serde(
10596        default,
10597        skip_serializing_if = "Option::is_none",
10598        with = "ooxml_xml::ooxml_bool"
10599    )]
10600    pub cs: Option<bool>,
10601    #[serde(rename = "@dr")]
10602    pub dr: STRefA,
10603    #[serde(rename = "@dn")]
10604    #[serde(default, skip_serializing_if = "Option::is_none")]
10605    pub dn: Option<XmlString>,
10606    #[serde(rename = "@r")]
10607    #[serde(default, skip_serializing_if = "Option::is_none")]
10608    pub reference: Option<CellRef>,
10609    #[serde(rename = "@sId")]
10610    #[serde(default, skip_serializing_if = "Option::is_none")]
10611    pub s_id: Option<u32>,
10612    /// Unknown attributes captured for roundtrip fidelity.
10613    #[cfg(feature = "extra-attrs")]
10614    #[serde(skip)]
10615    #[cfg(feature = "extra-attrs")]
10616    #[serde(default)]
10617    #[cfg(feature = "extra-attrs")]
10618    pub extra_attrs: std::collections::HashMap<String, String>,
10619}
10620
10621#[derive(Debug, Clone, Serialize, Deserialize)]
10622pub struct RevisionRowColumn {
10623    #[serde(rename = "@rId")]
10624    pub r_id: u32,
10625    #[serde(rename = "@ua")]
10626    #[serde(
10627        default,
10628        skip_serializing_if = "Option::is_none",
10629        with = "ooxml_xml::ooxml_bool"
10630    )]
10631    pub ua: Option<bool>,
10632    #[serde(rename = "@ra")]
10633    #[serde(
10634        default,
10635        skip_serializing_if = "Option::is_none",
10636        with = "ooxml_xml::ooxml_bool"
10637    )]
10638    pub ra: Option<bool>,
10639    #[serde(rename = "@sId")]
10640    pub s_id: u32,
10641    #[serde(rename = "@eol")]
10642    #[serde(
10643        default,
10644        skip_serializing_if = "Option::is_none",
10645        with = "ooxml_xml::ooxml_bool"
10646    )]
10647    pub eol: Option<bool>,
10648    #[serde(rename = "@ref")]
10649    pub reference: Reference,
10650    #[serde(rename = "@action")]
10651    pub action: STRwColActionType,
10652    #[serde(rename = "@edge")]
10653    #[serde(
10654        default,
10655        skip_serializing_if = "Option::is_none",
10656        with = "ooxml_xml::ooxml_bool"
10657    )]
10658    pub edge: Option<bool>,
10659    /// Unknown attributes captured for roundtrip fidelity.
10660    #[cfg(feature = "extra-attrs")]
10661    #[serde(skip)]
10662    #[cfg(feature = "extra-attrs")]
10663    #[serde(default)]
10664    #[cfg(feature = "extra-attrs")]
10665    pub extra_attrs: std::collections::HashMap<String, String>,
10666}
10667
10668#[derive(Debug, Clone, Serialize, Deserialize)]
10669pub struct RevisionMove {
10670    #[serde(rename = "@rId")]
10671    pub r_id: u32,
10672    #[serde(rename = "@ua")]
10673    #[serde(
10674        default,
10675        skip_serializing_if = "Option::is_none",
10676        with = "ooxml_xml::ooxml_bool"
10677    )]
10678    pub ua: Option<bool>,
10679    #[serde(rename = "@ra")]
10680    #[serde(
10681        default,
10682        skip_serializing_if = "Option::is_none",
10683        with = "ooxml_xml::ooxml_bool"
10684    )]
10685    pub ra: Option<bool>,
10686    #[serde(rename = "@sheetId")]
10687    pub sheet_id: u32,
10688    #[serde(rename = "@source")]
10689    pub source: Reference,
10690    #[serde(rename = "@destination")]
10691    pub destination: Reference,
10692    #[serde(rename = "@sourceSheetId")]
10693    #[serde(default, skip_serializing_if = "Option::is_none")]
10694    pub source_sheet_id: Option<u32>,
10695    /// Unknown attributes captured for roundtrip fidelity.
10696    #[cfg(feature = "extra-attrs")]
10697    #[serde(skip)]
10698    #[cfg(feature = "extra-attrs")]
10699    #[serde(default)]
10700    #[cfg(feature = "extra-attrs")]
10701    pub extra_attrs: std::collections::HashMap<String, String>,
10702}
10703
10704#[derive(Debug, Clone, Serialize, Deserialize)]
10705pub struct RevisionCustomView {
10706    #[serde(rename = "@guid")]
10707    pub guid: Guid,
10708    #[serde(rename = "@action")]
10709    pub action: STRevisionAction,
10710    /// Unknown attributes captured for roundtrip fidelity.
10711    #[cfg(feature = "extra-attrs")]
10712    #[serde(skip)]
10713    #[cfg(feature = "extra-attrs")]
10714    #[serde(default)]
10715    #[cfg(feature = "extra-attrs")]
10716    pub extra_attrs: std::collections::HashMap<String, String>,
10717}
10718
10719#[derive(Debug, Clone, Serialize, Deserialize)]
10720pub struct RevisionSheetRename {
10721    #[serde(rename = "@rId")]
10722    pub r_id: u32,
10723    #[serde(rename = "@ua")]
10724    #[serde(
10725        default,
10726        skip_serializing_if = "Option::is_none",
10727        with = "ooxml_xml::ooxml_bool"
10728    )]
10729    pub ua: Option<bool>,
10730    #[serde(rename = "@ra")]
10731    #[serde(
10732        default,
10733        skip_serializing_if = "Option::is_none",
10734        with = "ooxml_xml::ooxml_bool"
10735    )]
10736    pub ra: Option<bool>,
10737    #[serde(rename = "@sheetId")]
10738    pub sheet_id: u32,
10739    #[serde(rename = "@oldName")]
10740    pub old_name: XmlString,
10741    #[serde(rename = "@newName")]
10742    pub new_name: XmlString,
10743    #[serde(rename = "extLst")]
10744    #[serde(default, skip_serializing_if = "Option::is_none")]
10745    pub extension_list: Option<Box<ExtensionList>>,
10746    /// Unknown attributes captured for roundtrip fidelity.
10747    #[cfg(feature = "extra-attrs")]
10748    #[serde(skip)]
10749    #[cfg(feature = "extra-attrs")]
10750    #[serde(default)]
10751    #[cfg(feature = "extra-attrs")]
10752    pub extra_attrs: std::collections::HashMap<String, String>,
10753    /// Unknown child elements captured for roundtrip fidelity.
10754    #[cfg(feature = "extra-children")]
10755    #[serde(skip)]
10756    #[cfg(feature = "extra-children")]
10757    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10758}
10759
10760#[derive(Debug, Clone, Serialize, Deserialize)]
10761pub struct RevisionInsertSheet {
10762    #[serde(rename = "@rId")]
10763    pub r_id: u32,
10764    #[serde(rename = "@ua")]
10765    #[serde(
10766        default,
10767        skip_serializing_if = "Option::is_none",
10768        with = "ooxml_xml::ooxml_bool"
10769    )]
10770    pub ua: Option<bool>,
10771    #[serde(rename = "@ra")]
10772    #[serde(
10773        default,
10774        skip_serializing_if = "Option::is_none",
10775        with = "ooxml_xml::ooxml_bool"
10776    )]
10777    pub ra: Option<bool>,
10778    #[serde(rename = "@sheetId")]
10779    pub sheet_id: u32,
10780    #[serde(rename = "@name")]
10781    pub name: XmlString,
10782    #[serde(rename = "@sheetPosition")]
10783    pub sheet_position: u32,
10784    /// Unknown attributes captured for roundtrip fidelity.
10785    #[cfg(feature = "extra-attrs")]
10786    #[serde(skip)]
10787    #[cfg(feature = "extra-attrs")]
10788    #[serde(default)]
10789    #[cfg(feature = "extra-attrs")]
10790    pub extra_attrs: std::collections::HashMap<String, String>,
10791}
10792
10793#[derive(Debug, Clone, Serialize, Deserialize)]
10794pub struct RevisionCellChange {
10795    #[serde(rename = "@rId")]
10796    pub r_id: u32,
10797    #[serde(rename = "@ua")]
10798    #[serde(
10799        default,
10800        skip_serializing_if = "Option::is_none",
10801        with = "ooxml_xml::ooxml_bool"
10802    )]
10803    pub ua: Option<bool>,
10804    #[serde(rename = "@ra")]
10805    #[serde(
10806        default,
10807        skip_serializing_if = "Option::is_none",
10808        with = "ooxml_xml::ooxml_bool"
10809    )]
10810    pub ra: Option<bool>,
10811    #[serde(rename = "@sId")]
10812    pub s_id: u32,
10813    #[serde(rename = "@odxf")]
10814    #[serde(
10815        default,
10816        skip_serializing_if = "Option::is_none",
10817        with = "ooxml_xml::ooxml_bool"
10818    )]
10819    pub odxf: Option<bool>,
10820    #[serde(rename = "@xfDxf")]
10821    #[serde(
10822        default,
10823        skip_serializing_if = "Option::is_none",
10824        with = "ooxml_xml::ooxml_bool"
10825    )]
10826    pub xf_dxf: Option<bool>,
10827    #[serde(rename = "@s")]
10828    #[serde(
10829        default,
10830        skip_serializing_if = "Option::is_none",
10831        with = "ooxml_xml::ooxml_bool"
10832    )]
10833    pub style_index: Option<bool>,
10834    #[serde(rename = "@dxf")]
10835    #[serde(
10836        default,
10837        skip_serializing_if = "Option::is_none",
10838        with = "ooxml_xml::ooxml_bool"
10839    )]
10840    pub dxf: Option<bool>,
10841    #[serde(rename = "@numFmtId")]
10842    #[serde(default, skip_serializing_if = "Option::is_none")]
10843    pub number_format_id: Option<STNumFmtId>,
10844    #[serde(rename = "@quotePrefix")]
10845    #[serde(
10846        default,
10847        skip_serializing_if = "Option::is_none",
10848        with = "ooxml_xml::ooxml_bool"
10849    )]
10850    pub quote_prefix: Option<bool>,
10851    #[serde(rename = "@oldQuotePrefix")]
10852    #[serde(
10853        default,
10854        skip_serializing_if = "Option::is_none",
10855        with = "ooxml_xml::ooxml_bool"
10856    )]
10857    pub old_quote_prefix: Option<bool>,
10858    #[serde(rename = "@ph")]
10859    #[serde(
10860        default,
10861        skip_serializing_if = "Option::is_none",
10862        with = "ooxml_xml::ooxml_bool"
10863    )]
10864    pub placeholder: Option<bool>,
10865    #[serde(rename = "@oldPh")]
10866    #[serde(
10867        default,
10868        skip_serializing_if = "Option::is_none",
10869        with = "ooxml_xml::ooxml_bool"
10870    )]
10871    pub old_ph: Option<bool>,
10872    #[serde(rename = "@endOfListFormulaUpdate")]
10873    #[serde(
10874        default,
10875        skip_serializing_if = "Option::is_none",
10876        with = "ooxml_xml::ooxml_bool"
10877    )]
10878    pub end_of_list_formula_update: Option<bool>,
10879    #[serde(rename = "oc")]
10880    #[serde(default, skip_serializing_if = "Option::is_none")]
10881    pub oc: Option<Box<Cell>>,
10882    #[serde(rename = "nc")]
10883    pub nc: Box<Cell>,
10884    #[serde(rename = "ndxf")]
10885    #[serde(default, skip_serializing_if = "Option::is_none")]
10886    pub ndxf: Option<Box<DifferentialFormat>>,
10887    #[serde(rename = "extLst")]
10888    #[serde(default, skip_serializing_if = "Option::is_none")]
10889    pub extension_list: Option<Box<ExtensionList>>,
10890    /// Unknown attributes captured for roundtrip fidelity.
10891    #[cfg(feature = "extra-attrs")]
10892    #[serde(skip)]
10893    #[cfg(feature = "extra-attrs")]
10894    #[serde(default)]
10895    #[cfg(feature = "extra-attrs")]
10896    pub extra_attrs: std::collections::HashMap<String, String>,
10897    /// Unknown child elements captured for roundtrip fidelity.
10898    #[cfg(feature = "extra-children")]
10899    #[serde(skip)]
10900    #[cfg(feature = "extra-children")]
10901    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10902}
10903
10904#[derive(Debug, Clone, Serialize, Deserialize)]
10905pub struct RevisionFormatting {
10906    #[serde(rename = "@sheetId")]
10907    pub sheet_id: u32,
10908    #[serde(rename = "@xfDxf")]
10909    #[serde(
10910        default,
10911        skip_serializing_if = "Option::is_none",
10912        with = "ooxml_xml::ooxml_bool"
10913    )]
10914    pub xf_dxf: Option<bool>,
10915    #[serde(rename = "@s")]
10916    #[serde(
10917        default,
10918        skip_serializing_if = "Option::is_none",
10919        with = "ooxml_xml::ooxml_bool"
10920    )]
10921    pub style_index: Option<bool>,
10922    #[serde(rename = "@sqref")]
10923    pub square_reference: SquareRef,
10924    #[serde(rename = "@start")]
10925    #[serde(default, skip_serializing_if = "Option::is_none")]
10926    pub start: Option<u32>,
10927    #[serde(rename = "@length")]
10928    #[serde(default, skip_serializing_if = "Option::is_none")]
10929    pub length: Option<u32>,
10930    #[serde(rename = "dxf")]
10931    #[serde(default, skip_serializing_if = "Option::is_none")]
10932    pub dxf: Option<Box<DifferentialFormat>>,
10933    #[serde(rename = "extLst")]
10934    #[serde(default, skip_serializing_if = "Option::is_none")]
10935    pub extension_list: Option<Box<ExtensionList>>,
10936    /// Unknown attributes captured for roundtrip fidelity.
10937    #[cfg(feature = "extra-attrs")]
10938    #[serde(skip)]
10939    #[cfg(feature = "extra-attrs")]
10940    #[serde(default)]
10941    #[cfg(feature = "extra-attrs")]
10942    pub extra_attrs: std::collections::HashMap<String, String>,
10943    /// Unknown child elements captured for roundtrip fidelity.
10944    #[cfg(feature = "extra-children")]
10945    #[serde(skip)]
10946    #[cfg(feature = "extra-children")]
10947    pub extra_children: Vec<ooxml_xml::PositionedNode>,
10948}
10949
10950#[derive(Debug, Clone, Serialize, Deserialize)]
10951pub struct RevisionAutoFormatting {
10952    #[serde(rename = "@sheetId")]
10953    pub sheet_id: u32,
10954    #[serde(rename = "@autoFormatId")]
10955    #[serde(default, skip_serializing_if = "Option::is_none")]
10956    pub auto_format_id: Option<u32>,
10957    #[serde(rename = "@applyNumberFormats")]
10958    #[serde(
10959        default,
10960        skip_serializing_if = "Option::is_none",
10961        with = "ooxml_xml::ooxml_bool"
10962    )]
10963    pub apply_number_formats: Option<bool>,
10964    #[serde(rename = "@applyBorderFormats")]
10965    #[serde(
10966        default,
10967        skip_serializing_if = "Option::is_none",
10968        with = "ooxml_xml::ooxml_bool"
10969    )]
10970    pub apply_border_formats: Option<bool>,
10971    #[serde(rename = "@applyFontFormats")]
10972    #[serde(
10973        default,
10974        skip_serializing_if = "Option::is_none",
10975        with = "ooxml_xml::ooxml_bool"
10976    )]
10977    pub apply_font_formats: Option<bool>,
10978    #[serde(rename = "@applyPatternFormats")]
10979    #[serde(
10980        default,
10981        skip_serializing_if = "Option::is_none",
10982        with = "ooxml_xml::ooxml_bool"
10983    )]
10984    pub apply_pattern_formats: Option<bool>,
10985    #[serde(rename = "@applyAlignmentFormats")]
10986    #[serde(
10987        default,
10988        skip_serializing_if = "Option::is_none",
10989        with = "ooxml_xml::ooxml_bool"
10990    )]
10991    pub apply_alignment_formats: Option<bool>,
10992    #[serde(rename = "@applyWidthHeightFormats")]
10993    #[serde(
10994        default,
10995        skip_serializing_if = "Option::is_none",
10996        with = "ooxml_xml::ooxml_bool"
10997    )]
10998    pub apply_width_height_formats: Option<bool>,
10999    #[serde(rename = "@ref")]
11000    pub reference: Reference,
11001    /// Unknown attributes captured for roundtrip fidelity.
11002    #[cfg(feature = "extra-attrs")]
11003    #[serde(skip)]
11004    #[cfg(feature = "extra-attrs")]
11005    #[serde(default)]
11006    #[cfg(feature = "extra-attrs")]
11007    pub extra_attrs: std::collections::HashMap<String, String>,
11008}
11009
11010#[derive(Debug, Clone, Serialize, Deserialize)]
11011pub struct RevisionComment {
11012    #[serde(rename = "@sheetId")]
11013    pub sheet_id: u32,
11014    #[serde(rename = "@cell")]
11015    pub cell: CellRef,
11016    #[serde(rename = "@guid")]
11017    pub guid: Guid,
11018    #[serde(rename = "@action")]
11019    #[serde(default, skip_serializing_if = "Option::is_none")]
11020    pub action: Option<STRevisionAction>,
11021    #[serde(rename = "@alwaysShow")]
11022    #[serde(
11023        default,
11024        skip_serializing_if = "Option::is_none",
11025        with = "ooxml_xml::ooxml_bool"
11026    )]
11027    pub always_show: Option<bool>,
11028    #[serde(rename = "@old")]
11029    #[serde(
11030        default,
11031        skip_serializing_if = "Option::is_none",
11032        with = "ooxml_xml::ooxml_bool"
11033    )]
11034    pub old: Option<bool>,
11035    #[serde(rename = "@hiddenRow")]
11036    #[serde(
11037        default,
11038        skip_serializing_if = "Option::is_none",
11039        with = "ooxml_xml::ooxml_bool"
11040    )]
11041    pub hidden_row: Option<bool>,
11042    #[serde(rename = "@hiddenColumn")]
11043    #[serde(
11044        default,
11045        skip_serializing_if = "Option::is_none",
11046        with = "ooxml_xml::ooxml_bool"
11047    )]
11048    pub hidden_column: Option<bool>,
11049    #[serde(rename = "@author")]
11050    pub author: XmlString,
11051    #[serde(rename = "@oldLength")]
11052    #[serde(default, skip_serializing_if = "Option::is_none")]
11053    pub old_length: Option<u32>,
11054    #[serde(rename = "@newLength")]
11055    #[serde(default, skip_serializing_if = "Option::is_none")]
11056    pub new_length: Option<u32>,
11057    /// Unknown attributes captured for roundtrip fidelity.
11058    #[cfg(feature = "extra-attrs")]
11059    #[serde(skip)]
11060    #[cfg(feature = "extra-attrs")]
11061    #[serde(default)]
11062    #[cfg(feature = "extra-attrs")]
11063    pub extra_attrs: std::collections::HashMap<String, String>,
11064}
11065
11066#[derive(Debug, Clone, Serialize, Deserialize)]
11067pub struct RevisionDefinedName {
11068    #[serde(rename = "@rId")]
11069    pub r_id: u32,
11070    #[serde(rename = "@ua")]
11071    #[serde(
11072        default,
11073        skip_serializing_if = "Option::is_none",
11074        with = "ooxml_xml::ooxml_bool"
11075    )]
11076    pub ua: Option<bool>,
11077    #[serde(rename = "@ra")]
11078    #[serde(
11079        default,
11080        skip_serializing_if = "Option::is_none",
11081        with = "ooxml_xml::ooxml_bool"
11082    )]
11083    pub ra: Option<bool>,
11084    #[serde(rename = "@localSheetId")]
11085    #[serde(default, skip_serializing_if = "Option::is_none")]
11086    pub local_sheet_id: Option<u32>,
11087    #[serde(rename = "@customView")]
11088    #[serde(
11089        default,
11090        skip_serializing_if = "Option::is_none",
11091        with = "ooxml_xml::ooxml_bool"
11092    )]
11093    pub custom_view: Option<bool>,
11094    #[serde(rename = "@name")]
11095    pub name: XmlString,
11096    #[serde(rename = "@function")]
11097    #[serde(
11098        default,
11099        skip_serializing_if = "Option::is_none",
11100        with = "ooxml_xml::ooxml_bool"
11101    )]
11102    pub function: Option<bool>,
11103    #[serde(rename = "@oldFunction")]
11104    #[serde(
11105        default,
11106        skip_serializing_if = "Option::is_none",
11107        with = "ooxml_xml::ooxml_bool"
11108    )]
11109    pub old_function: Option<bool>,
11110    #[serde(rename = "@functionGroupId")]
11111    #[serde(default, skip_serializing_if = "Option::is_none")]
11112    pub function_group_id: Option<u8>,
11113    #[serde(rename = "@oldFunctionGroupId")]
11114    #[serde(default, skip_serializing_if = "Option::is_none")]
11115    pub old_function_group_id: Option<u8>,
11116    #[serde(rename = "@shortcutKey")]
11117    #[serde(default, skip_serializing_if = "Option::is_none")]
11118    pub shortcut_key: Option<u8>,
11119    #[serde(rename = "@oldShortcutKey")]
11120    #[serde(default, skip_serializing_if = "Option::is_none")]
11121    pub old_shortcut_key: Option<u8>,
11122    #[serde(rename = "@hidden")]
11123    #[serde(
11124        default,
11125        skip_serializing_if = "Option::is_none",
11126        with = "ooxml_xml::ooxml_bool"
11127    )]
11128    pub hidden: Option<bool>,
11129    #[serde(rename = "@oldHidden")]
11130    #[serde(
11131        default,
11132        skip_serializing_if = "Option::is_none",
11133        with = "ooxml_xml::ooxml_bool"
11134    )]
11135    pub old_hidden: Option<bool>,
11136    #[serde(rename = "@customMenu")]
11137    #[serde(default, skip_serializing_if = "Option::is_none")]
11138    pub custom_menu: Option<XmlString>,
11139    #[serde(rename = "@oldCustomMenu")]
11140    #[serde(default, skip_serializing_if = "Option::is_none")]
11141    pub old_custom_menu: Option<XmlString>,
11142    #[serde(rename = "@description")]
11143    #[serde(default, skip_serializing_if = "Option::is_none")]
11144    pub description: Option<XmlString>,
11145    #[serde(rename = "@oldDescription")]
11146    #[serde(default, skip_serializing_if = "Option::is_none")]
11147    pub old_description: Option<XmlString>,
11148    #[serde(rename = "@help")]
11149    #[serde(default, skip_serializing_if = "Option::is_none")]
11150    pub help: Option<XmlString>,
11151    #[serde(rename = "@oldHelp")]
11152    #[serde(default, skip_serializing_if = "Option::is_none")]
11153    pub old_help: Option<XmlString>,
11154    #[serde(rename = "@statusBar")]
11155    #[serde(default, skip_serializing_if = "Option::is_none")]
11156    pub status_bar: Option<XmlString>,
11157    #[serde(rename = "@oldStatusBar")]
11158    #[serde(default, skip_serializing_if = "Option::is_none")]
11159    pub old_status_bar: Option<XmlString>,
11160    #[serde(rename = "@comment")]
11161    #[serde(default, skip_serializing_if = "Option::is_none")]
11162    pub comment: Option<XmlString>,
11163    #[serde(rename = "@oldComment")]
11164    #[serde(default, skip_serializing_if = "Option::is_none")]
11165    pub old_comment: Option<XmlString>,
11166    #[serde(rename = "formula")]
11167    #[serde(default, skip_serializing_if = "Option::is_none")]
11168    pub formula: Option<STFormula>,
11169    #[serde(rename = "oldFormula")]
11170    #[serde(default, skip_serializing_if = "Option::is_none")]
11171    pub old_formula: Option<STFormula>,
11172    #[serde(rename = "extLst")]
11173    #[serde(default, skip_serializing_if = "Option::is_none")]
11174    pub extension_list: Option<Box<ExtensionList>>,
11175    /// Unknown attributes captured for roundtrip fidelity.
11176    #[cfg(feature = "extra-attrs")]
11177    #[serde(skip)]
11178    #[cfg(feature = "extra-attrs")]
11179    #[serde(default)]
11180    #[cfg(feature = "extra-attrs")]
11181    pub extra_attrs: std::collections::HashMap<String, String>,
11182    /// Unknown child elements captured for roundtrip fidelity.
11183    #[cfg(feature = "extra-children")]
11184    #[serde(skip)]
11185    #[cfg(feature = "extra-children")]
11186    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11187}
11188
11189#[derive(Debug, Clone, Serialize, Deserialize)]
11190pub struct RevisionConflict {
11191    #[serde(rename = "@rId")]
11192    pub r_id: u32,
11193    #[serde(rename = "@ua")]
11194    #[serde(
11195        default,
11196        skip_serializing_if = "Option::is_none",
11197        with = "ooxml_xml::ooxml_bool"
11198    )]
11199    pub ua: Option<bool>,
11200    #[serde(rename = "@ra")]
11201    #[serde(
11202        default,
11203        skip_serializing_if = "Option::is_none",
11204        with = "ooxml_xml::ooxml_bool"
11205    )]
11206    pub ra: Option<bool>,
11207    #[serde(rename = "@sheetId")]
11208    #[serde(default, skip_serializing_if = "Option::is_none")]
11209    pub sheet_id: Option<u32>,
11210    /// Unknown attributes captured for roundtrip fidelity.
11211    #[cfg(feature = "extra-attrs")]
11212    #[serde(skip)]
11213    #[cfg(feature = "extra-attrs")]
11214    #[serde(default)]
11215    #[cfg(feature = "extra-attrs")]
11216    pub extra_attrs: std::collections::HashMap<String, String>,
11217}
11218
11219#[derive(Debug, Clone, Serialize, Deserialize)]
11220pub struct RevisionQueryTableField {
11221    #[serde(rename = "@sheetId")]
11222    pub sheet_id: u32,
11223    #[serde(rename = "@ref")]
11224    pub reference: Reference,
11225    #[serde(rename = "@fieldId")]
11226    pub field_id: u32,
11227    /// Unknown attributes captured for roundtrip fidelity.
11228    #[cfg(feature = "extra-attrs")]
11229    #[serde(skip)]
11230    #[cfg(feature = "extra-attrs")]
11231    #[serde(default)]
11232    #[cfg(feature = "extra-attrs")]
11233    pub extra_attrs: std::collections::HashMap<String, String>,
11234}
11235
11236pub type SmlUsers = Box<Users>;
11237
11238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11239pub struct Users {
11240    #[serde(rename = "@count")]
11241    #[serde(default, skip_serializing_if = "Option::is_none")]
11242    pub count: Option<u32>,
11243    #[serde(rename = "userInfo")]
11244    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11245    pub user_info: Vec<SharedUser>,
11246    /// Unknown attributes captured for roundtrip fidelity.
11247    #[cfg(feature = "extra-attrs")]
11248    #[serde(skip)]
11249    #[cfg(feature = "extra-attrs")]
11250    #[serde(default)]
11251    #[cfg(feature = "extra-attrs")]
11252    pub extra_attrs: std::collections::HashMap<String, String>,
11253    /// Unknown child elements captured for roundtrip fidelity.
11254    #[cfg(feature = "extra-children")]
11255    #[serde(skip)]
11256    #[cfg(feature = "extra-children")]
11257    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11258}
11259
11260#[derive(Debug, Clone, Serialize, Deserialize)]
11261pub struct SharedUser {
11262    #[serde(rename = "@guid")]
11263    pub guid: Guid,
11264    #[serde(rename = "@name")]
11265    pub name: XmlString,
11266    #[serde(rename = "@id")]
11267    pub id: i32,
11268    #[serde(rename = "@dateTime")]
11269    pub date_time: String,
11270    #[serde(rename = "extLst")]
11271    #[serde(default, skip_serializing_if = "Option::is_none")]
11272    pub extension_list: Option<Box<ExtensionList>>,
11273    /// Unknown attributes captured for roundtrip fidelity.
11274    #[cfg(feature = "extra-attrs")]
11275    #[serde(skip)]
11276    #[cfg(feature = "extra-attrs")]
11277    #[serde(default)]
11278    #[cfg(feature = "extra-attrs")]
11279    pub extra_attrs: std::collections::HashMap<String, String>,
11280    /// Unknown child elements captured for roundtrip fidelity.
11281    #[cfg(feature = "extra-children")]
11282    #[serde(skip)]
11283    #[cfg(feature = "extra-children")]
11284    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11285}
11286
11287pub type SmlWorksheet = Box<Worksheet>;
11288
11289pub type SmlChartsheet = Box<Chartsheet>;
11290
11291pub type SmlDialogsheet = Box<CTDialogsheet>;
11292
11293#[derive(Debug, Clone, Serialize, Deserialize)]
11294pub struct CTMacrosheet {
11295    #[serde(rename = "sheetPr")]
11296    #[serde(default, skip_serializing_if = "Option::is_none")]
11297    pub sheet_properties: Option<Box<SheetProperties>>,
11298    #[serde(rename = "dimension")]
11299    #[serde(default, skip_serializing_if = "Option::is_none")]
11300    pub dimension: Option<Box<SheetDimension>>,
11301    #[serde(rename = "sheetViews")]
11302    #[serde(default, skip_serializing_if = "Option::is_none")]
11303    pub sheet_views: Option<Box<SheetViews>>,
11304    #[serde(rename = "sheetFormatPr")]
11305    #[serde(default, skip_serializing_if = "Option::is_none")]
11306    pub sheet_format: Option<Box<SheetFormat>>,
11307    #[serde(rename = "cols")]
11308    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11309    pub cols: Vec<Columns>,
11310    #[serde(rename = "sheetData")]
11311    pub sheet_data: Box<SheetData>,
11312    #[serde(rename = "sheetProtection")]
11313    #[serde(default, skip_serializing_if = "Option::is_none")]
11314    pub sheet_protection: Option<Box<SheetProtection>>,
11315    #[serde(rename = "autoFilter")]
11316    #[serde(default, skip_serializing_if = "Option::is_none")]
11317    pub auto_filter: Option<Box<AutoFilter>>,
11318    #[serde(rename = "sortState")]
11319    #[serde(default, skip_serializing_if = "Option::is_none")]
11320    pub sort_state: Option<Box<SortState>>,
11321    #[serde(rename = "dataConsolidate")]
11322    #[serde(default, skip_serializing_if = "Option::is_none")]
11323    pub data_consolidate: Option<Box<CTDataConsolidate>>,
11324    #[serde(rename = "customSheetViews")]
11325    #[serde(default, skip_serializing_if = "Option::is_none")]
11326    pub custom_sheet_views: Option<Box<CustomSheetViews>>,
11327    #[serde(rename = "phoneticPr")]
11328    #[serde(default, skip_serializing_if = "Option::is_none")]
11329    pub phonetic_pr: Option<Box<PhoneticProperties>>,
11330    #[serde(rename = "conditionalFormatting")]
11331    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11332    pub conditional_formatting: Vec<ConditionalFormatting>,
11333    #[serde(rename = "printOptions")]
11334    #[serde(default, skip_serializing_if = "Option::is_none")]
11335    pub print_options: Option<Box<PrintOptions>>,
11336    #[serde(rename = "pageMargins")]
11337    #[serde(default, skip_serializing_if = "Option::is_none")]
11338    pub page_margins: Option<Box<PageMargins>>,
11339    #[serde(rename = "pageSetup")]
11340    #[serde(default, skip_serializing_if = "Option::is_none")]
11341    pub page_setup: Option<Box<PageSetup>>,
11342    #[serde(rename = "headerFooter")]
11343    #[serde(default, skip_serializing_if = "Option::is_none")]
11344    pub header_footer: Option<Box<HeaderFooter>>,
11345    #[serde(rename = "rowBreaks")]
11346    #[serde(default, skip_serializing_if = "Option::is_none")]
11347    pub row_breaks: Option<Box<PageBreaks>>,
11348    #[serde(rename = "colBreaks")]
11349    #[serde(default, skip_serializing_if = "Option::is_none")]
11350    pub col_breaks: Option<Box<PageBreaks>>,
11351    #[serde(rename = "customProperties")]
11352    #[serde(default, skip_serializing_if = "Option::is_none")]
11353    pub custom_properties: Option<Box<CTCustomProperties>>,
11354    #[serde(rename = "drawing")]
11355    #[serde(default, skip_serializing_if = "Option::is_none")]
11356    pub drawing: Option<Box<Drawing>>,
11357    #[serde(rename = "legacyDrawing")]
11358    #[serde(default, skip_serializing_if = "Option::is_none")]
11359    pub legacy_drawing: Option<Box<LegacyDrawing>>,
11360    #[serde(rename = "legacyDrawingHF")]
11361    #[serde(default, skip_serializing_if = "Option::is_none")]
11362    pub legacy_drawing_h_f: Option<Box<LegacyDrawing>>,
11363    #[serde(rename = "drawingHF")]
11364    #[serde(default, skip_serializing_if = "Option::is_none")]
11365    pub drawing_h_f: Option<Box<DrawingHeaderFooter>>,
11366    #[serde(rename = "picture")]
11367    #[serde(default, skip_serializing_if = "Option::is_none")]
11368    pub picture: Option<Box<SheetBackgroundPicture>>,
11369    #[serde(rename = "oleObjects")]
11370    #[serde(default, skip_serializing_if = "Option::is_none")]
11371    pub ole_objects: Option<Box<OleObjects>>,
11372    #[serde(rename = "extLst")]
11373    #[serde(default, skip_serializing_if = "Option::is_none")]
11374    pub extension_list: Option<Box<ExtensionList>>,
11375    /// Unknown child elements captured for roundtrip fidelity.
11376    #[cfg(feature = "extra-children")]
11377    #[serde(skip)]
11378    #[cfg(feature = "extra-children")]
11379    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11380}
11381
11382#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11383pub struct CTDialogsheet {
11384    #[serde(rename = "sheetPr")]
11385    #[serde(default, skip_serializing_if = "Option::is_none")]
11386    pub sheet_properties: Option<Box<SheetProperties>>,
11387    #[serde(rename = "sheetViews")]
11388    #[serde(default, skip_serializing_if = "Option::is_none")]
11389    pub sheet_views: Option<Box<SheetViews>>,
11390    #[serde(rename = "sheetFormatPr")]
11391    #[serde(default, skip_serializing_if = "Option::is_none")]
11392    pub sheet_format: Option<Box<SheetFormat>>,
11393    #[serde(rename = "sheetProtection")]
11394    #[serde(default, skip_serializing_if = "Option::is_none")]
11395    pub sheet_protection: Option<Box<SheetProtection>>,
11396    #[serde(rename = "customSheetViews")]
11397    #[serde(default, skip_serializing_if = "Option::is_none")]
11398    pub custom_sheet_views: Option<Box<CustomSheetViews>>,
11399    #[serde(rename = "printOptions")]
11400    #[serde(default, skip_serializing_if = "Option::is_none")]
11401    pub print_options: Option<Box<PrintOptions>>,
11402    #[serde(rename = "pageMargins")]
11403    #[serde(default, skip_serializing_if = "Option::is_none")]
11404    pub page_margins: Option<Box<PageMargins>>,
11405    #[serde(rename = "pageSetup")]
11406    #[serde(default, skip_serializing_if = "Option::is_none")]
11407    pub page_setup: Option<Box<PageSetup>>,
11408    #[serde(rename = "headerFooter")]
11409    #[serde(default, skip_serializing_if = "Option::is_none")]
11410    pub header_footer: Option<Box<HeaderFooter>>,
11411    #[serde(rename = "drawing")]
11412    #[serde(default, skip_serializing_if = "Option::is_none")]
11413    pub drawing: Option<Box<Drawing>>,
11414    #[serde(rename = "legacyDrawing")]
11415    #[serde(default, skip_serializing_if = "Option::is_none")]
11416    pub legacy_drawing: Option<Box<LegacyDrawing>>,
11417    #[serde(rename = "legacyDrawingHF")]
11418    #[serde(default, skip_serializing_if = "Option::is_none")]
11419    pub legacy_drawing_h_f: Option<Box<LegacyDrawing>>,
11420    #[serde(rename = "drawingHF")]
11421    #[serde(default, skip_serializing_if = "Option::is_none")]
11422    pub drawing_h_f: Option<Box<DrawingHeaderFooter>>,
11423    #[serde(rename = "oleObjects")]
11424    #[serde(default, skip_serializing_if = "Option::is_none")]
11425    pub ole_objects: Option<Box<OleObjects>>,
11426    #[serde(rename = "controls")]
11427    #[serde(default, skip_serializing_if = "Option::is_none")]
11428    pub controls: Option<Box<Controls>>,
11429    #[serde(rename = "extLst")]
11430    #[serde(default, skip_serializing_if = "Option::is_none")]
11431    pub extension_list: Option<Box<ExtensionList>>,
11432    /// Unknown child elements captured for roundtrip fidelity.
11433    #[cfg(feature = "extra-children")]
11434    #[serde(skip)]
11435    #[cfg(feature = "extra-children")]
11436    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11437}
11438
11439#[derive(Debug, Clone, Serialize, Deserialize)]
11440#[serde(rename = "worksheet")]
11441pub struct Worksheet {
11442    #[cfg(feature = "sml-styling")]
11443    #[serde(rename = "sheetPr")]
11444    #[serde(default, skip_serializing_if = "Option::is_none")]
11445    pub sheet_properties: Option<Box<SheetProperties>>,
11446    #[serde(rename = "dimension")]
11447    #[serde(default, skip_serializing_if = "Option::is_none")]
11448    pub dimension: Option<Box<SheetDimension>>,
11449    #[serde(rename = "sheetViews")]
11450    #[serde(default, skip_serializing_if = "Option::is_none")]
11451    pub sheet_views: Option<Box<SheetViews>>,
11452    #[cfg(feature = "sml-styling")]
11453    #[serde(rename = "sheetFormatPr")]
11454    #[serde(default, skip_serializing_if = "Option::is_none")]
11455    pub sheet_format: Option<Box<SheetFormat>>,
11456    #[cfg(feature = "sml-styling")]
11457    #[serde(rename = "cols")]
11458    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11459    pub cols: Vec<Columns>,
11460    #[serde(rename = "sheetData")]
11461    pub sheet_data: Box<SheetData>,
11462    #[cfg(feature = "sml-formulas")]
11463    #[serde(rename = "sheetCalcPr")]
11464    #[serde(default, skip_serializing_if = "Option::is_none")]
11465    pub sheet_calc_pr: Option<Box<SheetCalcProperties>>,
11466    #[cfg(feature = "sml-protection")]
11467    #[serde(rename = "sheetProtection")]
11468    #[serde(default, skip_serializing_if = "Option::is_none")]
11469    pub sheet_protection: Option<Box<SheetProtection>>,
11470    #[cfg(feature = "sml-protection")]
11471    #[serde(rename = "protectedRanges")]
11472    #[serde(default, skip_serializing_if = "Option::is_none")]
11473    pub protected_ranges: Option<Box<ProtectedRanges>>,
11474    #[cfg(feature = "sml-formulas-advanced")]
11475    #[serde(rename = "scenarios")]
11476    #[serde(default, skip_serializing_if = "Option::is_none")]
11477    pub scenarios: Option<Box<Scenarios>>,
11478    #[cfg(feature = "sml-filtering")]
11479    #[serde(rename = "autoFilter")]
11480    #[serde(default, skip_serializing_if = "Option::is_none")]
11481    pub auto_filter: Option<Box<AutoFilter>>,
11482    #[cfg(feature = "sml-filtering")]
11483    #[serde(rename = "sortState")]
11484    #[serde(default, skip_serializing_if = "Option::is_none")]
11485    pub sort_state: Option<Box<SortState>>,
11486    #[cfg(feature = "sml-formulas-advanced")]
11487    #[serde(rename = "dataConsolidate")]
11488    #[serde(default, skip_serializing_if = "Option::is_none")]
11489    pub data_consolidate: Option<Box<CTDataConsolidate>>,
11490    #[cfg(feature = "sml-structure")]
11491    #[serde(rename = "customSheetViews")]
11492    #[serde(default, skip_serializing_if = "Option::is_none")]
11493    pub custom_sheet_views: Option<Box<CustomSheetViews>>,
11494    #[serde(rename = "mergeCells")]
11495    #[serde(default, skip_serializing_if = "Option::is_none")]
11496    pub merged_cells: Option<Box<MergedCells>>,
11497    #[cfg(feature = "sml-i18n")]
11498    #[serde(rename = "phoneticPr")]
11499    #[serde(default, skip_serializing_if = "Option::is_none")]
11500    pub phonetic_pr: Option<Box<PhoneticProperties>>,
11501    #[cfg(feature = "sml-styling")]
11502    #[serde(rename = "conditionalFormatting")]
11503    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11504    pub conditional_formatting: Vec<ConditionalFormatting>,
11505    #[cfg(feature = "sml-validation")]
11506    #[serde(rename = "dataValidations")]
11507    #[serde(default, skip_serializing_if = "Option::is_none")]
11508    pub data_validations: Option<Box<DataValidations>>,
11509    #[cfg(feature = "sml-hyperlinks")]
11510    #[serde(rename = "hyperlinks")]
11511    #[serde(default, skip_serializing_if = "Option::is_none")]
11512    pub hyperlinks: Option<Box<Hyperlinks>>,
11513    #[cfg(feature = "sml-layout")]
11514    #[serde(rename = "printOptions")]
11515    #[serde(default, skip_serializing_if = "Option::is_none")]
11516    pub print_options: Option<Box<PrintOptions>>,
11517    #[cfg(feature = "sml-layout")]
11518    #[serde(rename = "pageMargins")]
11519    #[serde(default, skip_serializing_if = "Option::is_none")]
11520    pub page_margins: Option<Box<PageMargins>>,
11521    #[cfg(feature = "sml-layout")]
11522    #[serde(rename = "pageSetup")]
11523    #[serde(default, skip_serializing_if = "Option::is_none")]
11524    pub page_setup: Option<Box<PageSetup>>,
11525    #[cfg(feature = "sml-layout")]
11526    #[serde(rename = "headerFooter")]
11527    #[serde(default, skip_serializing_if = "Option::is_none")]
11528    pub header_footer: Option<Box<HeaderFooter>>,
11529    #[cfg(feature = "sml-layout")]
11530    #[serde(rename = "rowBreaks")]
11531    #[serde(default, skip_serializing_if = "Option::is_none")]
11532    pub row_breaks: Option<Box<PageBreaks>>,
11533    #[cfg(feature = "sml-layout")]
11534    #[serde(rename = "colBreaks")]
11535    #[serde(default, skip_serializing_if = "Option::is_none")]
11536    pub col_breaks: Option<Box<PageBreaks>>,
11537    #[cfg(feature = "sml-metadata")]
11538    #[serde(rename = "customProperties")]
11539    #[serde(default, skip_serializing_if = "Option::is_none")]
11540    pub custom_properties: Option<Box<CTCustomProperties>>,
11541    #[cfg(feature = "sml-formulas-advanced")]
11542    #[serde(rename = "cellWatches")]
11543    #[serde(default, skip_serializing_if = "Option::is_none")]
11544    pub cell_watches: Option<Box<CellWatches>>,
11545    #[cfg(feature = "sml-validation")]
11546    #[serde(rename = "ignoredErrors")]
11547    #[serde(default, skip_serializing_if = "Option::is_none")]
11548    pub ignored_errors: Option<Box<IgnoredErrors>>,
11549    #[cfg(feature = "sml-metadata")]
11550    #[serde(rename = "smartTags")]
11551    #[serde(default, skip_serializing_if = "Option::is_none")]
11552    pub smart_tags: Option<Box<SmartTags>>,
11553    #[cfg(feature = "sml-drawings")]
11554    #[serde(rename = "drawing")]
11555    #[serde(default, skip_serializing_if = "Option::is_none")]
11556    pub drawing: Option<Box<Drawing>>,
11557    #[cfg(feature = "sml-comments")]
11558    #[serde(rename = "legacyDrawing")]
11559    #[serde(default, skip_serializing_if = "Option::is_none")]
11560    pub legacy_drawing: Option<Box<LegacyDrawing>>,
11561    #[cfg(feature = "sml-layout")]
11562    #[serde(rename = "legacyDrawingHF")]
11563    #[serde(default, skip_serializing_if = "Option::is_none")]
11564    pub legacy_drawing_h_f: Option<Box<LegacyDrawing>>,
11565    #[cfg(feature = "sml-drawings")]
11566    #[serde(rename = "drawingHF")]
11567    #[serde(default, skip_serializing_if = "Option::is_none")]
11568    pub drawing_h_f: Option<Box<DrawingHeaderFooter>>,
11569    #[cfg(feature = "sml-drawings")]
11570    #[serde(rename = "picture")]
11571    #[serde(default, skip_serializing_if = "Option::is_none")]
11572    pub picture: Option<Box<SheetBackgroundPicture>>,
11573    #[cfg(feature = "sml-external")]
11574    #[serde(rename = "oleObjects")]
11575    #[serde(default, skip_serializing_if = "Option::is_none")]
11576    pub ole_objects: Option<Box<OleObjects>>,
11577    #[cfg(feature = "sml-external")]
11578    #[serde(rename = "controls")]
11579    #[serde(default, skip_serializing_if = "Option::is_none")]
11580    pub controls: Option<Box<Controls>>,
11581    #[cfg(feature = "sml-external")]
11582    #[serde(rename = "webPublishItems")]
11583    #[serde(default, skip_serializing_if = "Option::is_none")]
11584    pub web_publish_items: Option<Box<WebPublishItems>>,
11585    #[cfg(feature = "sml-tables")]
11586    #[serde(rename = "tableParts")]
11587    #[serde(default, skip_serializing_if = "Option::is_none")]
11588    pub table_parts: Option<Box<TableParts>>,
11589    #[cfg(feature = "sml-extensions")]
11590    #[serde(rename = "extLst")]
11591    #[serde(default, skip_serializing_if = "Option::is_none")]
11592    pub extension_list: Option<Box<ExtensionList>>,
11593    /// Unknown child elements captured for roundtrip fidelity.
11594    #[cfg(feature = "extra-children")]
11595    #[serde(skip)]
11596    #[cfg(feature = "extra-children")]
11597    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11598}
11599
11600#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11601#[serde(rename = "sheetData")]
11602pub struct SheetData {
11603    #[serde(rename = "row")]
11604    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11605    pub row: Vec<Row>,
11606    /// Unknown child elements captured for roundtrip fidelity.
11607    #[cfg(feature = "extra-children")]
11608    #[serde(skip)]
11609    #[cfg(feature = "extra-children")]
11610    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11611}
11612
11613#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11614pub struct SheetCalcProperties {
11615    #[serde(rename = "@fullCalcOnLoad")]
11616    #[serde(
11617        default,
11618        skip_serializing_if = "Option::is_none",
11619        with = "ooxml_xml::ooxml_bool"
11620    )]
11621    pub full_calc_on_load: Option<bool>,
11622    /// Unknown attributes captured for roundtrip fidelity.
11623    #[cfg(feature = "extra-attrs")]
11624    #[serde(skip)]
11625    #[cfg(feature = "extra-attrs")]
11626    #[serde(default)]
11627    #[cfg(feature = "extra-attrs")]
11628    pub extra_attrs: std::collections::HashMap<String, String>,
11629}
11630
11631#[derive(Debug, Clone, Serialize, Deserialize)]
11632#[serde(rename = "sheetFormatPr")]
11633pub struct SheetFormat {
11634    #[serde(rename = "@baseColWidth")]
11635    #[serde(default, skip_serializing_if = "Option::is_none")]
11636    pub base_col_width: Option<u32>,
11637    #[serde(rename = "@defaultColWidth")]
11638    #[serde(default, skip_serializing_if = "Option::is_none")]
11639    pub default_col_width: Option<f64>,
11640    #[serde(rename = "@defaultRowHeight")]
11641    pub default_row_height: f64,
11642    #[serde(rename = "@customHeight")]
11643    #[serde(
11644        default,
11645        skip_serializing_if = "Option::is_none",
11646        with = "ooxml_xml::ooxml_bool"
11647    )]
11648    pub custom_height: Option<bool>,
11649    #[serde(rename = "@zeroHeight")]
11650    #[serde(
11651        default,
11652        skip_serializing_if = "Option::is_none",
11653        with = "ooxml_xml::ooxml_bool"
11654    )]
11655    pub zero_height: Option<bool>,
11656    #[serde(rename = "@thickTop")]
11657    #[serde(
11658        default,
11659        skip_serializing_if = "Option::is_none",
11660        with = "ooxml_xml::ooxml_bool"
11661    )]
11662    pub thick_top: Option<bool>,
11663    #[serde(rename = "@thickBottom")]
11664    #[serde(
11665        default,
11666        skip_serializing_if = "Option::is_none",
11667        with = "ooxml_xml::ooxml_bool"
11668    )]
11669    pub thick_bottom: Option<bool>,
11670    #[serde(rename = "@outlineLevelRow")]
11671    #[serde(default, skip_serializing_if = "Option::is_none")]
11672    pub outline_level_row: Option<u8>,
11673    #[serde(rename = "@outlineLevelCol")]
11674    #[serde(default, skip_serializing_if = "Option::is_none")]
11675    pub outline_level_col: Option<u8>,
11676    /// Unknown attributes captured for roundtrip fidelity.
11677    #[cfg(feature = "extra-attrs")]
11678    #[serde(skip)]
11679    #[cfg(feature = "extra-attrs")]
11680    #[serde(default)]
11681    #[cfg(feature = "extra-attrs")]
11682    pub extra_attrs: std::collections::HashMap<String, String>,
11683}
11684
11685#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11686#[serde(rename = "cols")]
11687pub struct Columns {
11688    #[serde(rename = "col")]
11689    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11690    pub col: Vec<Column>,
11691    /// Unknown child elements captured for roundtrip fidelity.
11692    #[cfg(feature = "extra-children")]
11693    #[serde(skip)]
11694    #[cfg(feature = "extra-children")]
11695    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11696}
11697
11698#[derive(Debug, Clone, Serialize, Deserialize)]
11699#[serde(rename = "col")]
11700pub struct Column {
11701    #[cfg(feature = "sml-styling")]
11702    #[serde(rename = "@min")]
11703    pub start_column: u32,
11704    #[cfg(feature = "sml-styling")]
11705    #[serde(rename = "@max")]
11706    pub end_column: u32,
11707    #[cfg(feature = "sml-styling")]
11708    #[serde(rename = "@width")]
11709    #[serde(default, skip_serializing_if = "Option::is_none")]
11710    pub width: Option<f64>,
11711    #[cfg(feature = "sml-styling")]
11712    #[serde(rename = "@style")]
11713    #[serde(default, skip_serializing_if = "Option::is_none")]
11714    pub style: Option<u32>,
11715    #[cfg(feature = "sml-structure")]
11716    #[serde(rename = "@hidden")]
11717    #[serde(
11718        default,
11719        skip_serializing_if = "Option::is_none",
11720        with = "ooxml_xml::ooxml_bool"
11721    )]
11722    pub hidden: Option<bool>,
11723    #[cfg(feature = "sml-styling")]
11724    #[serde(rename = "@bestFit")]
11725    #[serde(
11726        default,
11727        skip_serializing_if = "Option::is_none",
11728        with = "ooxml_xml::ooxml_bool"
11729    )]
11730    pub best_fit: Option<bool>,
11731    #[cfg(feature = "sml-styling")]
11732    #[serde(rename = "@customWidth")]
11733    #[serde(
11734        default,
11735        skip_serializing_if = "Option::is_none",
11736        with = "ooxml_xml::ooxml_bool"
11737    )]
11738    pub custom_width: Option<bool>,
11739    #[cfg(feature = "sml-i18n")]
11740    #[serde(rename = "@phonetic")]
11741    #[serde(
11742        default,
11743        skip_serializing_if = "Option::is_none",
11744        with = "ooxml_xml::ooxml_bool"
11745    )]
11746    pub phonetic: Option<bool>,
11747    #[cfg(feature = "sml-structure")]
11748    #[serde(rename = "@outlineLevel")]
11749    #[serde(default, skip_serializing_if = "Option::is_none")]
11750    pub outline_level: Option<u8>,
11751    #[cfg(feature = "sml-structure")]
11752    #[serde(rename = "@collapsed")]
11753    #[serde(
11754        default,
11755        skip_serializing_if = "Option::is_none",
11756        with = "ooxml_xml::ooxml_bool"
11757    )]
11758    pub collapsed: Option<bool>,
11759    /// Unknown attributes captured for roundtrip fidelity.
11760    #[cfg(feature = "extra-attrs")]
11761    #[serde(skip)]
11762    #[cfg(feature = "extra-attrs")]
11763    #[serde(default)]
11764    #[cfg(feature = "extra-attrs")]
11765    pub extra_attrs: std::collections::HashMap<String, String>,
11766}
11767
11768#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11769#[serde(rename = "row")]
11770pub struct Row {
11771    #[serde(rename = "@r")]
11772    #[serde(default, skip_serializing_if = "Option::is_none")]
11773    pub reference: Option<u32>,
11774    #[serde(rename = "@spans")]
11775    #[serde(default, skip_serializing_if = "Option::is_none")]
11776    pub cell_spans: Option<CellSpans>,
11777    #[serde(rename = "@s")]
11778    #[serde(default, skip_serializing_if = "Option::is_none")]
11779    pub style_index: Option<u32>,
11780    #[cfg(feature = "sml-styling")]
11781    #[serde(rename = "@customFormat")]
11782    #[serde(
11783        default,
11784        skip_serializing_if = "Option::is_none",
11785        with = "ooxml_xml::ooxml_bool"
11786    )]
11787    pub custom_format: Option<bool>,
11788    #[cfg(feature = "sml-styling")]
11789    #[serde(rename = "@ht")]
11790    #[serde(default, skip_serializing_if = "Option::is_none")]
11791    pub height: Option<f64>,
11792    #[cfg(feature = "sml-structure")]
11793    #[serde(rename = "@hidden")]
11794    #[serde(
11795        default,
11796        skip_serializing_if = "Option::is_none",
11797        with = "ooxml_xml::ooxml_bool"
11798    )]
11799    pub hidden: Option<bool>,
11800    #[cfg(feature = "sml-styling")]
11801    #[serde(rename = "@customHeight")]
11802    #[serde(
11803        default,
11804        skip_serializing_if = "Option::is_none",
11805        with = "ooxml_xml::ooxml_bool"
11806    )]
11807    pub custom_height: Option<bool>,
11808    #[cfg(feature = "sml-structure")]
11809    #[serde(rename = "@outlineLevel")]
11810    #[serde(default, skip_serializing_if = "Option::is_none")]
11811    pub outline_level: Option<u8>,
11812    #[cfg(feature = "sml-structure")]
11813    #[serde(rename = "@collapsed")]
11814    #[serde(
11815        default,
11816        skip_serializing_if = "Option::is_none",
11817        with = "ooxml_xml::ooxml_bool"
11818    )]
11819    pub collapsed: Option<bool>,
11820    #[cfg(feature = "sml-styling")]
11821    #[serde(rename = "@thickTop")]
11822    #[serde(
11823        default,
11824        skip_serializing_if = "Option::is_none",
11825        with = "ooxml_xml::ooxml_bool"
11826    )]
11827    pub thick_top: Option<bool>,
11828    #[cfg(feature = "sml-styling")]
11829    #[serde(rename = "@thickBot")]
11830    #[serde(
11831        default,
11832        skip_serializing_if = "Option::is_none",
11833        with = "ooxml_xml::ooxml_bool"
11834    )]
11835    pub thick_bot: Option<bool>,
11836    #[cfg(feature = "sml-i18n")]
11837    #[serde(rename = "@ph")]
11838    #[serde(
11839        default,
11840        skip_serializing_if = "Option::is_none",
11841        with = "ooxml_xml::ooxml_bool"
11842    )]
11843    pub placeholder: Option<bool>,
11844    #[serde(rename = "c")]
11845    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11846    pub cells: Vec<Cell>,
11847    #[cfg(feature = "sml-extensions")]
11848    #[serde(rename = "extLst")]
11849    #[serde(default, skip_serializing_if = "Option::is_none")]
11850    pub extension_list: Option<Box<ExtensionList>>,
11851    /// Unknown attributes captured for roundtrip fidelity.
11852    #[cfg(feature = "extra-attrs")]
11853    #[serde(skip)]
11854    #[cfg(feature = "extra-attrs")]
11855    #[serde(default)]
11856    #[cfg(feature = "extra-attrs")]
11857    pub extra_attrs: std::collections::HashMap<String, String>,
11858    /// Unknown child elements captured for roundtrip fidelity.
11859    #[cfg(feature = "extra-children")]
11860    #[serde(skip)]
11861    #[cfg(feature = "extra-children")]
11862    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11863}
11864
11865#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11866#[serde(rename = "c")]
11867pub struct Cell {
11868    #[serde(rename = "@r")]
11869    #[serde(default, skip_serializing_if = "Option::is_none")]
11870    pub reference: Option<CellRef>,
11871    #[serde(rename = "@s")]
11872    #[serde(default, skip_serializing_if = "Option::is_none")]
11873    pub style_index: Option<u32>,
11874    #[serde(rename = "@t")]
11875    #[serde(default, skip_serializing_if = "Option::is_none")]
11876    pub cell_type: Option<CellType>,
11877    #[cfg(feature = "sml-metadata")]
11878    #[serde(rename = "@cm")]
11879    #[serde(default, skip_serializing_if = "Option::is_none")]
11880    pub cm: Option<u32>,
11881    #[cfg(feature = "sml-metadata")]
11882    #[serde(rename = "@vm")]
11883    #[serde(default, skip_serializing_if = "Option::is_none")]
11884    pub vm: Option<u32>,
11885    #[cfg(feature = "sml-i18n")]
11886    #[serde(rename = "@ph")]
11887    #[serde(
11888        default,
11889        skip_serializing_if = "Option::is_none",
11890        with = "ooxml_xml::ooxml_bool"
11891    )]
11892    pub placeholder: Option<bool>,
11893    #[serde(rename = "f")]
11894    #[serde(default, skip_serializing_if = "Option::is_none")]
11895    pub formula: Option<Box<CellFormula>>,
11896    #[serde(rename = "v")]
11897    #[serde(default, skip_serializing_if = "Option::is_none")]
11898    pub value: Option<XmlString>,
11899    #[serde(rename = "is")]
11900    #[serde(default, skip_serializing_if = "Option::is_none")]
11901    pub is: Option<Box<RichString>>,
11902    #[cfg(feature = "sml-extensions")]
11903    #[serde(rename = "extLst")]
11904    #[serde(default, skip_serializing_if = "Option::is_none")]
11905    pub extension_list: Option<Box<ExtensionList>>,
11906    /// Unknown attributes captured for roundtrip fidelity.
11907    #[cfg(feature = "extra-attrs")]
11908    #[serde(skip)]
11909    #[cfg(feature = "extra-attrs")]
11910    #[serde(default)]
11911    #[cfg(feature = "extra-attrs")]
11912    pub extra_attrs: std::collections::HashMap<String, String>,
11913    /// Unknown child elements captured for roundtrip fidelity.
11914    #[cfg(feature = "extra-children")]
11915    #[serde(skip)]
11916    #[cfg(feature = "extra-children")]
11917    pub extra_children: Vec<ooxml_xml::PositionedNode>,
11918}
11919
11920#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11921#[serde(rename = "sheetPr")]
11922pub struct SheetProperties {
11923    #[cfg(feature = "sml-structure")]
11924    #[serde(rename = "@syncHorizontal")]
11925    #[serde(
11926        default,
11927        skip_serializing_if = "Option::is_none",
11928        with = "ooxml_xml::ooxml_bool"
11929    )]
11930    pub sync_horizontal: Option<bool>,
11931    #[cfg(feature = "sml-structure")]
11932    #[serde(rename = "@syncVertical")]
11933    #[serde(
11934        default,
11935        skip_serializing_if = "Option::is_none",
11936        with = "ooxml_xml::ooxml_bool"
11937    )]
11938    pub sync_vertical: Option<bool>,
11939    #[cfg(feature = "sml-structure")]
11940    #[serde(rename = "@syncRef")]
11941    #[serde(default, skip_serializing_if = "Option::is_none")]
11942    pub sync_ref: Option<Reference>,
11943    #[cfg(feature = "sml-formulas")]
11944    #[serde(rename = "@transitionEvaluation")]
11945    #[serde(
11946        default,
11947        skip_serializing_if = "Option::is_none",
11948        with = "ooxml_xml::ooxml_bool"
11949    )]
11950    pub transition_evaluation: Option<bool>,
11951    #[cfg(feature = "sml-formulas")]
11952    #[serde(rename = "@transitionEntry")]
11953    #[serde(
11954        default,
11955        skip_serializing_if = "Option::is_none",
11956        with = "ooxml_xml::ooxml_bool"
11957    )]
11958    pub transition_entry: Option<bool>,
11959    #[cfg(feature = "sml-external")]
11960    #[serde(rename = "@published")]
11961    #[serde(
11962        default,
11963        skip_serializing_if = "Option::is_none",
11964        with = "ooxml_xml::ooxml_bool"
11965    )]
11966    pub published: Option<bool>,
11967    #[cfg(feature = "sml-structure")]
11968    #[serde(rename = "@codeName")]
11969    #[serde(default, skip_serializing_if = "Option::is_none")]
11970    pub code_name: Option<String>,
11971    #[cfg(feature = "sml-filtering")]
11972    #[serde(rename = "@filterMode")]
11973    #[serde(
11974        default,
11975        skip_serializing_if = "Option::is_none",
11976        with = "ooxml_xml::ooxml_bool"
11977    )]
11978    pub filter_mode: Option<bool>,
11979    #[cfg(feature = "sml-styling")]
11980    #[serde(rename = "@enableFormatConditionsCalculation")]
11981    #[serde(
11982        default,
11983        skip_serializing_if = "Option::is_none",
11984        with = "ooxml_xml::ooxml_bool"
11985    )]
11986    pub enable_format_conditions_calculation: Option<bool>,
11987    #[cfg(feature = "sml-styling")]
11988    #[serde(rename = "tabColor")]
11989    #[serde(default, skip_serializing_if = "Option::is_none")]
11990    pub tab_color: Option<Box<Color>>,
11991    #[cfg(feature = "sml-structure")]
11992    #[serde(rename = "outlinePr")]
11993    #[serde(default, skip_serializing_if = "Option::is_none")]
11994    pub outline_pr: Option<Box<OutlineProperties>>,
11995    #[cfg(feature = "sml-layout")]
11996    #[serde(rename = "pageSetUpPr")]
11997    #[serde(default, skip_serializing_if = "Option::is_none")]
11998    pub page_set_up_pr: Option<Box<PageSetupProperties>>,
11999    /// Unknown attributes captured for roundtrip fidelity.
12000    #[cfg(feature = "extra-attrs")]
12001    #[serde(skip)]
12002    #[cfg(feature = "extra-attrs")]
12003    #[serde(default)]
12004    #[cfg(feature = "extra-attrs")]
12005    pub extra_attrs: std::collections::HashMap<String, String>,
12006    /// Unknown child elements captured for roundtrip fidelity.
12007    #[cfg(feature = "extra-children")]
12008    #[serde(skip)]
12009    #[cfg(feature = "extra-children")]
12010    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12011}
12012
12013#[derive(Debug, Clone, Serialize, Deserialize)]
12014#[serde(rename = "dimension")]
12015pub struct SheetDimension {
12016    #[serde(rename = "@ref")]
12017    pub reference: Reference,
12018    /// Unknown attributes captured for roundtrip fidelity.
12019    #[cfg(feature = "extra-attrs")]
12020    #[serde(skip)]
12021    #[cfg(feature = "extra-attrs")]
12022    #[serde(default)]
12023    #[cfg(feature = "extra-attrs")]
12024    pub extra_attrs: std::collections::HashMap<String, String>,
12025}
12026
12027#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12028#[serde(rename = "sheetViews")]
12029pub struct SheetViews {
12030    #[serde(rename = "sheetView")]
12031    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12032    pub sheet_view: Vec<SheetView>,
12033    #[serde(rename = "extLst")]
12034    #[serde(default, skip_serializing_if = "Option::is_none")]
12035    pub extension_list: Option<Box<ExtensionList>>,
12036    /// Unknown child elements captured for roundtrip fidelity.
12037    #[cfg(feature = "extra-children")]
12038    #[serde(skip)]
12039    #[cfg(feature = "extra-children")]
12040    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12041}
12042
12043#[derive(Debug, Clone, Serialize, Deserialize)]
12044#[serde(rename = "sheetView")]
12045pub struct SheetView {
12046    #[cfg(feature = "sml-protection")]
12047    #[serde(rename = "@windowProtection")]
12048    #[serde(
12049        default,
12050        skip_serializing_if = "Option::is_none",
12051        with = "ooxml_xml::ooxml_bool"
12052    )]
12053    pub window_protection: Option<bool>,
12054    #[cfg(feature = "sml-formulas")]
12055    #[serde(rename = "@showFormulas")]
12056    #[serde(
12057        default,
12058        skip_serializing_if = "Option::is_none",
12059        with = "ooxml_xml::ooxml_bool"
12060    )]
12061    pub show_formulas: Option<bool>,
12062    #[cfg(feature = "sml-styling")]
12063    #[serde(rename = "@showGridLines")]
12064    #[serde(
12065        default,
12066        skip_serializing_if = "Option::is_none",
12067        with = "ooxml_xml::ooxml_bool"
12068    )]
12069    pub show_grid_lines: Option<bool>,
12070    #[cfg(feature = "sml-styling")]
12071    #[serde(rename = "@showRowColHeaders")]
12072    #[serde(
12073        default,
12074        skip_serializing_if = "Option::is_none",
12075        with = "ooxml_xml::ooxml_bool"
12076    )]
12077    pub show_row_col_headers: Option<bool>,
12078    #[cfg(feature = "sml-styling")]
12079    #[serde(rename = "@showZeros")]
12080    #[serde(
12081        default,
12082        skip_serializing_if = "Option::is_none",
12083        with = "ooxml_xml::ooxml_bool"
12084    )]
12085    pub show_zeros: Option<bool>,
12086    #[cfg(feature = "sml-i18n")]
12087    #[serde(rename = "@rightToLeft")]
12088    #[serde(
12089        default,
12090        skip_serializing_if = "Option::is_none",
12091        with = "ooxml_xml::ooxml_bool"
12092    )]
12093    pub right_to_left: Option<bool>,
12094    #[serde(rename = "@tabSelected")]
12095    #[serde(
12096        default,
12097        skip_serializing_if = "Option::is_none",
12098        with = "ooxml_xml::ooxml_bool"
12099    )]
12100    pub tab_selected: Option<bool>,
12101    #[cfg(feature = "sml-layout")]
12102    #[serde(rename = "@showRuler")]
12103    #[serde(
12104        default,
12105        skip_serializing_if = "Option::is_none",
12106        with = "ooxml_xml::ooxml_bool"
12107    )]
12108    pub show_ruler: Option<bool>,
12109    #[cfg(feature = "sml-structure")]
12110    #[serde(rename = "@showOutlineSymbols")]
12111    #[serde(
12112        default,
12113        skip_serializing_if = "Option::is_none",
12114        with = "ooxml_xml::ooxml_bool"
12115    )]
12116    pub show_outline_symbols: Option<bool>,
12117    #[cfg(feature = "sml-styling")]
12118    #[serde(rename = "@defaultGridColor")]
12119    #[serde(
12120        default,
12121        skip_serializing_if = "Option::is_none",
12122        with = "ooxml_xml::ooxml_bool"
12123    )]
12124    pub default_grid_color: Option<bool>,
12125    #[cfg(feature = "sml-layout")]
12126    #[serde(rename = "@showWhiteSpace")]
12127    #[serde(
12128        default,
12129        skip_serializing_if = "Option::is_none",
12130        with = "ooxml_xml::ooxml_bool"
12131    )]
12132    pub show_white_space: Option<bool>,
12133    #[serde(rename = "@view")]
12134    #[serde(default, skip_serializing_if = "Option::is_none")]
12135    pub view: Option<SheetViewType>,
12136    #[serde(rename = "@topLeftCell")]
12137    #[serde(default, skip_serializing_if = "Option::is_none")]
12138    pub top_left_cell: Option<CellRef>,
12139    #[cfg(feature = "sml-styling")]
12140    #[serde(rename = "@colorId")]
12141    #[serde(default, skip_serializing_if = "Option::is_none")]
12142    pub color_id: Option<u32>,
12143    #[serde(rename = "@zoomScale")]
12144    #[serde(default, skip_serializing_if = "Option::is_none")]
12145    pub zoom_scale: Option<u32>,
12146    #[serde(rename = "@zoomScaleNormal")]
12147    #[serde(default, skip_serializing_if = "Option::is_none")]
12148    pub zoom_scale_normal: Option<u32>,
12149    #[cfg(feature = "sml-layout")]
12150    #[serde(rename = "@zoomScaleSheetLayoutView")]
12151    #[serde(default, skip_serializing_if = "Option::is_none")]
12152    pub zoom_scale_sheet_layout_view: Option<u32>,
12153    #[cfg(feature = "sml-layout")]
12154    #[serde(rename = "@zoomScalePageLayoutView")]
12155    #[serde(default, skip_serializing_if = "Option::is_none")]
12156    pub zoom_scale_page_layout_view: Option<u32>,
12157    #[serde(rename = "@workbookViewId")]
12158    pub workbook_view_id: u32,
12159    #[cfg(feature = "sml-structure")]
12160    #[serde(rename = "pane")]
12161    #[serde(default, skip_serializing_if = "Option::is_none")]
12162    pub pane: Option<Box<Pane>>,
12163    #[serde(rename = "selection")]
12164    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12165    pub selection: Vec<Selection>,
12166    #[cfg(feature = "sml-pivot")]
12167    #[serde(rename = "pivotSelection")]
12168    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12169    pub pivot_selection: Vec<CTPivotSelection>,
12170    #[cfg(feature = "sml-extensions")]
12171    #[serde(rename = "extLst")]
12172    #[serde(default, skip_serializing_if = "Option::is_none")]
12173    pub extension_list: Option<Box<ExtensionList>>,
12174    /// Unknown attributes captured for roundtrip fidelity.
12175    #[cfg(feature = "extra-attrs")]
12176    #[serde(skip)]
12177    #[cfg(feature = "extra-attrs")]
12178    #[serde(default)]
12179    #[cfg(feature = "extra-attrs")]
12180    pub extra_attrs: std::collections::HashMap<String, String>,
12181    /// Unknown child elements captured for roundtrip fidelity.
12182    #[cfg(feature = "extra-children")]
12183    #[serde(skip)]
12184    #[cfg(feature = "extra-children")]
12185    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12186}
12187
12188#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12189#[serde(rename = "pane")]
12190pub struct Pane {
12191    #[cfg(feature = "sml-structure")]
12192    #[serde(rename = "@xSplit")]
12193    #[serde(default, skip_serializing_if = "Option::is_none")]
12194    pub x_split: Option<f64>,
12195    #[cfg(feature = "sml-structure")]
12196    #[serde(rename = "@ySplit")]
12197    #[serde(default, skip_serializing_if = "Option::is_none")]
12198    pub y_split: Option<f64>,
12199    #[cfg(feature = "sml-structure")]
12200    #[serde(rename = "@topLeftCell")]
12201    #[serde(default, skip_serializing_if = "Option::is_none")]
12202    pub top_left_cell: Option<CellRef>,
12203    #[cfg(feature = "sml-structure")]
12204    #[serde(rename = "@activePane")]
12205    #[serde(default, skip_serializing_if = "Option::is_none")]
12206    pub active_pane: Option<PaneType>,
12207    #[cfg(feature = "sml-structure")]
12208    #[serde(rename = "@state")]
12209    #[serde(default, skip_serializing_if = "Option::is_none")]
12210    pub state: Option<PaneState>,
12211    /// Unknown attributes captured for roundtrip fidelity.
12212    #[cfg(feature = "extra-attrs")]
12213    #[serde(skip)]
12214    #[cfg(feature = "extra-attrs")]
12215    #[serde(default)]
12216    #[cfg(feature = "extra-attrs")]
12217    pub extra_attrs: std::collections::HashMap<String, String>,
12218}
12219
12220#[derive(Debug, Clone, Serialize, Deserialize)]
12221pub struct CTPivotSelection {
12222    #[serde(rename = "@pane")]
12223    #[serde(default, skip_serializing_if = "Option::is_none")]
12224    pub pane: Option<PaneType>,
12225    #[serde(rename = "@showHeader")]
12226    #[serde(
12227        default,
12228        skip_serializing_if = "Option::is_none",
12229        with = "ooxml_xml::ooxml_bool"
12230    )]
12231    pub show_header: Option<bool>,
12232    #[serde(rename = "@label")]
12233    #[serde(
12234        default,
12235        skip_serializing_if = "Option::is_none",
12236        with = "ooxml_xml::ooxml_bool"
12237    )]
12238    pub label: Option<bool>,
12239    #[serde(rename = "@data")]
12240    #[serde(
12241        default,
12242        skip_serializing_if = "Option::is_none",
12243        with = "ooxml_xml::ooxml_bool"
12244    )]
12245    pub data: Option<bool>,
12246    #[serde(rename = "@extendable")]
12247    #[serde(
12248        default,
12249        skip_serializing_if = "Option::is_none",
12250        with = "ooxml_xml::ooxml_bool"
12251    )]
12252    pub extendable: Option<bool>,
12253    #[serde(rename = "@count")]
12254    #[serde(default, skip_serializing_if = "Option::is_none")]
12255    pub count: Option<u32>,
12256    #[serde(rename = "@axis")]
12257    #[serde(default, skip_serializing_if = "Option::is_none")]
12258    pub axis: Option<STAxis>,
12259    #[serde(rename = "@dimension")]
12260    #[serde(default, skip_serializing_if = "Option::is_none")]
12261    pub dimension: Option<u32>,
12262    #[serde(rename = "@start")]
12263    #[serde(default, skip_serializing_if = "Option::is_none")]
12264    pub start: Option<u32>,
12265    #[serde(rename = "@min")]
12266    #[serde(default, skip_serializing_if = "Option::is_none")]
12267    pub start_column: Option<u32>,
12268    #[serde(rename = "@max")]
12269    #[serde(default, skip_serializing_if = "Option::is_none")]
12270    pub end_column: Option<u32>,
12271    #[serde(rename = "@activeRow")]
12272    #[serde(default, skip_serializing_if = "Option::is_none")]
12273    pub active_row: Option<u32>,
12274    #[serde(rename = "@activeCol")]
12275    #[serde(default, skip_serializing_if = "Option::is_none")]
12276    pub active_col: Option<u32>,
12277    #[serde(rename = "@previousRow")]
12278    #[serde(default, skip_serializing_if = "Option::is_none")]
12279    pub previous_row: Option<u32>,
12280    #[serde(rename = "@previousCol")]
12281    #[serde(default, skip_serializing_if = "Option::is_none")]
12282    pub previous_col: Option<u32>,
12283    #[serde(rename = "@click")]
12284    #[serde(default, skip_serializing_if = "Option::is_none")]
12285    pub click: Option<u32>,
12286    #[serde(rename = "@r:id")]
12287    #[serde(default, skip_serializing_if = "Option::is_none")]
12288    pub id: Option<STRelationshipId>,
12289    #[serde(rename = "pivotArea")]
12290    pub pivot_area: Box<PivotArea>,
12291    /// Unknown attributes captured for roundtrip fidelity.
12292    #[cfg(feature = "extra-attrs")]
12293    #[serde(skip)]
12294    #[cfg(feature = "extra-attrs")]
12295    #[serde(default)]
12296    #[cfg(feature = "extra-attrs")]
12297    pub extra_attrs: std::collections::HashMap<String, String>,
12298    /// Unknown child elements captured for roundtrip fidelity.
12299    #[cfg(feature = "extra-children")]
12300    #[serde(skip)]
12301    #[cfg(feature = "extra-children")]
12302    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12303}
12304
12305#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12306#[serde(rename = "selection")]
12307pub struct Selection {
12308    #[serde(rename = "@pane")]
12309    #[serde(default, skip_serializing_if = "Option::is_none")]
12310    pub pane: Option<PaneType>,
12311    #[serde(rename = "@activeCell")]
12312    #[serde(default, skip_serializing_if = "Option::is_none")]
12313    pub active_cell: Option<CellRef>,
12314    #[serde(rename = "@activeCellId")]
12315    #[serde(default, skip_serializing_if = "Option::is_none")]
12316    pub active_cell_id: Option<u32>,
12317    #[serde(rename = "@sqref")]
12318    #[serde(default, skip_serializing_if = "Option::is_none")]
12319    pub square_reference: Option<SquareRef>,
12320    /// Unknown attributes captured for roundtrip fidelity.
12321    #[cfg(feature = "extra-attrs")]
12322    #[serde(skip)]
12323    #[cfg(feature = "extra-attrs")]
12324    #[serde(default)]
12325    #[cfg(feature = "extra-attrs")]
12326    pub extra_attrs: std::collections::HashMap<String, String>,
12327}
12328
12329#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12330#[serde(rename = "rowBreaks")]
12331pub struct PageBreaks {
12332    #[cfg(feature = "sml-layout")]
12333    #[serde(rename = "@count")]
12334    #[serde(default, skip_serializing_if = "Option::is_none")]
12335    pub count: Option<u32>,
12336    #[cfg(feature = "sml-layout")]
12337    #[serde(rename = "@manualBreakCount")]
12338    #[serde(default, skip_serializing_if = "Option::is_none")]
12339    pub manual_break_count: Option<u32>,
12340    #[cfg(feature = "sml-layout")]
12341    #[serde(rename = "brk")]
12342    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12343    pub brk: Vec<PageBreak>,
12344    /// Unknown attributes captured for roundtrip fidelity.
12345    #[cfg(feature = "extra-attrs")]
12346    #[serde(skip)]
12347    #[cfg(feature = "extra-attrs")]
12348    #[serde(default)]
12349    #[cfg(feature = "extra-attrs")]
12350    pub extra_attrs: std::collections::HashMap<String, String>,
12351    /// Unknown child elements captured for roundtrip fidelity.
12352    #[cfg(feature = "extra-children")]
12353    #[serde(skip)]
12354    #[cfg(feature = "extra-children")]
12355    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12356}
12357
12358#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12359pub struct PageBreak {
12360    #[serde(rename = "@id")]
12361    #[serde(default, skip_serializing_if = "Option::is_none")]
12362    pub id: Option<u32>,
12363    #[serde(rename = "@min")]
12364    #[serde(default, skip_serializing_if = "Option::is_none")]
12365    pub start_column: Option<u32>,
12366    #[serde(rename = "@max")]
12367    #[serde(default, skip_serializing_if = "Option::is_none")]
12368    pub end_column: Option<u32>,
12369    #[serde(rename = "@man")]
12370    #[serde(
12371        default,
12372        skip_serializing_if = "Option::is_none",
12373        with = "ooxml_xml::ooxml_bool"
12374    )]
12375    pub man: Option<bool>,
12376    #[serde(rename = "@pt")]
12377    #[serde(
12378        default,
12379        skip_serializing_if = "Option::is_none",
12380        with = "ooxml_xml::ooxml_bool"
12381    )]
12382    pub pt: Option<bool>,
12383    /// Unknown attributes captured for roundtrip fidelity.
12384    #[cfg(feature = "extra-attrs")]
12385    #[serde(skip)]
12386    #[cfg(feature = "extra-attrs")]
12387    #[serde(default)]
12388    #[cfg(feature = "extra-attrs")]
12389    pub extra_attrs: std::collections::HashMap<String, String>,
12390}
12391
12392#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12393pub struct OutlineProperties {
12394    #[serde(rename = "@applyStyles")]
12395    #[serde(
12396        default,
12397        skip_serializing_if = "Option::is_none",
12398        with = "ooxml_xml::ooxml_bool"
12399    )]
12400    pub apply_styles: Option<bool>,
12401    #[serde(rename = "@summaryBelow")]
12402    #[serde(
12403        default,
12404        skip_serializing_if = "Option::is_none",
12405        with = "ooxml_xml::ooxml_bool"
12406    )]
12407    pub summary_below: Option<bool>,
12408    #[serde(rename = "@summaryRight")]
12409    #[serde(
12410        default,
12411        skip_serializing_if = "Option::is_none",
12412        with = "ooxml_xml::ooxml_bool"
12413    )]
12414    pub summary_right: Option<bool>,
12415    #[serde(rename = "@showOutlineSymbols")]
12416    #[serde(
12417        default,
12418        skip_serializing_if = "Option::is_none",
12419        with = "ooxml_xml::ooxml_bool"
12420    )]
12421    pub show_outline_symbols: Option<bool>,
12422    /// Unknown attributes captured for roundtrip fidelity.
12423    #[cfg(feature = "extra-attrs")]
12424    #[serde(skip)]
12425    #[cfg(feature = "extra-attrs")]
12426    #[serde(default)]
12427    #[cfg(feature = "extra-attrs")]
12428    pub extra_attrs: std::collections::HashMap<String, String>,
12429}
12430
12431#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12432pub struct PageSetupProperties {
12433    #[serde(rename = "@autoPageBreaks")]
12434    #[serde(
12435        default,
12436        skip_serializing_if = "Option::is_none",
12437        with = "ooxml_xml::ooxml_bool"
12438    )]
12439    pub auto_page_breaks: Option<bool>,
12440    #[serde(rename = "@fitToPage")]
12441    #[serde(
12442        default,
12443        skip_serializing_if = "Option::is_none",
12444        with = "ooxml_xml::ooxml_bool"
12445    )]
12446    pub fit_to_page: Option<bool>,
12447    /// Unknown attributes captured for roundtrip fidelity.
12448    #[cfg(feature = "extra-attrs")]
12449    #[serde(skip)]
12450    #[cfg(feature = "extra-attrs")]
12451    #[serde(default)]
12452    #[cfg(feature = "extra-attrs")]
12453    pub extra_attrs: std::collections::HashMap<String, String>,
12454}
12455
12456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12457pub struct CTDataConsolidate {
12458    #[serde(rename = "@function")]
12459    #[serde(default, skip_serializing_if = "Option::is_none")]
12460    pub function: Option<STDataConsolidateFunction>,
12461    #[serde(rename = "@startLabels")]
12462    #[serde(
12463        default,
12464        skip_serializing_if = "Option::is_none",
12465        with = "ooxml_xml::ooxml_bool"
12466    )]
12467    pub start_labels: Option<bool>,
12468    #[serde(rename = "@leftLabels")]
12469    #[serde(
12470        default,
12471        skip_serializing_if = "Option::is_none",
12472        with = "ooxml_xml::ooxml_bool"
12473    )]
12474    pub left_labels: Option<bool>,
12475    #[serde(rename = "@topLabels")]
12476    #[serde(
12477        default,
12478        skip_serializing_if = "Option::is_none",
12479        with = "ooxml_xml::ooxml_bool"
12480    )]
12481    pub top_labels: Option<bool>,
12482    #[serde(rename = "@link")]
12483    #[serde(
12484        default,
12485        skip_serializing_if = "Option::is_none",
12486        with = "ooxml_xml::ooxml_bool"
12487    )]
12488    pub link: Option<bool>,
12489    #[serde(rename = "dataRefs")]
12490    #[serde(default, skip_serializing_if = "Option::is_none")]
12491    pub data_refs: Option<Box<CTDataRefs>>,
12492    /// Unknown attributes captured for roundtrip fidelity.
12493    #[cfg(feature = "extra-attrs")]
12494    #[serde(skip)]
12495    #[cfg(feature = "extra-attrs")]
12496    #[serde(default)]
12497    #[cfg(feature = "extra-attrs")]
12498    pub extra_attrs: std::collections::HashMap<String, String>,
12499    /// Unknown child elements captured for roundtrip fidelity.
12500    #[cfg(feature = "extra-children")]
12501    #[serde(skip)]
12502    #[cfg(feature = "extra-children")]
12503    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12504}
12505
12506#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12507pub struct CTDataRefs {
12508    #[serde(rename = "@count")]
12509    #[serde(default, skip_serializing_if = "Option::is_none")]
12510    pub count: Option<u32>,
12511    #[serde(rename = "dataRef")]
12512    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12513    pub data_ref: Vec<CTDataRef>,
12514    /// Unknown attributes captured for roundtrip fidelity.
12515    #[cfg(feature = "extra-attrs")]
12516    #[serde(skip)]
12517    #[cfg(feature = "extra-attrs")]
12518    #[serde(default)]
12519    #[cfg(feature = "extra-attrs")]
12520    pub extra_attrs: std::collections::HashMap<String, String>,
12521    /// Unknown child elements captured for roundtrip fidelity.
12522    #[cfg(feature = "extra-children")]
12523    #[serde(skip)]
12524    #[cfg(feature = "extra-children")]
12525    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12526}
12527
12528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12529pub struct CTDataRef {
12530    #[serde(rename = "@ref")]
12531    #[serde(default, skip_serializing_if = "Option::is_none")]
12532    pub reference: Option<Reference>,
12533    #[serde(rename = "@name")]
12534    #[serde(default, skip_serializing_if = "Option::is_none")]
12535    pub name: Option<XmlString>,
12536    #[serde(rename = "@sheet")]
12537    #[serde(default, skip_serializing_if = "Option::is_none")]
12538    pub sheet: Option<XmlString>,
12539    #[serde(rename = "@r:id")]
12540    #[serde(default, skip_serializing_if = "Option::is_none")]
12541    pub id: Option<STRelationshipId>,
12542    /// Unknown attributes captured for roundtrip fidelity.
12543    #[cfg(feature = "extra-attrs")]
12544    #[serde(skip)]
12545    #[cfg(feature = "extra-attrs")]
12546    #[serde(default)]
12547    #[cfg(feature = "extra-attrs")]
12548    pub extra_attrs: std::collections::HashMap<String, String>,
12549}
12550
12551#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12552#[serde(rename = "mergeCells")]
12553pub struct MergedCells {
12554    #[serde(rename = "@count")]
12555    #[serde(default, skip_serializing_if = "Option::is_none")]
12556    pub count: Option<u32>,
12557    #[serde(rename = "mergeCell")]
12558    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12559    pub merge_cell: Vec<MergedCell>,
12560    /// Unknown attributes captured for roundtrip fidelity.
12561    #[cfg(feature = "extra-attrs")]
12562    #[serde(skip)]
12563    #[cfg(feature = "extra-attrs")]
12564    #[serde(default)]
12565    #[cfg(feature = "extra-attrs")]
12566    pub extra_attrs: std::collections::HashMap<String, String>,
12567    /// Unknown child elements captured for roundtrip fidelity.
12568    #[cfg(feature = "extra-children")]
12569    #[serde(skip)]
12570    #[cfg(feature = "extra-children")]
12571    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12572}
12573
12574#[derive(Debug, Clone, Serialize, Deserialize)]
12575#[serde(rename = "mergeCell")]
12576pub struct MergedCell {
12577    #[serde(rename = "@ref")]
12578    pub reference: Reference,
12579    /// Unknown attributes captured for roundtrip fidelity.
12580    #[cfg(feature = "extra-attrs")]
12581    #[serde(skip)]
12582    #[cfg(feature = "extra-attrs")]
12583    #[serde(default)]
12584    #[cfg(feature = "extra-attrs")]
12585    pub extra_attrs: std::collections::HashMap<String, String>,
12586}
12587
12588#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12589pub struct SmartTags {
12590    #[serde(rename = "cellSmartTags")]
12591    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12592    pub cell_smart_tags: Vec<CellSmartTags>,
12593    /// Unknown child elements captured for roundtrip fidelity.
12594    #[cfg(feature = "extra-children")]
12595    #[serde(skip)]
12596    #[cfg(feature = "extra-children")]
12597    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12598}
12599
12600#[derive(Debug, Clone, Serialize, Deserialize)]
12601pub struct CellSmartTags {
12602    #[serde(rename = "@r")]
12603    pub reference: CellRef,
12604    #[serde(rename = "cellSmartTag")]
12605    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12606    pub cell_smart_tag: Vec<CellSmartTag>,
12607    /// Unknown attributes captured for roundtrip fidelity.
12608    #[cfg(feature = "extra-attrs")]
12609    #[serde(skip)]
12610    #[cfg(feature = "extra-attrs")]
12611    #[serde(default)]
12612    #[cfg(feature = "extra-attrs")]
12613    pub extra_attrs: std::collections::HashMap<String, String>,
12614    /// Unknown child elements captured for roundtrip fidelity.
12615    #[cfg(feature = "extra-children")]
12616    #[serde(skip)]
12617    #[cfg(feature = "extra-children")]
12618    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12619}
12620
12621#[derive(Debug, Clone, Serialize, Deserialize)]
12622pub struct CellSmartTag {
12623    #[serde(rename = "@type")]
12624    pub r#type: u32,
12625    #[serde(rename = "@deleted")]
12626    #[serde(
12627        default,
12628        skip_serializing_if = "Option::is_none",
12629        with = "ooxml_xml::ooxml_bool"
12630    )]
12631    pub deleted: Option<bool>,
12632    #[serde(rename = "@xmlBased")]
12633    #[serde(
12634        default,
12635        skip_serializing_if = "Option::is_none",
12636        with = "ooxml_xml::ooxml_bool"
12637    )]
12638    pub xml_based: Option<bool>,
12639    #[serde(rename = "cellSmartTagPr")]
12640    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12641    pub cell_smart_tag_pr: Vec<CTCellSmartTagPr>,
12642    /// Unknown attributes captured for roundtrip fidelity.
12643    #[cfg(feature = "extra-attrs")]
12644    #[serde(skip)]
12645    #[cfg(feature = "extra-attrs")]
12646    #[serde(default)]
12647    #[cfg(feature = "extra-attrs")]
12648    pub extra_attrs: std::collections::HashMap<String, String>,
12649    /// Unknown child elements captured for roundtrip fidelity.
12650    #[cfg(feature = "extra-children")]
12651    #[serde(skip)]
12652    #[cfg(feature = "extra-children")]
12653    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12654}
12655
12656#[derive(Debug, Clone, Serialize, Deserialize)]
12657pub struct CTCellSmartTagPr {
12658    #[serde(rename = "@key")]
12659    pub key: XmlString,
12660    #[serde(rename = "@val")]
12661    pub value: XmlString,
12662    /// Unknown attributes captured for roundtrip fidelity.
12663    #[cfg(feature = "extra-attrs")]
12664    #[serde(skip)]
12665    #[cfg(feature = "extra-attrs")]
12666    #[serde(default)]
12667    #[cfg(feature = "extra-attrs")]
12668    pub extra_attrs: std::collections::HashMap<String, String>,
12669}
12670
12671#[derive(Debug, Clone, Serialize, Deserialize)]
12672pub struct Drawing {
12673    #[serde(rename = "@r:id")]
12674    pub id: STRelationshipId,
12675    /// Unknown attributes captured for roundtrip fidelity.
12676    #[cfg(feature = "extra-attrs")]
12677    #[serde(skip)]
12678    #[cfg(feature = "extra-attrs")]
12679    #[serde(default)]
12680    #[cfg(feature = "extra-attrs")]
12681    pub extra_attrs: std::collections::HashMap<String, String>,
12682}
12683
12684#[derive(Debug, Clone, Serialize, Deserialize)]
12685pub struct LegacyDrawing {
12686    #[serde(rename = "@r:id")]
12687    pub id: STRelationshipId,
12688    /// Unknown attributes captured for roundtrip fidelity.
12689    #[cfg(feature = "extra-attrs")]
12690    #[serde(skip)]
12691    #[cfg(feature = "extra-attrs")]
12692    #[serde(default)]
12693    #[cfg(feature = "extra-attrs")]
12694    pub extra_attrs: std::collections::HashMap<String, String>,
12695}
12696
12697#[derive(Debug, Clone, Serialize, Deserialize)]
12698pub struct DrawingHeaderFooter {
12699    #[serde(rename = "@r:id")]
12700    pub id: STRelationshipId,
12701    #[serde(rename = "@lho")]
12702    #[serde(default, skip_serializing_if = "Option::is_none")]
12703    pub lho: Option<u32>,
12704    #[serde(rename = "@lhe")]
12705    #[serde(default, skip_serializing_if = "Option::is_none")]
12706    pub lhe: Option<u32>,
12707    #[serde(rename = "@lhf")]
12708    #[serde(default, skip_serializing_if = "Option::is_none")]
12709    pub lhf: Option<u32>,
12710    #[serde(rename = "@cho")]
12711    #[serde(default, skip_serializing_if = "Option::is_none")]
12712    pub cho: Option<u32>,
12713    #[serde(rename = "@che")]
12714    #[serde(default, skip_serializing_if = "Option::is_none")]
12715    pub che: Option<u32>,
12716    #[serde(rename = "@chf")]
12717    #[serde(default, skip_serializing_if = "Option::is_none")]
12718    pub chf: Option<u32>,
12719    #[serde(rename = "@rho")]
12720    #[serde(default, skip_serializing_if = "Option::is_none")]
12721    pub rho: Option<u32>,
12722    #[serde(rename = "@rhe")]
12723    #[serde(default, skip_serializing_if = "Option::is_none")]
12724    pub rhe: Option<u32>,
12725    #[serde(rename = "@rhf")]
12726    #[serde(default, skip_serializing_if = "Option::is_none")]
12727    pub rhf: Option<u32>,
12728    #[serde(rename = "@lfo")]
12729    #[serde(default, skip_serializing_if = "Option::is_none")]
12730    pub lfo: Option<u32>,
12731    #[serde(rename = "@lfe")]
12732    #[serde(default, skip_serializing_if = "Option::is_none")]
12733    pub lfe: Option<u32>,
12734    #[serde(rename = "@lff")]
12735    #[serde(default, skip_serializing_if = "Option::is_none")]
12736    pub lff: Option<u32>,
12737    #[serde(rename = "@cfo")]
12738    #[serde(default, skip_serializing_if = "Option::is_none")]
12739    pub cfo: Option<u32>,
12740    #[serde(rename = "@cfe")]
12741    #[serde(default, skip_serializing_if = "Option::is_none")]
12742    pub cfe: Option<u32>,
12743    #[serde(rename = "@cff")]
12744    #[serde(default, skip_serializing_if = "Option::is_none")]
12745    pub cff: Option<u32>,
12746    #[serde(rename = "@rfo")]
12747    #[serde(default, skip_serializing_if = "Option::is_none")]
12748    pub rfo: Option<u32>,
12749    #[serde(rename = "@rfe")]
12750    #[serde(default, skip_serializing_if = "Option::is_none")]
12751    pub rfe: Option<u32>,
12752    #[serde(rename = "@rff")]
12753    #[serde(default, skip_serializing_if = "Option::is_none")]
12754    pub rff: Option<u32>,
12755    /// Unknown attributes captured for roundtrip fidelity.
12756    #[cfg(feature = "extra-attrs")]
12757    #[serde(skip)]
12758    #[cfg(feature = "extra-attrs")]
12759    #[serde(default)]
12760    #[cfg(feature = "extra-attrs")]
12761    pub extra_attrs: std::collections::HashMap<String, String>,
12762}
12763
12764#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12765pub struct CustomSheetViews {
12766    #[serde(rename = "customSheetView")]
12767    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12768    pub custom_sheet_view: Vec<CustomSheetView>,
12769    /// Unknown child elements captured for roundtrip fidelity.
12770    #[cfg(feature = "extra-children")]
12771    #[serde(skip)]
12772    #[cfg(feature = "extra-children")]
12773    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12774}
12775
12776#[derive(Debug, Clone, Serialize, Deserialize)]
12777pub struct CustomSheetView {
12778    #[serde(rename = "@guid")]
12779    pub guid: Guid,
12780    #[serde(rename = "@scale")]
12781    #[serde(default, skip_serializing_if = "Option::is_none")]
12782    pub scale: Option<u32>,
12783    #[serde(rename = "@colorId")]
12784    #[serde(default, skip_serializing_if = "Option::is_none")]
12785    pub color_id: Option<u32>,
12786    #[serde(rename = "@showPageBreaks")]
12787    #[serde(
12788        default,
12789        skip_serializing_if = "Option::is_none",
12790        with = "ooxml_xml::ooxml_bool"
12791    )]
12792    pub show_page_breaks: Option<bool>,
12793    #[serde(rename = "@showFormulas")]
12794    #[serde(
12795        default,
12796        skip_serializing_if = "Option::is_none",
12797        with = "ooxml_xml::ooxml_bool"
12798    )]
12799    pub show_formulas: Option<bool>,
12800    #[serde(rename = "@showGridLines")]
12801    #[serde(
12802        default,
12803        skip_serializing_if = "Option::is_none",
12804        with = "ooxml_xml::ooxml_bool"
12805    )]
12806    pub show_grid_lines: Option<bool>,
12807    #[serde(rename = "@showRowCol")]
12808    #[serde(
12809        default,
12810        skip_serializing_if = "Option::is_none",
12811        with = "ooxml_xml::ooxml_bool"
12812    )]
12813    pub show_row_col: Option<bool>,
12814    #[serde(rename = "@outlineSymbols")]
12815    #[serde(
12816        default,
12817        skip_serializing_if = "Option::is_none",
12818        with = "ooxml_xml::ooxml_bool"
12819    )]
12820    pub outline_symbols: Option<bool>,
12821    #[serde(rename = "@zeroValues")]
12822    #[serde(
12823        default,
12824        skip_serializing_if = "Option::is_none",
12825        with = "ooxml_xml::ooxml_bool"
12826    )]
12827    pub zero_values: Option<bool>,
12828    #[serde(rename = "@fitToPage")]
12829    #[serde(
12830        default,
12831        skip_serializing_if = "Option::is_none",
12832        with = "ooxml_xml::ooxml_bool"
12833    )]
12834    pub fit_to_page: Option<bool>,
12835    #[serde(rename = "@printArea")]
12836    #[serde(
12837        default,
12838        skip_serializing_if = "Option::is_none",
12839        with = "ooxml_xml::ooxml_bool"
12840    )]
12841    pub print_area: Option<bool>,
12842    #[serde(rename = "@filter")]
12843    #[serde(
12844        default,
12845        skip_serializing_if = "Option::is_none",
12846        with = "ooxml_xml::ooxml_bool"
12847    )]
12848    pub filter: Option<bool>,
12849    #[serde(rename = "@showAutoFilter")]
12850    #[serde(
12851        default,
12852        skip_serializing_if = "Option::is_none",
12853        with = "ooxml_xml::ooxml_bool"
12854    )]
12855    pub show_auto_filter: Option<bool>,
12856    #[serde(rename = "@hiddenRows")]
12857    #[serde(
12858        default,
12859        skip_serializing_if = "Option::is_none",
12860        with = "ooxml_xml::ooxml_bool"
12861    )]
12862    pub hidden_rows: Option<bool>,
12863    #[serde(rename = "@hiddenColumns")]
12864    #[serde(
12865        default,
12866        skip_serializing_if = "Option::is_none",
12867        with = "ooxml_xml::ooxml_bool"
12868    )]
12869    pub hidden_columns: Option<bool>,
12870    #[serde(rename = "@state")]
12871    #[serde(default, skip_serializing_if = "Option::is_none")]
12872    pub state: Option<SheetState>,
12873    #[serde(rename = "@filterUnique")]
12874    #[serde(
12875        default,
12876        skip_serializing_if = "Option::is_none",
12877        with = "ooxml_xml::ooxml_bool"
12878    )]
12879    pub filter_unique: Option<bool>,
12880    #[serde(rename = "@view")]
12881    #[serde(default, skip_serializing_if = "Option::is_none")]
12882    pub view: Option<SheetViewType>,
12883    #[serde(rename = "@showRuler")]
12884    #[serde(
12885        default,
12886        skip_serializing_if = "Option::is_none",
12887        with = "ooxml_xml::ooxml_bool"
12888    )]
12889    pub show_ruler: Option<bool>,
12890    #[serde(rename = "@topLeftCell")]
12891    #[serde(default, skip_serializing_if = "Option::is_none")]
12892    pub top_left_cell: Option<CellRef>,
12893    #[serde(rename = "pane")]
12894    #[serde(default, skip_serializing_if = "Option::is_none")]
12895    pub pane: Option<Box<Pane>>,
12896    #[serde(rename = "selection")]
12897    #[serde(default, skip_serializing_if = "Option::is_none")]
12898    pub selection: Option<Box<Selection>>,
12899    #[serde(rename = "rowBreaks")]
12900    #[serde(default, skip_serializing_if = "Option::is_none")]
12901    pub row_breaks: Option<Box<PageBreaks>>,
12902    #[serde(rename = "colBreaks")]
12903    #[serde(default, skip_serializing_if = "Option::is_none")]
12904    pub col_breaks: Option<Box<PageBreaks>>,
12905    #[serde(rename = "pageMargins")]
12906    #[serde(default, skip_serializing_if = "Option::is_none")]
12907    pub page_margins: Option<Box<PageMargins>>,
12908    #[serde(rename = "printOptions")]
12909    #[serde(default, skip_serializing_if = "Option::is_none")]
12910    pub print_options: Option<Box<PrintOptions>>,
12911    #[serde(rename = "pageSetup")]
12912    #[serde(default, skip_serializing_if = "Option::is_none")]
12913    pub page_setup: Option<Box<PageSetup>>,
12914    #[serde(rename = "headerFooter")]
12915    #[serde(default, skip_serializing_if = "Option::is_none")]
12916    pub header_footer: Option<Box<HeaderFooter>>,
12917    #[serde(rename = "autoFilter")]
12918    #[serde(default, skip_serializing_if = "Option::is_none")]
12919    pub auto_filter: Option<Box<AutoFilter>>,
12920    #[serde(rename = "extLst")]
12921    #[serde(default, skip_serializing_if = "Option::is_none")]
12922    pub extension_list: Option<Box<ExtensionList>>,
12923    /// Unknown attributes captured for roundtrip fidelity.
12924    #[cfg(feature = "extra-attrs")]
12925    #[serde(skip)]
12926    #[cfg(feature = "extra-attrs")]
12927    #[serde(default)]
12928    #[cfg(feature = "extra-attrs")]
12929    pub extra_attrs: std::collections::HashMap<String, String>,
12930    /// Unknown child elements captured for roundtrip fidelity.
12931    #[cfg(feature = "extra-children")]
12932    #[serde(skip)]
12933    #[cfg(feature = "extra-children")]
12934    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12935}
12936
12937#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12938#[serde(rename = "dataValidations")]
12939pub struct DataValidations {
12940    #[serde(rename = "@disablePrompts")]
12941    #[serde(
12942        default,
12943        skip_serializing_if = "Option::is_none",
12944        with = "ooxml_xml::ooxml_bool"
12945    )]
12946    pub disable_prompts: Option<bool>,
12947    #[serde(rename = "@xWindow")]
12948    #[serde(default, skip_serializing_if = "Option::is_none")]
12949    pub x_window: Option<u32>,
12950    #[serde(rename = "@yWindow")]
12951    #[serde(default, skip_serializing_if = "Option::is_none")]
12952    pub y_window: Option<u32>,
12953    #[serde(rename = "@count")]
12954    #[serde(default, skip_serializing_if = "Option::is_none")]
12955    pub count: Option<u32>,
12956    #[serde(rename = "dataValidation")]
12957    #[serde(default, skip_serializing_if = "Vec::is_empty")]
12958    pub data_validation: Vec<DataValidation>,
12959    /// Unknown attributes captured for roundtrip fidelity.
12960    #[cfg(feature = "extra-attrs")]
12961    #[serde(skip)]
12962    #[cfg(feature = "extra-attrs")]
12963    #[serde(default)]
12964    #[cfg(feature = "extra-attrs")]
12965    pub extra_attrs: std::collections::HashMap<String, String>,
12966    /// Unknown child elements captured for roundtrip fidelity.
12967    #[cfg(feature = "extra-children")]
12968    #[serde(skip)]
12969    #[cfg(feature = "extra-children")]
12970    pub extra_children: Vec<ooxml_xml::PositionedNode>,
12971}
12972
12973#[derive(Debug, Clone, Serialize, Deserialize)]
12974#[serde(rename = "dataValidation")]
12975pub struct DataValidation {
12976    #[cfg(feature = "sml-validation")]
12977    #[serde(rename = "@type")]
12978    #[serde(default, skip_serializing_if = "Option::is_none")]
12979    pub r#type: Option<ValidationType>,
12980    #[cfg(feature = "sml-validation")]
12981    #[serde(rename = "@errorStyle")]
12982    #[serde(default, skip_serializing_if = "Option::is_none")]
12983    pub error_style: Option<ValidationErrorStyle>,
12984    #[cfg(feature = "sml-validation")]
12985    #[serde(rename = "@imeMode")]
12986    #[serde(default, skip_serializing_if = "Option::is_none")]
12987    pub ime_mode: Option<STDataValidationImeMode>,
12988    #[cfg(feature = "sml-validation")]
12989    #[serde(rename = "@operator")]
12990    #[serde(default, skip_serializing_if = "Option::is_none")]
12991    pub operator: Option<ValidationOperator>,
12992    #[cfg(feature = "sml-validation")]
12993    #[serde(rename = "@allowBlank")]
12994    #[serde(
12995        default,
12996        skip_serializing_if = "Option::is_none",
12997        with = "ooxml_xml::ooxml_bool"
12998    )]
12999    pub allow_blank: Option<bool>,
13000    #[cfg(feature = "sml-validation")]
13001    #[serde(rename = "@showDropDown")]
13002    #[serde(
13003        default,
13004        skip_serializing_if = "Option::is_none",
13005        with = "ooxml_xml::ooxml_bool"
13006    )]
13007    pub show_drop_down: Option<bool>,
13008    #[cfg(feature = "sml-validation")]
13009    #[serde(rename = "@showInputMessage")]
13010    #[serde(
13011        default,
13012        skip_serializing_if = "Option::is_none",
13013        with = "ooxml_xml::ooxml_bool"
13014    )]
13015    pub show_input_message: Option<bool>,
13016    #[cfg(feature = "sml-validation")]
13017    #[serde(rename = "@showErrorMessage")]
13018    #[serde(
13019        default,
13020        skip_serializing_if = "Option::is_none",
13021        with = "ooxml_xml::ooxml_bool"
13022    )]
13023    pub show_error_message: Option<bool>,
13024    #[cfg(feature = "sml-validation")]
13025    #[serde(rename = "@errorTitle")]
13026    #[serde(default, skip_serializing_if = "Option::is_none")]
13027    pub error_title: Option<XmlString>,
13028    #[cfg(feature = "sml-validation")]
13029    #[serde(rename = "@error")]
13030    #[serde(default, skip_serializing_if = "Option::is_none")]
13031    pub error: Option<XmlString>,
13032    #[cfg(feature = "sml-validation")]
13033    #[serde(rename = "@promptTitle")]
13034    #[serde(default, skip_serializing_if = "Option::is_none")]
13035    pub prompt_title: Option<XmlString>,
13036    #[cfg(feature = "sml-validation")]
13037    #[serde(rename = "@prompt")]
13038    #[serde(default, skip_serializing_if = "Option::is_none")]
13039    pub prompt: Option<XmlString>,
13040    #[cfg(feature = "sml-validation")]
13041    #[serde(rename = "@sqref")]
13042    pub square_reference: SquareRef,
13043    #[cfg(feature = "sml-validation")]
13044    #[serde(rename = "formula1")]
13045    #[serde(default, skip_serializing_if = "Option::is_none")]
13046    pub formula1: Option<STFormula>,
13047    #[cfg(feature = "sml-validation")]
13048    #[serde(rename = "formula2")]
13049    #[serde(default, skip_serializing_if = "Option::is_none")]
13050    pub formula2: Option<STFormula>,
13051    /// Unknown attributes captured for roundtrip fidelity.
13052    #[cfg(feature = "extra-attrs")]
13053    #[serde(skip)]
13054    #[cfg(feature = "extra-attrs")]
13055    #[serde(default)]
13056    #[cfg(feature = "extra-attrs")]
13057    pub extra_attrs: std::collections::HashMap<String, String>,
13058    /// Unknown child elements captured for roundtrip fidelity.
13059    #[cfg(feature = "extra-children")]
13060    #[serde(skip)]
13061    #[cfg(feature = "extra-children")]
13062    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13063}
13064
13065#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13066#[serde(rename = "conditionalFormatting")]
13067pub struct ConditionalFormatting {
13068    #[cfg(feature = "sml-pivot")]
13069    #[serde(rename = "@pivot")]
13070    #[serde(
13071        default,
13072        skip_serializing_if = "Option::is_none",
13073        with = "ooxml_xml::ooxml_bool"
13074    )]
13075    pub pivot: Option<bool>,
13076    #[cfg(feature = "sml-styling")]
13077    #[serde(rename = "@sqref")]
13078    #[serde(default, skip_serializing_if = "Option::is_none")]
13079    pub square_reference: Option<SquareRef>,
13080    #[cfg(feature = "sml-styling")]
13081    #[serde(rename = "cfRule")]
13082    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13083    pub cf_rule: Vec<ConditionalRule>,
13084    #[cfg(feature = "sml-extensions")]
13085    #[serde(rename = "extLst")]
13086    #[serde(default, skip_serializing_if = "Option::is_none")]
13087    pub extension_list: Option<Box<ExtensionList>>,
13088    /// Unknown attributes captured for roundtrip fidelity.
13089    #[cfg(feature = "extra-attrs")]
13090    #[serde(skip)]
13091    #[cfg(feature = "extra-attrs")]
13092    #[serde(default)]
13093    #[cfg(feature = "extra-attrs")]
13094    pub extra_attrs: std::collections::HashMap<String, String>,
13095    /// Unknown child elements captured for roundtrip fidelity.
13096    #[cfg(feature = "extra-children")]
13097    #[serde(skip)]
13098    #[cfg(feature = "extra-children")]
13099    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13100}
13101
13102#[derive(Debug, Clone, Serialize, Deserialize)]
13103#[serde(rename = "cfRule")]
13104pub struct ConditionalRule {
13105    #[cfg(feature = "sml-styling")]
13106    #[serde(rename = "@type")]
13107    #[serde(default, skip_serializing_if = "Option::is_none")]
13108    pub r#type: Option<ConditionalType>,
13109    #[cfg(feature = "sml-styling")]
13110    #[serde(rename = "@dxfId")]
13111    #[serde(default, skip_serializing_if = "Option::is_none")]
13112    pub dxf_id: Option<STDxfId>,
13113    #[cfg(feature = "sml-styling")]
13114    #[serde(rename = "@priority")]
13115    pub priority: i32,
13116    #[cfg(feature = "sml-styling")]
13117    #[serde(rename = "@stopIfTrue")]
13118    #[serde(
13119        default,
13120        skip_serializing_if = "Option::is_none",
13121        with = "ooxml_xml::ooxml_bool"
13122    )]
13123    pub stop_if_true: Option<bool>,
13124    #[cfg(feature = "sml-styling")]
13125    #[serde(rename = "@aboveAverage")]
13126    #[serde(
13127        default,
13128        skip_serializing_if = "Option::is_none",
13129        with = "ooxml_xml::ooxml_bool"
13130    )]
13131    pub above_average: Option<bool>,
13132    #[cfg(feature = "sml-styling")]
13133    #[serde(rename = "@percent")]
13134    #[serde(
13135        default,
13136        skip_serializing_if = "Option::is_none",
13137        with = "ooxml_xml::ooxml_bool"
13138    )]
13139    pub percent: Option<bool>,
13140    #[cfg(feature = "sml-styling")]
13141    #[serde(rename = "@bottom")]
13142    #[serde(
13143        default,
13144        skip_serializing_if = "Option::is_none",
13145        with = "ooxml_xml::ooxml_bool"
13146    )]
13147    pub bottom: Option<bool>,
13148    #[cfg(feature = "sml-styling")]
13149    #[serde(rename = "@operator")]
13150    #[serde(default, skip_serializing_if = "Option::is_none")]
13151    pub operator: Option<ConditionalOperator>,
13152    #[cfg(feature = "sml-styling")]
13153    #[serde(rename = "@text")]
13154    #[serde(default, skip_serializing_if = "Option::is_none")]
13155    pub text: Option<String>,
13156    #[cfg(feature = "sml-styling")]
13157    #[serde(rename = "@timePeriod")]
13158    #[serde(default, skip_serializing_if = "Option::is_none")]
13159    pub time_period: Option<STTimePeriod>,
13160    #[cfg(feature = "sml-styling")]
13161    #[serde(rename = "@rank")]
13162    #[serde(default, skip_serializing_if = "Option::is_none")]
13163    pub rank: Option<u32>,
13164    #[cfg(feature = "sml-styling")]
13165    #[serde(rename = "@stdDev")]
13166    #[serde(default, skip_serializing_if = "Option::is_none")]
13167    pub std_dev: Option<i32>,
13168    #[cfg(feature = "sml-styling")]
13169    #[serde(rename = "@equalAverage")]
13170    #[serde(
13171        default,
13172        skip_serializing_if = "Option::is_none",
13173        with = "ooxml_xml::ooxml_bool"
13174    )]
13175    pub equal_average: Option<bool>,
13176    #[cfg(feature = "sml-styling")]
13177    #[serde(rename = "formula")]
13178    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13179    pub formula: Vec<STFormula>,
13180    #[cfg(feature = "sml-styling")]
13181    #[serde(rename = "colorScale")]
13182    #[serde(default, skip_serializing_if = "Option::is_none")]
13183    pub color_scale: Option<Box<ColorScale>>,
13184    #[cfg(feature = "sml-styling")]
13185    #[serde(rename = "dataBar")]
13186    #[serde(default, skip_serializing_if = "Option::is_none")]
13187    pub data_bar: Option<Box<DataBar>>,
13188    #[cfg(feature = "sml-styling")]
13189    #[serde(rename = "iconSet")]
13190    #[serde(default, skip_serializing_if = "Option::is_none")]
13191    pub icon_set: Option<Box<IconSet>>,
13192    #[cfg(feature = "sml-extensions")]
13193    #[serde(rename = "extLst")]
13194    #[serde(default, skip_serializing_if = "Option::is_none")]
13195    pub extension_list: Option<Box<ExtensionList>>,
13196    /// Unknown attributes captured for roundtrip fidelity.
13197    #[cfg(feature = "extra-attrs")]
13198    #[serde(skip)]
13199    #[cfg(feature = "extra-attrs")]
13200    #[serde(default)]
13201    #[cfg(feature = "extra-attrs")]
13202    pub extra_attrs: std::collections::HashMap<String, String>,
13203    /// Unknown child elements captured for roundtrip fidelity.
13204    #[cfg(feature = "extra-children")]
13205    #[serde(skip)]
13206    #[cfg(feature = "extra-children")]
13207    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13208}
13209
13210#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13211#[serde(rename = "hyperlinks")]
13212pub struct Hyperlinks {
13213    #[serde(rename = "hyperlink")]
13214    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13215    pub hyperlink: Vec<Hyperlink>,
13216    /// Unknown child elements captured for roundtrip fidelity.
13217    #[cfg(feature = "extra-children")]
13218    #[serde(skip)]
13219    #[cfg(feature = "extra-children")]
13220    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13221}
13222
13223#[derive(Debug, Clone, Serialize, Deserialize)]
13224#[serde(rename = "hyperlink")]
13225pub struct Hyperlink {
13226    #[cfg(feature = "sml-hyperlinks")]
13227    #[serde(rename = "@ref")]
13228    pub reference: Reference,
13229    #[serde(rename = "@r:id")]
13230    #[serde(default, skip_serializing_if = "Option::is_none")]
13231    pub id: Option<STRelationshipId>,
13232    #[cfg(feature = "sml-hyperlinks")]
13233    #[serde(rename = "@location")]
13234    #[serde(default, skip_serializing_if = "Option::is_none")]
13235    pub location: Option<XmlString>,
13236    #[cfg(feature = "sml-hyperlinks")]
13237    #[serde(rename = "@tooltip")]
13238    #[serde(default, skip_serializing_if = "Option::is_none")]
13239    pub tooltip: Option<XmlString>,
13240    #[cfg(feature = "sml-hyperlinks")]
13241    #[serde(rename = "@display")]
13242    #[serde(default, skip_serializing_if = "Option::is_none")]
13243    pub display: Option<XmlString>,
13244    /// Unknown attributes captured for roundtrip fidelity.
13245    #[cfg(feature = "extra-attrs")]
13246    #[serde(skip)]
13247    #[cfg(feature = "extra-attrs")]
13248    #[serde(default)]
13249    #[cfg(feature = "extra-attrs")]
13250    pub extra_attrs: std::collections::HashMap<String, String>,
13251}
13252
13253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13254#[serde(rename = "f")]
13255pub struct CellFormula {
13256    #[serde(rename = "$text")]
13257    #[serde(default, skip_serializing_if = "Option::is_none")]
13258    pub text: Option<String>,
13259    #[serde(rename = "@t")]
13260    #[serde(default, skip_serializing_if = "Option::is_none")]
13261    pub cell_type: Option<FormulaType>,
13262    #[cfg(feature = "sml-formulas-advanced")]
13263    #[serde(rename = "@aca")]
13264    #[serde(
13265        default,
13266        skip_serializing_if = "Option::is_none",
13267        with = "ooxml_xml::ooxml_bool"
13268    )]
13269    pub aca: Option<bool>,
13270    #[serde(rename = "@ref")]
13271    #[serde(default, skip_serializing_if = "Option::is_none")]
13272    pub reference: Option<Reference>,
13273    #[cfg(feature = "sml-formulas-advanced")]
13274    #[serde(rename = "@dt2D")]
13275    #[serde(
13276        default,
13277        skip_serializing_if = "Option::is_none",
13278        with = "ooxml_xml::ooxml_bool"
13279    )]
13280    pub dt2_d: Option<bool>,
13281    #[cfg(feature = "sml-formulas-advanced")]
13282    #[serde(rename = "@dtr")]
13283    #[serde(
13284        default,
13285        skip_serializing_if = "Option::is_none",
13286        with = "ooxml_xml::ooxml_bool"
13287    )]
13288    pub dtr: Option<bool>,
13289    #[cfg(feature = "sml-formulas-advanced")]
13290    #[serde(rename = "@del1")]
13291    #[serde(
13292        default,
13293        skip_serializing_if = "Option::is_none",
13294        with = "ooxml_xml::ooxml_bool"
13295    )]
13296    pub del1: Option<bool>,
13297    #[cfg(feature = "sml-formulas-advanced")]
13298    #[serde(rename = "@del2")]
13299    #[serde(
13300        default,
13301        skip_serializing_if = "Option::is_none",
13302        with = "ooxml_xml::ooxml_bool"
13303    )]
13304    pub del2: Option<bool>,
13305    #[cfg(feature = "sml-formulas-advanced")]
13306    #[serde(rename = "@r1")]
13307    #[serde(default, skip_serializing_if = "Option::is_none")]
13308    pub r1: Option<CellRef>,
13309    #[cfg(feature = "sml-formulas-advanced")]
13310    #[serde(rename = "@r2")]
13311    #[serde(default, skip_serializing_if = "Option::is_none")]
13312    pub r2: Option<CellRef>,
13313    #[cfg(feature = "sml-formulas-advanced")]
13314    #[serde(rename = "@ca")]
13315    #[serde(
13316        default,
13317        skip_serializing_if = "Option::is_none",
13318        with = "ooxml_xml::ooxml_bool"
13319    )]
13320    pub ca: Option<bool>,
13321    #[serde(rename = "@si")]
13322    #[serde(default, skip_serializing_if = "Option::is_none")]
13323    pub si: Option<u32>,
13324    #[cfg(feature = "sml-formulas-advanced")]
13325    #[serde(rename = "@bx")]
13326    #[serde(
13327        default,
13328        skip_serializing_if = "Option::is_none",
13329        with = "ooxml_xml::ooxml_bool"
13330    )]
13331    pub bx: Option<bool>,
13332    /// Unknown attributes captured for roundtrip fidelity.
13333    #[cfg(feature = "extra-attrs")]
13334    #[serde(skip)]
13335    #[cfg(feature = "extra-attrs")]
13336    #[serde(default)]
13337    #[cfg(feature = "extra-attrs")]
13338    pub extra_attrs: std::collections::HashMap<String, String>,
13339    /// Unknown child elements captured for roundtrip fidelity.
13340    #[cfg(feature = "extra-children")]
13341    #[serde(skip)]
13342    #[cfg(feature = "extra-children")]
13343    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13344}
13345
13346#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13347#[serde(rename = "colorScale")]
13348pub struct ColorScale {
13349    #[cfg(feature = "sml-styling")]
13350    #[serde(rename = "cfvo")]
13351    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13352    pub cfvo: Vec<ConditionalFormatValue>,
13353    #[cfg(feature = "sml-styling")]
13354    #[serde(rename = "color")]
13355    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13356    pub color: Vec<Color>,
13357    /// Unknown child elements captured for roundtrip fidelity.
13358    #[cfg(feature = "extra-children")]
13359    #[serde(skip)]
13360    #[cfg(feature = "extra-children")]
13361    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13362}
13363
13364#[derive(Debug, Clone, Serialize, Deserialize)]
13365#[serde(rename = "dataBar")]
13366pub struct DataBar {
13367    #[cfg(feature = "sml-styling")]
13368    #[serde(rename = "@minLength")]
13369    #[serde(default, skip_serializing_if = "Option::is_none")]
13370    pub min_length: Option<u32>,
13371    #[cfg(feature = "sml-styling")]
13372    #[serde(rename = "@maxLength")]
13373    #[serde(default, skip_serializing_if = "Option::is_none")]
13374    pub max_length: Option<u32>,
13375    #[cfg(feature = "sml-styling")]
13376    #[serde(rename = "@showValue")]
13377    #[serde(
13378        default,
13379        skip_serializing_if = "Option::is_none",
13380        with = "ooxml_xml::ooxml_bool"
13381    )]
13382    pub show_value: Option<bool>,
13383    #[cfg(feature = "sml-styling")]
13384    #[serde(rename = "cfvo")]
13385    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13386    pub cfvo: Vec<ConditionalFormatValue>,
13387    #[cfg(feature = "sml-styling")]
13388    #[serde(rename = "color")]
13389    pub color: Box<Color>,
13390    /// Unknown attributes captured for roundtrip fidelity.
13391    #[cfg(feature = "extra-attrs")]
13392    #[serde(skip)]
13393    #[cfg(feature = "extra-attrs")]
13394    #[serde(default)]
13395    #[cfg(feature = "extra-attrs")]
13396    pub extra_attrs: std::collections::HashMap<String, String>,
13397    /// Unknown child elements captured for roundtrip fidelity.
13398    #[cfg(feature = "extra-children")]
13399    #[serde(skip)]
13400    #[cfg(feature = "extra-children")]
13401    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13402}
13403
13404#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13405#[serde(rename = "iconSet")]
13406pub struct IconSet {
13407    #[cfg(feature = "sml-styling")]
13408    #[serde(rename = "@iconSet")]
13409    #[serde(default, skip_serializing_if = "Option::is_none")]
13410    pub icon_set: Option<IconSetType>,
13411    #[cfg(feature = "sml-styling")]
13412    #[serde(rename = "@showValue")]
13413    #[serde(
13414        default,
13415        skip_serializing_if = "Option::is_none",
13416        with = "ooxml_xml::ooxml_bool"
13417    )]
13418    pub show_value: Option<bool>,
13419    #[cfg(feature = "sml-styling")]
13420    #[serde(rename = "@percent")]
13421    #[serde(
13422        default,
13423        skip_serializing_if = "Option::is_none",
13424        with = "ooxml_xml::ooxml_bool"
13425    )]
13426    pub percent: Option<bool>,
13427    #[cfg(feature = "sml-styling")]
13428    #[serde(rename = "@reverse")]
13429    #[serde(
13430        default,
13431        skip_serializing_if = "Option::is_none",
13432        with = "ooxml_xml::ooxml_bool"
13433    )]
13434    pub reverse: Option<bool>,
13435    #[cfg(feature = "sml-styling")]
13436    #[serde(rename = "cfvo")]
13437    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13438    pub cfvo: Vec<ConditionalFormatValue>,
13439    /// Unknown attributes captured for roundtrip fidelity.
13440    #[cfg(feature = "extra-attrs")]
13441    #[serde(skip)]
13442    #[cfg(feature = "extra-attrs")]
13443    #[serde(default)]
13444    #[cfg(feature = "extra-attrs")]
13445    pub extra_attrs: std::collections::HashMap<String, String>,
13446    /// Unknown child elements captured for roundtrip fidelity.
13447    #[cfg(feature = "extra-children")]
13448    #[serde(skip)]
13449    #[cfg(feature = "extra-children")]
13450    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13451}
13452
13453#[derive(Debug, Clone, Serialize, Deserialize)]
13454#[serde(rename = "cfvo")]
13455pub struct ConditionalFormatValue {
13456    #[cfg(feature = "sml-styling")]
13457    #[serde(rename = "@type")]
13458    pub r#type: ConditionalValueType,
13459    #[cfg(feature = "sml-styling")]
13460    #[serde(rename = "@val")]
13461    #[serde(default, skip_serializing_if = "Option::is_none")]
13462    pub value: Option<XmlString>,
13463    #[cfg(feature = "sml-styling")]
13464    #[serde(rename = "@gte")]
13465    #[serde(
13466        default,
13467        skip_serializing_if = "Option::is_none",
13468        with = "ooxml_xml::ooxml_bool"
13469    )]
13470    pub gte: Option<bool>,
13471    #[serde(rename = "extLst")]
13472    #[serde(default, skip_serializing_if = "Option::is_none")]
13473    pub extension_list: Option<Box<ExtensionList>>,
13474    /// Unknown attributes captured for roundtrip fidelity.
13475    #[cfg(feature = "extra-attrs")]
13476    #[serde(skip)]
13477    #[cfg(feature = "extra-attrs")]
13478    #[serde(default)]
13479    #[cfg(feature = "extra-attrs")]
13480    pub extra_attrs: std::collections::HashMap<String, String>,
13481    /// Unknown child elements captured for roundtrip fidelity.
13482    #[cfg(feature = "extra-children")]
13483    #[serde(skip)]
13484    #[cfg(feature = "extra-children")]
13485    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13486}
13487
13488#[derive(Debug, Clone, Serialize, Deserialize)]
13489#[serde(rename = "pageMargins")]
13490pub struct PageMargins {
13491    #[cfg(feature = "sml-layout")]
13492    #[serde(rename = "@left")]
13493    pub left: f64,
13494    #[cfg(feature = "sml-layout")]
13495    #[serde(rename = "@right")]
13496    pub right: f64,
13497    #[cfg(feature = "sml-layout")]
13498    #[serde(rename = "@top")]
13499    pub top: f64,
13500    #[cfg(feature = "sml-layout")]
13501    #[serde(rename = "@bottom")]
13502    pub bottom: f64,
13503    #[cfg(feature = "sml-layout")]
13504    #[serde(rename = "@header")]
13505    pub header: f64,
13506    #[cfg(feature = "sml-layout")]
13507    #[serde(rename = "@footer")]
13508    pub footer: f64,
13509    /// Unknown attributes captured for roundtrip fidelity.
13510    #[cfg(feature = "extra-attrs")]
13511    #[serde(skip)]
13512    #[cfg(feature = "extra-attrs")]
13513    #[serde(default)]
13514    #[cfg(feature = "extra-attrs")]
13515    pub extra_attrs: std::collections::HashMap<String, String>,
13516}
13517
13518#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13519#[serde(rename = "printOptions")]
13520pub struct PrintOptions {
13521    #[serde(rename = "@horizontalCentered")]
13522    #[serde(
13523        default,
13524        skip_serializing_if = "Option::is_none",
13525        with = "ooxml_xml::ooxml_bool"
13526    )]
13527    pub horizontal_centered: Option<bool>,
13528    #[serde(rename = "@verticalCentered")]
13529    #[serde(
13530        default,
13531        skip_serializing_if = "Option::is_none",
13532        with = "ooxml_xml::ooxml_bool"
13533    )]
13534    pub vertical_centered: Option<bool>,
13535    #[serde(rename = "@headings")]
13536    #[serde(
13537        default,
13538        skip_serializing_if = "Option::is_none",
13539        with = "ooxml_xml::ooxml_bool"
13540    )]
13541    pub headings: Option<bool>,
13542    #[serde(rename = "@gridLines")]
13543    #[serde(
13544        default,
13545        skip_serializing_if = "Option::is_none",
13546        with = "ooxml_xml::ooxml_bool"
13547    )]
13548    pub grid_lines: Option<bool>,
13549    #[serde(rename = "@gridLinesSet")]
13550    #[serde(
13551        default,
13552        skip_serializing_if = "Option::is_none",
13553        with = "ooxml_xml::ooxml_bool"
13554    )]
13555    pub grid_lines_set: Option<bool>,
13556    /// Unknown attributes captured for roundtrip fidelity.
13557    #[cfg(feature = "extra-attrs")]
13558    #[serde(skip)]
13559    #[cfg(feature = "extra-attrs")]
13560    #[serde(default)]
13561    #[cfg(feature = "extra-attrs")]
13562    pub extra_attrs: std::collections::HashMap<String, String>,
13563}
13564
13565#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13566#[serde(rename = "pageSetup")]
13567pub struct PageSetup {
13568    #[cfg(feature = "sml-layout")]
13569    #[serde(rename = "@paperSize")]
13570    #[serde(default, skip_serializing_if = "Option::is_none")]
13571    pub paper_size: Option<u32>,
13572    #[cfg(feature = "sml-layout")]
13573    #[serde(rename = "@paperHeight")]
13574    #[serde(default, skip_serializing_if = "Option::is_none")]
13575    pub paper_height: Option<STPositiveUniversalMeasure>,
13576    #[cfg(feature = "sml-layout")]
13577    #[serde(rename = "@paperWidth")]
13578    #[serde(default, skip_serializing_if = "Option::is_none")]
13579    pub paper_width: Option<STPositiveUniversalMeasure>,
13580    #[cfg(feature = "sml-layout")]
13581    #[serde(rename = "@scale")]
13582    #[serde(default, skip_serializing_if = "Option::is_none")]
13583    pub scale: Option<u32>,
13584    #[cfg(feature = "sml-layout")]
13585    #[serde(rename = "@firstPageNumber")]
13586    #[serde(default, skip_serializing_if = "Option::is_none")]
13587    pub first_page_number: Option<u32>,
13588    #[cfg(feature = "sml-layout")]
13589    #[serde(rename = "@fitToWidth")]
13590    #[serde(default, skip_serializing_if = "Option::is_none")]
13591    pub fit_to_width: Option<u32>,
13592    #[cfg(feature = "sml-layout")]
13593    #[serde(rename = "@fitToHeight")]
13594    #[serde(default, skip_serializing_if = "Option::is_none")]
13595    pub fit_to_height: Option<u32>,
13596    #[cfg(feature = "sml-layout")]
13597    #[serde(rename = "@pageOrder")]
13598    #[serde(default, skip_serializing_if = "Option::is_none")]
13599    pub page_order: Option<STPageOrder>,
13600    #[cfg(feature = "sml-layout")]
13601    #[serde(rename = "@orientation")]
13602    #[serde(default, skip_serializing_if = "Option::is_none")]
13603    pub orientation: Option<STOrientation>,
13604    #[cfg(feature = "sml-layout")]
13605    #[serde(rename = "@usePrinterDefaults")]
13606    #[serde(
13607        default,
13608        skip_serializing_if = "Option::is_none",
13609        with = "ooxml_xml::ooxml_bool"
13610    )]
13611    pub use_printer_defaults: Option<bool>,
13612    #[cfg(feature = "sml-layout")]
13613    #[serde(rename = "@blackAndWhite")]
13614    #[serde(
13615        default,
13616        skip_serializing_if = "Option::is_none",
13617        with = "ooxml_xml::ooxml_bool"
13618    )]
13619    pub black_and_white: Option<bool>,
13620    #[cfg(feature = "sml-layout")]
13621    #[serde(rename = "@draft")]
13622    #[serde(
13623        default,
13624        skip_serializing_if = "Option::is_none",
13625        with = "ooxml_xml::ooxml_bool"
13626    )]
13627    pub draft: Option<bool>,
13628    #[cfg(feature = "sml-layout")]
13629    #[serde(rename = "@cellComments")]
13630    #[serde(default, skip_serializing_if = "Option::is_none")]
13631    pub cell_comments: Option<STCellComments>,
13632    #[cfg(feature = "sml-layout")]
13633    #[serde(rename = "@useFirstPageNumber")]
13634    #[serde(
13635        default,
13636        skip_serializing_if = "Option::is_none",
13637        with = "ooxml_xml::ooxml_bool"
13638    )]
13639    pub use_first_page_number: Option<bool>,
13640    #[cfg(feature = "sml-layout")]
13641    #[serde(rename = "@errors")]
13642    #[serde(default, skip_serializing_if = "Option::is_none")]
13643    pub errors: Option<STPrintError>,
13644    #[cfg(feature = "sml-layout")]
13645    #[serde(rename = "@horizontalDpi")]
13646    #[serde(default, skip_serializing_if = "Option::is_none")]
13647    pub horizontal_dpi: Option<u32>,
13648    #[cfg(feature = "sml-layout")]
13649    #[serde(rename = "@verticalDpi")]
13650    #[serde(default, skip_serializing_if = "Option::is_none")]
13651    pub vertical_dpi: Option<u32>,
13652    #[cfg(feature = "sml-layout")]
13653    #[serde(rename = "@copies")]
13654    #[serde(default, skip_serializing_if = "Option::is_none")]
13655    pub copies: Option<u32>,
13656    #[serde(rename = "@r:id")]
13657    #[serde(default, skip_serializing_if = "Option::is_none")]
13658    pub id: Option<STRelationshipId>,
13659    /// Unknown attributes captured for roundtrip fidelity.
13660    #[cfg(feature = "extra-attrs")]
13661    #[serde(skip)]
13662    #[cfg(feature = "extra-attrs")]
13663    #[serde(default)]
13664    #[cfg(feature = "extra-attrs")]
13665    pub extra_attrs: std::collections::HashMap<String, String>,
13666}
13667
13668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13669#[serde(rename = "headerFooter")]
13670pub struct HeaderFooter {
13671    #[cfg(feature = "sml-layout")]
13672    #[serde(rename = "@differentOddEven")]
13673    #[serde(
13674        default,
13675        skip_serializing_if = "Option::is_none",
13676        with = "ooxml_xml::ooxml_bool"
13677    )]
13678    pub different_odd_even: Option<bool>,
13679    #[cfg(feature = "sml-layout")]
13680    #[serde(rename = "@differentFirst")]
13681    #[serde(
13682        default,
13683        skip_serializing_if = "Option::is_none",
13684        with = "ooxml_xml::ooxml_bool"
13685    )]
13686    pub different_first: Option<bool>,
13687    #[cfg(feature = "sml-layout")]
13688    #[serde(rename = "@scaleWithDoc")]
13689    #[serde(
13690        default,
13691        skip_serializing_if = "Option::is_none",
13692        with = "ooxml_xml::ooxml_bool"
13693    )]
13694    pub scale_with_doc: Option<bool>,
13695    #[cfg(feature = "sml-layout")]
13696    #[serde(rename = "@alignWithMargins")]
13697    #[serde(
13698        default,
13699        skip_serializing_if = "Option::is_none",
13700        with = "ooxml_xml::ooxml_bool"
13701    )]
13702    pub align_with_margins: Option<bool>,
13703    #[cfg(feature = "sml-layout")]
13704    #[serde(rename = "oddHeader")]
13705    #[serde(default, skip_serializing_if = "Option::is_none")]
13706    pub odd_header: Option<XmlString>,
13707    #[cfg(feature = "sml-layout")]
13708    #[serde(rename = "oddFooter")]
13709    #[serde(default, skip_serializing_if = "Option::is_none")]
13710    pub odd_footer: Option<XmlString>,
13711    #[cfg(feature = "sml-layout")]
13712    #[serde(rename = "evenHeader")]
13713    #[serde(default, skip_serializing_if = "Option::is_none")]
13714    pub even_header: Option<XmlString>,
13715    #[cfg(feature = "sml-layout")]
13716    #[serde(rename = "evenFooter")]
13717    #[serde(default, skip_serializing_if = "Option::is_none")]
13718    pub even_footer: Option<XmlString>,
13719    #[cfg(feature = "sml-layout")]
13720    #[serde(rename = "firstHeader")]
13721    #[serde(default, skip_serializing_if = "Option::is_none")]
13722    pub first_header: Option<XmlString>,
13723    #[cfg(feature = "sml-layout")]
13724    #[serde(rename = "firstFooter")]
13725    #[serde(default, skip_serializing_if = "Option::is_none")]
13726    pub first_footer: Option<XmlString>,
13727    /// Unknown attributes captured for roundtrip fidelity.
13728    #[cfg(feature = "extra-attrs")]
13729    #[serde(skip)]
13730    #[cfg(feature = "extra-attrs")]
13731    #[serde(default)]
13732    #[cfg(feature = "extra-attrs")]
13733    pub extra_attrs: std::collections::HashMap<String, String>,
13734    /// Unknown child elements captured for roundtrip fidelity.
13735    #[cfg(feature = "extra-children")]
13736    #[serde(skip)]
13737    #[cfg(feature = "extra-children")]
13738    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13739}
13740
13741#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13742pub struct Scenarios {
13743    #[serde(rename = "@current")]
13744    #[serde(default, skip_serializing_if = "Option::is_none")]
13745    pub current: Option<u32>,
13746    #[serde(rename = "@show")]
13747    #[serde(default, skip_serializing_if = "Option::is_none")]
13748    pub show: Option<u32>,
13749    #[serde(rename = "@sqref")]
13750    #[serde(default, skip_serializing_if = "Option::is_none")]
13751    pub square_reference: Option<SquareRef>,
13752    #[serde(rename = "scenario")]
13753    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13754    pub scenario: Vec<Scenario>,
13755    /// Unknown attributes captured for roundtrip fidelity.
13756    #[cfg(feature = "extra-attrs")]
13757    #[serde(skip)]
13758    #[cfg(feature = "extra-attrs")]
13759    #[serde(default)]
13760    #[cfg(feature = "extra-attrs")]
13761    pub extra_attrs: std::collections::HashMap<String, String>,
13762    /// Unknown child elements captured for roundtrip fidelity.
13763    #[cfg(feature = "extra-children")]
13764    #[serde(skip)]
13765    #[cfg(feature = "extra-children")]
13766    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13767}
13768
13769#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13770#[serde(rename = "sheetProtection")]
13771pub struct SheetProtection {
13772    #[serde(rename = "@password")]
13773    #[serde(default, skip_serializing_if = "Option::is_none")]
13774    pub password: Option<STUnsignedShortHex>,
13775    #[serde(rename = "@algorithmName")]
13776    #[serde(default, skip_serializing_if = "Option::is_none")]
13777    pub algorithm_name: Option<XmlString>,
13778    #[serde(rename = "@hashValue")]
13779    #[serde(default, skip_serializing_if = "Option::is_none")]
13780    pub hash_value: Option<Vec<u8>>,
13781    #[serde(rename = "@saltValue")]
13782    #[serde(default, skip_serializing_if = "Option::is_none")]
13783    pub salt_value: Option<Vec<u8>>,
13784    #[serde(rename = "@spinCount")]
13785    #[serde(default, skip_serializing_if = "Option::is_none")]
13786    pub spin_count: Option<u32>,
13787    #[serde(rename = "@sheet")]
13788    #[serde(
13789        default,
13790        skip_serializing_if = "Option::is_none",
13791        with = "ooxml_xml::ooxml_bool"
13792    )]
13793    pub sheet: Option<bool>,
13794    #[serde(rename = "@objects")]
13795    #[serde(
13796        default,
13797        skip_serializing_if = "Option::is_none",
13798        with = "ooxml_xml::ooxml_bool"
13799    )]
13800    pub objects: Option<bool>,
13801    #[serde(rename = "@scenarios")]
13802    #[serde(
13803        default,
13804        skip_serializing_if = "Option::is_none",
13805        with = "ooxml_xml::ooxml_bool"
13806    )]
13807    pub scenarios: Option<bool>,
13808    #[serde(rename = "@formatCells")]
13809    #[serde(
13810        default,
13811        skip_serializing_if = "Option::is_none",
13812        with = "ooxml_xml::ooxml_bool"
13813    )]
13814    pub format_cells: Option<bool>,
13815    #[serde(rename = "@formatColumns")]
13816    #[serde(
13817        default,
13818        skip_serializing_if = "Option::is_none",
13819        with = "ooxml_xml::ooxml_bool"
13820    )]
13821    pub format_columns: Option<bool>,
13822    #[serde(rename = "@formatRows")]
13823    #[serde(
13824        default,
13825        skip_serializing_if = "Option::is_none",
13826        with = "ooxml_xml::ooxml_bool"
13827    )]
13828    pub format_rows: Option<bool>,
13829    #[serde(rename = "@insertColumns")]
13830    #[serde(
13831        default,
13832        skip_serializing_if = "Option::is_none",
13833        with = "ooxml_xml::ooxml_bool"
13834    )]
13835    pub insert_columns: Option<bool>,
13836    #[serde(rename = "@insertRows")]
13837    #[serde(
13838        default,
13839        skip_serializing_if = "Option::is_none",
13840        with = "ooxml_xml::ooxml_bool"
13841    )]
13842    pub insert_rows: Option<bool>,
13843    #[serde(rename = "@insertHyperlinks")]
13844    #[serde(
13845        default,
13846        skip_serializing_if = "Option::is_none",
13847        with = "ooxml_xml::ooxml_bool"
13848    )]
13849    pub insert_hyperlinks: Option<bool>,
13850    #[serde(rename = "@deleteColumns")]
13851    #[serde(
13852        default,
13853        skip_serializing_if = "Option::is_none",
13854        with = "ooxml_xml::ooxml_bool"
13855    )]
13856    pub delete_columns: Option<bool>,
13857    #[serde(rename = "@deleteRows")]
13858    #[serde(
13859        default,
13860        skip_serializing_if = "Option::is_none",
13861        with = "ooxml_xml::ooxml_bool"
13862    )]
13863    pub delete_rows: Option<bool>,
13864    #[serde(rename = "@selectLockedCells")]
13865    #[serde(
13866        default,
13867        skip_serializing_if = "Option::is_none",
13868        with = "ooxml_xml::ooxml_bool"
13869    )]
13870    pub select_locked_cells: Option<bool>,
13871    #[serde(rename = "@sort")]
13872    #[serde(
13873        default,
13874        skip_serializing_if = "Option::is_none",
13875        with = "ooxml_xml::ooxml_bool"
13876    )]
13877    pub sort: Option<bool>,
13878    #[serde(rename = "@autoFilter")]
13879    #[serde(
13880        default,
13881        skip_serializing_if = "Option::is_none",
13882        with = "ooxml_xml::ooxml_bool"
13883    )]
13884    pub auto_filter: Option<bool>,
13885    #[serde(rename = "@pivotTables")]
13886    #[serde(
13887        default,
13888        skip_serializing_if = "Option::is_none",
13889        with = "ooxml_xml::ooxml_bool"
13890    )]
13891    pub pivot_tables: Option<bool>,
13892    #[serde(rename = "@selectUnlockedCells")]
13893    #[serde(
13894        default,
13895        skip_serializing_if = "Option::is_none",
13896        with = "ooxml_xml::ooxml_bool"
13897    )]
13898    pub select_unlocked_cells: Option<bool>,
13899    /// Unknown attributes captured for roundtrip fidelity.
13900    #[cfg(feature = "extra-attrs")]
13901    #[serde(skip)]
13902    #[cfg(feature = "extra-attrs")]
13903    #[serde(default)]
13904    #[cfg(feature = "extra-attrs")]
13905    pub extra_attrs: std::collections::HashMap<String, String>,
13906}
13907
13908#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13909#[serde(rename = "protectedRanges")]
13910pub struct ProtectedRanges {
13911    #[serde(rename = "protectedRange")]
13912    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13913    pub protected_range: Vec<ProtectedRange>,
13914    /// Unknown child elements captured for roundtrip fidelity.
13915    #[cfg(feature = "extra-children")]
13916    #[serde(skip)]
13917    #[cfg(feature = "extra-children")]
13918    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13919}
13920
13921#[derive(Debug, Clone, Serialize, Deserialize)]
13922#[serde(rename = "protectedRange")]
13923pub struct ProtectedRange {
13924    #[serde(rename = "@password")]
13925    #[serde(default, skip_serializing_if = "Option::is_none")]
13926    pub password: Option<STUnsignedShortHex>,
13927    #[serde(rename = "@sqref")]
13928    pub square_reference: SquareRef,
13929    #[serde(rename = "@name")]
13930    pub name: XmlString,
13931    #[serde(rename = "@securityDescriptor")]
13932    #[serde(default, skip_serializing_if = "Option::is_none")]
13933    pub security_descriptor: Option<String>,
13934    #[serde(rename = "@algorithmName")]
13935    #[serde(default, skip_serializing_if = "Option::is_none")]
13936    pub algorithm_name: Option<XmlString>,
13937    #[serde(rename = "@hashValue")]
13938    #[serde(default, skip_serializing_if = "Option::is_none")]
13939    pub hash_value: Option<Vec<u8>>,
13940    #[serde(rename = "@saltValue")]
13941    #[serde(default, skip_serializing_if = "Option::is_none")]
13942    pub salt_value: Option<Vec<u8>>,
13943    #[serde(rename = "@spinCount")]
13944    #[serde(default, skip_serializing_if = "Option::is_none")]
13945    pub spin_count: Option<u32>,
13946    /// Unknown attributes captured for roundtrip fidelity.
13947    #[cfg(feature = "extra-attrs")]
13948    #[serde(skip)]
13949    #[cfg(feature = "extra-attrs")]
13950    #[serde(default)]
13951    #[cfg(feature = "extra-attrs")]
13952    pub extra_attrs: std::collections::HashMap<String, String>,
13953}
13954
13955#[derive(Debug, Clone, Serialize, Deserialize)]
13956pub struct Scenario {
13957    #[serde(rename = "@name")]
13958    pub name: XmlString,
13959    #[serde(rename = "@locked")]
13960    #[serde(
13961        default,
13962        skip_serializing_if = "Option::is_none",
13963        with = "ooxml_xml::ooxml_bool"
13964    )]
13965    pub locked: Option<bool>,
13966    #[serde(rename = "@hidden")]
13967    #[serde(
13968        default,
13969        skip_serializing_if = "Option::is_none",
13970        with = "ooxml_xml::ooxml_bool"
13971    )]
13972    pub hidden: Option<bool>,
13973    #[serde(rename = "@count")]
13974    #[serde(default, skip_serializing_if = "Option::is_none")]
13975    pub count: Option<u32>,
13976    #[serde(rename = "@user")]
13977    #[serde(default, skip_serializing_if = "Option::is_none")]
13978    pub user: Option<XmlString>,
13979    #[serde(rename = "@comment")]
13980    #[serde(default, skip_serializing_if = "Option::is_none")]
13981    pub comment: Option<XmlString>,
13982    #[serde(rename = "inputCells")]
13983    #[serde(default, skip_serializing_if = "Vec::is_empty")]
13984    pub input_cells: Vec<InputCells>,
13985    /// Unknown attributes captured for roundtrip fidelity.
13986    #[cfg(feature = "extra-attrs")]
13987    #[serde(skip)]
13988    #[cfg(feature = "extra-attrs")]
13989    #[serde(default)]
13990    #[cfg(feature = "extra-attrs")]
13991    pub extra_attrs: std::collections::HashMap<String, String>,
13992    /// Unknown child elements captured for roundtrip fidelity.
13993    #[cfg(feature = "extra-children")]
13994    #[serde(skip)]
13995    #[cfg(feature = "extra-children")]
13996    pub extra_children: Vec<ooxml_xml::PositionedNode>,
13997}
13998
13999#[derive(Debug, Clone, Serialize, Deserialize)]
14000pub struct InputCells {
14001    #[serde(rename = "@r")]
14002    pub reference: CellRef,
14003    #[serde(rename = "@deleted")]
14004    #[serde(
14005        default,
14006        skip_serializing_if = "Option::is_none",
14007        with = "ooxml_xml::ooxml_bool"
14008    )]
14009    pub deleted: Option<bool>,
14010    #[serde(rename = "@undone")]
14011    #[serde(
14012        default,
14013        skip_serializing_if = "Option::is_none",
14014        with = "ooxml_xml::ooxml_bool"
14015    )]
14016    pub undone: Option<bool>,
14017    #[serde(rename = "@val")]
14018    pub value: XmlString,
14019    #[serde(rename = "@numFmtId")]
14020    #[serde(default, skip_serializing_if = "Option::is_none")]
14021    pub number_format_id: Option<STNumFmtId>,
14022    /// Unknown attributes captured for roundtrip fidelity.
14023    #[cfg(feature = "extra-attrs")]
14024    #[serde(skip)]
14025    #[cfg(feature = "extra-attrs")]
14026    #[serde(default)]
14027    #[cfg(feature = "extra-attrs")]
14028    pub extra_attrs: std::collections::HashMap<String, String>,
14029}
14030
14031#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14032pub struct CellWatches {
14033    #[serde(rename = "cellWatch")]
14034    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14035    pub cell_watch: Vec<CellWatch>,
14036    /// Unknown child elements captured for roundtrip fidelity.
14037    #[cfg(feature = "extra-children")]
14038    #[serde(skip)]
14039    #[cfg(feature = "extra-children")]
14040    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14041}
14042
14043#[derive(Debug, Clone, Serialize, Deserialize)]
14044pub struct CellWatch {
14045    #[serde(rename = "@r")]
14046    pub reference: CellRef,
14047    /// Unknown attributes captured for roundtrip fidelity.
14048    #[cfg(feature = "extra-attrs")]
14049    #[serde(skip)]
14050    #[cfg(feature = "extra-attrs")]
14051    #[serde(default)]
14052    #[cfg(feature = "extra-attrs")]
14053    pub extra_attrs: std::collections::HashMap<String, String>,
14054}
14055
14056#[derive(Debug, Clone, Serialize, Deserialize)]
14057pub struct Chartsheet {
14058    #[serde(rename = "sheetPr")]
14059    #[serde(default, skip_serializing_if = "Option::is_none")]
14060    pub sheet_properties: Option<Box<ChartsheetProperties>>,
14061    #[serde(rename = "sheetViews")]
14062    pub sheet_views: Box<ChartsheetViews>,
14063    #[serde(rename = "sheetProtection")]
14064    #[serde(default, skip_serializing_if = "Option::is_none")]
14065    pub sheet_protection: Option<Box<ChartsheetProtection>>,
14066    #[serde(rename = "customSheetViews")]
14067    #[serde(default, skip_serializing_if = "Option::is_none")]
14068    pub custom_sheet_views: Option<Box<CustomChartsheetViews>>,
14069    #[serde(rename = "pageMargins")]
14070    #[serde(default, skip_serializing_if = "Option::is_none")]
14071    pub page_margins: Option<Box<PageMargins>>,
14072    #[serde(rename = "pageSetup")]
14073    #[serde(default, skip_serializing_if = "Option::is_none")]
14074    pub page_setup: Option<Box<ChartsheetPageSetup>>,
14075    #[serde(rename = "headerFooter")]
14076    #[serde(default, skip_serializing_if = "Option::is_none")]
14077    pub header_footer: Option<Box<HeaderFooter>>,
14078    #[serde(rename = "drawing")]
14079    pub drawing: Box<Drawing>,
14080    #[serde(rename = "legacyDrawing")]
14081    #[serde(default, skip_serializing_if = "Option::is_none")]
14082    pub legacy_drawing: Option<Box<LegacyDrawing>>,
14083    #[serde(rename = "legacyDrawingHF")]
14084    #[serde(default, skip_serializing_if = "Option::is_none")]
14085    pub legacy_drawing_h_f: Option<Box<LegacyDrawing>>,
14086    #[serde(rename = "drawingHF")]
14087    #[serde(default, skip_serializing_if = "Option::is_none")]
14088    pub drawing_h_f: Option<Box<DrawingHeaderFooter>>,
14089    #[serde(rename = "picture")]
14090    #[serde(default, skip_serializing_if = "Option::is_none")]
14091    pub picture: Option<Box<SheetBackgroundPicture>>,
14092    #[serde(rename = "webPublishItems")]
14093    #[serde(default, skip_serializing_if = "Option::is_none")]
14094    pub web_publish_items: Option<Box<WebPublishItems>>,
14095    #[serde(rename = "extLst")]
14096    #[serde(default, skip_serializing_if = "Option::is_none")]
14097    pub extension_list: Option<Box<ExtensionList>>,
14098    /// Unknown child elements captured for roundtrip fidelity.
14099    #[cfg(feature = "extra-children")]
14100    #[serde(skip)]
14101    #[cfg(feature = "extra-children")]
14102    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14103}
14104
14105#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14106pub struct ChartsheetProperties {
14107    #[serde(rename = "@published")]
14108    #[serde(
14109        default,
14110        skip_serializing_if = "Option::is_none",
14111        with = "ooxml_xml::ooxml_bool"
14112    )]
14113    pub published: Option<bool>,
14114    #[serde(rename = "@codeName")]
14115    #[serde(default, skip_serializing_if = "Option::is_none")]
14116    pub code_name: Option<String>,
14117    #[serde(rename = "tabColor")]
14118    #[serde(default, skip_serializing_if = "Option::is_none")]
14119    pub tab_color: Option<Box<Color>>,
14120    /// Unknown attributes captured for roundtrip fidelity.
14121    #[cfg(feature = "extra-attrs")]
14122    #[serde(skip)]
14123    #[cfg(feature = "extra-attrs")]
14124    #[serde(default)]
14125    #[cfg(feature = "extra-attrs")]
14126    pub extra_attrs: std::collections::HashMap<String, String>,
14127    /// Unknown child elements captured for roundtrip fidelity.
14128    #[cfg(feature = "extra-children")]
14129    #[serde(skip)]
14130    #[cfg(feature = "extra-children")]
14131    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14132}
14133
14134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14135pub struct ChartsheetViews {
14136    #[serde(rename = "sheetView")]
14137    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14138    pub sheet_view: Vec<ChartsheetView>,
14139    #[serde(rename = "extLst")]
14140    #[serde(default, skip_serializing_if = "Option::is_none")]
14141    pub extension_list: Option<Box<ExtensionList>>,
14142    /// Unknown child elements captured for roundtrip fidelity.
14143    #[cfg(feature = "extra-children")]
14144    #[serde(skip)]
14145    #[cfg(feature = "extra-children")]
14146    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14147}
14148
14149#[derive(Debug, Clone, Serialize, Deserialize)]
14150pub struct ChartsheetView {
14151    #[serde(rename = "@tabSelected")]
14152    #[serde(
14153        default,
14154        skip_serializing_if = "Option::is_none",
14155        with = "ooxml_xml::ooxml_bool"
14156    )]
14157    pub tab_selected: Option<bool>,
14158    #[serde(rename = "@zoomScale")]
14159    #[serde(default, skip_serializing_if = "Option::is_none")]
14160    pub zoom_scale: Option<u32>,
14161    #[serde(rename = "@workbookViewId")]
14162    pub workbook_view_id: u32,
14163    #[serde(rename = "@zoomToFit")]
14164    #[serde(
14165        default,
14166        skip_serializing_if = "Option::is_none",
14167        with = "ooxml_xml::ooxml_bool"
14168    )]
14169    pub zoom_to_fit: Option<bool>,
14170    #[serde(rename = "extLst")]
14171    #[serde(default, skip_serializing_if = "Option::is_none")]
14172    pub extension_list: Option<Box<ExtensionList>>,
14173    /// Unknown attributes captured for roundtrip fidelity.
14174    #[cfg(feature = "extra-attrs")]
14175    #[serde(skip)]
14176    #[cfg(feature = "extra-attrs")]
14177    #[serde(default)]
14178    #[cfg(feature = "extra-attrs")]
14179    pub extra_attrs: std::collections::HashMap<String, String>,
14180    /// Unknown child elements captured for roundtrip fidelity.
14181    #[cfg(feature = "extra-children")]
14182    #[serde(skip)]
14183    #[cfg(feature = "extra-children")]
14184    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14185}
14186
14187#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14188pub struct ChartsheetProtection {
14189    #[serde(rename = "@password")]
14190    #[serde(default, skip_serializing_if = "Option::is_none")]
14191    pub password: Option<STUnsignedShortHex>,
14192    #[serde(rename = "@algorithmName")]
14193    #[serde(default, skip_serializing_if = "Option::is_none")]
14194    pub algorithm_name: Option<XmlString>,
14195    #[serde(rename = "@hashValue")]
14196    #[serde(default, skip_serializing_if = "Option::is_none")]
14197    pub hash_value: Option<Vec<u8>>,
14198    #[serde(rename = "@saltValue")]
14199    #[serde(default, skip_serializing_if = "Option::is_none")]
14200    pub salt_value: Option<Vec<u8>>,
14201    #[serde(rename = "@spinCount")]
14202    #[serde(default, skip_serializing_if = "Option::is_none")]
14203    pub spin_count: Option<u32>,
14204    #[serde(rename = "@content")]
14205    #[serde(
14206        default,
14207        skip_serializing_if = "Option::is_none",
14208        with = "ooxml_xml::ooxml_bool"
14209    )]
14210    pub content: Option<bool>,
14211    #[serde(rename = "@objects")]
14212    #[serde(
14213        default,
14214        skip_serializing_if = "Option::is_none",
14215        with = "ooxml_xml::ooxml_bool"
14216    )]
14217    pub objects: Option<bool>,
14218    /// Unknown attributes captured for roundtrip fidelity.
14219    #[cfg(feature = "extra-attrs")]
14220    #[serde(skip)]
14221    #[cfg(feature = "extra-attrs")]
14222    #[serde(default)]
14223    #[cfg(feature = "extra-attrs")]
14224    pub extra_attrs: std::collections::HashMap<String, String>,
14225}
14226
14227#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14228pub struct ChartsheetPageSetup {
14229    #[serde(rename = "@paperSize")]
14230    #[serde(default, skip_serializing_if = "Option::is_none")]
14231    pub paper_size: Option<u32>,
14232    #[serde(rename = "@paperHeight")]
14233    #[serde(default, skip_serializing_if = "Option::is_none")]
14234    pub paper_height: Option<STPositiveUniversalMeasure>,
14235    #[serde(rename = "@paperWidth")]
14236    #[serde(default, skip_serializing_if = "Option::is_none")]
14237    pub paper_width: Option<STPositiveUniversalMeasure>,
14238    #[serde(rename = "@firstPageNumber")]
14239    #[serde(default, skip_serializing_if = "Option::is_none")]
14240    pub first_page_number: Option<u32>,
14241    #[serde(rename = "@orientation")]
14242    #[serde(default, skip_serializing_if = "Option::is_none")]
14243    pub orientation: Option<STOrientation>,
14244    #[serde(rename = "@usePrinterDefaults")]
14245    #[serde(
14246        default,
14247        skip_serializing_if = "Option::is_none",
14248        with = "ooxml_xml::ooxml_bool"
14249    )]
14250    pub use_printer_defaults: Option<bool>,
14251    #[serde(rename = "@blackAndWhite")]
14252    #[serde(
14253        default,
14254        skip_serializing_if = "Option::is_none",
14255        with = "ooxml_xml::ooxml_bool"
14256    )]
14257    pub black_and_white: Option<bool>,
14258    #[serde(rename = "@draft")]
14259    #[serde(
14260        default,
14261        skip_serializing_if = "Option::is_none",
14262        with = "ooxml_xml::ooxml_bool"
14263    )]
14264    pub draft: Option<bool>,
14265    #[serde(rename = "@useFirstPageNumber")]
14266    #[serde(
14267        default,
14268        skip_serializing_if = "Option::is_none",
14269        with = "ooxml_xml::ooxml_bool"
14270    )]
14271    pub use_first_page_number: Option<bool>,
14272    #[serde(rename = "@horizontalDpi")]
14273    #[serde(default, skip_serializing_if = "Option::is_none")]
14274    pub horizontal_dpi: Option<u32>,
14275    #[serde(rename = "@verticalDpi")]
14276    #[serde(default, skip_serializing_if = "Option::is_none")]
14277    pub vertical_dpi: Option<u32>,
14278    #[serde(rename = "@copies")]
14279    #[serde(default, skip_serializing_if = "Option::is_none")]
14280    pub copies: Option<u32>,
14281    #[serde(rename = "@r:id")]
14282    #[serde(default, skip_serializing_if = "Option::is_none")]
14283    pub id: Option<STRelationshipId>,
14284    /// Unknown attributes captured for roundtrip fidelity.
14285    #[cfg(feature = "extra-attrs")]
14286    #[serde(skip)]
14287    #[cfg(feature = "extra-attrs")]
14288    #[serde(default)]
14289    #[cfg(feature = "extra-attrs")]
14290    pub extra_attrs: std::collections::HashMap<String, String>,
14291}
14292
14293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14294pub struct CustomChartsheetViews {
14295    #[serde(rename = "customSheetView")]
14296    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14297    pub custom_sheet_view: Vec<CustomChartsheetView>,
14298    /// Unknown child elements captured for roundtrip fidelity.
14299    #[cfg(feature = "extra-children")]
14300    #[serde(skip)]
14301    #[cfg(feature = "extra-children")]
14302    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14303}
14304
14305#[derive(Debug, Clone, Serialize, Deserialize)]
14306pub struct CustomChartsheetView {
14307    #[serde(rename = "@guid")]
14308    pub guid: Guid,
14309    #[serde(rename = "@scale")]
14310    #[serde(default, skip_serializing_if = "Option::is_none")]
14311    pub scale: Option<u32>,
14312    #[serde(rename = "@state")]
14313    #[serde(default, skip_serializing_if = "Option::is_none")]
14314    pub state: Option<SheetState>,
14315    #[serde(rename = "@zoomToFit")]
14316    #[serde(
14317        default,
14318        skip_serializing_if = "Option::is_none",
14319        with = "ooxml_xml::ooxml_bool"
14320    )]
14321    pub zoom_to_fit: Option<bool>,
14322    #[serde(rename = "pageMargins")]
14323    #[serde(default, skip_serializing_if = "Option::is_none")]
14324    pub page_margins: Option<Box<PageMargins>>,
14325    #[serde(rename = "pageSetup")]
14326    #[serde(default, skip_serializing_if = "Option::is_none")]
14327    pub page_setup: Option<Box<ChartsheetPageSetup>>,
14328    #[serde(rename = "headerFooter")]
14329    #[serde(default, skip_serializing_if = "Option::is_none")]
14330    pub header_footer: Option<Box<HeaderFooter>>,
14331    /// Unknown attributes captured for roundtrip fidelity.
14332    #[cfg(feature = "extra-attrs")]
14333    #[serde(skip)]
14334    #[cfg(feature = "extra-attrs")]
14335    #[serde(default)]
14336    #[cfg(feature = "extra-attrs")]
14337    pub extra_attrs: std::collections::HashMap<String, String>,
14338    /// Unknown child elements captured for roundtrip fidelity.
14339    #[cfg(feature = "extra-children")]
14340    #[serde(skip)]
14341    #[cfg(feature = "extra-children")]
14342    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14343}
14344
14345#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14346pub struct CTCustomProperties {
14347    #[serde(rename = "customPr")]
14348    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14349    pub custom_pr: Vec<CTCustomProperty>,
14350    /// Unknown child elements captured for roundtrip fidelity.
14351    #[cfg(feature = "extra-children")]
14352    #[serde(skip)]
14353    #[cfg(feature = "extra-children")]
14354    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14355}
14356
14357#[derive(Debug, Clone, Serialize, Deserialize)]
14358pub struct CTCustomProperty {
14359    #[serde(rename = "@name")]
14360    pub name: XmlString,
14361    #[serde(rename = "@r:id")]
14362    pub id: STRelationshipId,
14363    /// Unknown attributes captured for roundtrip fidelity.
14364    #[cfg(feature = "extra-attrs")]
14365    #[serde(skip)]
14366    #[cfg(feature = "extra-attrs")]
14367    #[serde(default)]
14368    #[cfg(feature = "extra-attrs")]
14369    pub extra_attrs: std::collections::HashMap<String, String>,
14370}
14371
14372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14373pub struct OleObjects {
14374    #[serde(rename = "oleObject")]
14375    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14376    pub ole_object: Vec<OleObject>,
14377    /// Unknown child elements captured for roundtrip fidelity.
14378    #[cfg(feature = "extra-children")]
14379    #[serde(skip)]
14380    #[cfg(feature = "extra-children")]
14381    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14382}
14383
14384#[derive(Debug, Clone, Serialize, Deserialize)]
14385pub struct OleObject {
14386    #[serde(rename = "@progId")]
14387    #[serde(default, skip_serializing_if = "Option::is_none")]
14388    pub prog_id: Option<String>,
14389    #[serde(rename = "@dvAspect")]
14390    #[serde(default, skip_serializing_if = "Option::is_none")]
14391    pub dv_aspect: Option<STDvAspect>,
14392    #[serde(rename = "@link")]
14393    #[serde(default, skip_serializing_if = "Option::is_none")]
14394    pub link: Option<XmlString>,
14395    #[serde(rename = "@oleUpdate")]
14396    #[serde(default, skip_serializing_if = "Option::is_none")]
14397    pub ole_update: Option<STOleUpdate>,
14398    #[serde(rename = "@autoLoad")]
14399    #[serde(
14400        default,
14401        skip_serializing_if = "Option::is_none",
14402        with = "ooxml_xml::ooxml_bool"
14403    )]
14404    pub auto_load: Option<bool>,
14405    #[serde(rename = "@shapeId")]
14406    pub shape_id: u32,
14407    #[serde(rename = "@r:id")]
14408    #[serde(default, skip_serializing_if = "Option::is_none")]
14409    pub id: Option<STRelationshipId>,
14410    #[serde(rename = "objectPr")]
14411    #[serde(default, skip_serializing_if = "Option::is_none")]
14412    pub object_pr: Option<Box<ObjectProperties>>,
14413    /// Unknown attributes captured for roundtrip fidelity.
14414    #[cfg(feature = "extra-attrs")]
14415    #[serde(skip)]
14416    #[cfg(feature = "extra-attrs")]
14417    #[serde(default)]
14418    #[cfg(feature = "extra-attrs")]
14419    pub extra_attrs: std::collections::HashMap<String, String>,
14420    /// Unknown child elements captured for roundtrip fidelity.
14421    #[cfg(feature = "extra-children")]
14422    #[serde(skip)]
14423    #[cfg(feature = "extra-children")]
14424    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14425}
14426
14427#[derive(Debug, Clone, Serialize, Deserialize)]
14428pub struct ObjectProperties {
14429    #[serde(rename = "@locked")]
14430    #[serde(
14431        default,
14432        skip_serializing_if = "Option::is_none",
14433        with = "ooxml_xml::ooxml_bool"
14434    )]
14435    pub locked: Option<bool>,
14436    #[serde(rename = "@defaultSize")]
14437    #[serde(
14438        default,
14439        skip_serializing_if = "Option::is_none",
14440        with = "ooxml_xml::ooxml_bool"
14441    )]
14442    pub default_size: Option<bool>,
14443    #[serde(rename = "@print")]
14444    #[serde(
14445        default,
14446        skip_serializing_if = "Option::is_none",
14447        with = "ooxml_xml::ooxml_bool"
14448    )]
14449    pub print: Option<bool>,
14450    #[serde(rename = "@disabled")]
14451    #[serde(
14452        default,
14453        skip_serializing_if = "Option::is_none",
14454        with = "ooxml_xml::ooxml_bool"
14455    )]
14456    pub disabled: Option<bool>,
14457    #[serde(rename = "@uiObject")]
14458    #[serde(
14459        default,
14460        skip_serializing_if = "Option::is_none",
14461        with = "ooxml_xml::ooxml_bool"
14462    )]
14463    pub ui_object: Option<bool>,
14464    #[serde(rename = "@autoFill")]
14465    #[serde(
14466        default,
14467        skip_serializing_if = "Option::is_none",
14468        with = "ooxml_xml::ooxml_bool"
14469    )]
14470    pub auto_fill: Option<bool>,
14471    #[serde(rename = "@autoLine")]
14472    #[serde(
14473        default,
14474        skip_serializing_if = "Option::is_none",
14475        with = "ooxml_xml::ooxml_bool"
14476    )]
14477    pub auto_line: Option<bool>,
14478    #[serde(rename = "@autoPict")]
14479    #[serde(
14480        default,
14481        skip_serializing_if = "Option::is_none",
14482        with = "ooxml_xml::ooxml_bool"
14483    )]
14484    pub auto_pict: Option<bool>,
14485    #[serde(rename = "@macro")]
14486    #[serde(default, skip_serializing_if = "Option::is_none")]
14487    pub r#macro: Option<STFormula>,
14488    #[serde(rename = "@altText")]
14489    #[serde(default, skip_serializing_if = "Option::is_none")]
14490    pub alt_text: Option<XmlString>,
14491    #[serde(rename = "@dde")]
14492    #[serde(
14493        default,
14494        skip_serializing_if = "Option::is_none",
14495        with = "ooxml_xml::ooxml_bool"
14496    )]
14497    pub dde: Option<bool>,
14498    #[serde(rename = "@r:id")]
14499    #[serde(default, skip_serializing_if = "Option::is_none")]
14500    pub id: Option<STRelationshipId>,
14501    #[serde(rename = "anchor")]
14502    pub anchor: Box<ObjectAnchor>,
14503    /// Unknown attributes captured for roundtrip fidelity.
14504    #[cfg(feature = "extra-attrs")]
14505    #[serde(skip)]
14506    #[cfg(feature = "extra-attrs")]
14507    #[serde(default)]
14508    #[cfg(feature = "extra-attrs")]
14509    pub extra_attrs: std::collections::HashMap<String, String>,
14510    /// Unknown child elements captured for roundtrip fidelity.
14511    #[cfg(feature = "extra-children")]
14512    #[serde(skip)]
14513    #[cfg(feature = "extra-children")]
14514    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14515}
14516
14517#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14518pub struct WebPublishItems {
14519    #[serde(rename = "@count")]
14520    #[serde(default, skip_serializing_if = "Option::is_none")]
14521    pub count: Option<u32>,
14522    #[serde(rename = "webPublishItem")]
14523    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14524    pub web_publish_item: Vec<WebPublishItem>,
14525    /// Unknown attributes captured for roundtrip fidelity.
14526    #[cfg(feature = "extra-attrs")]
14527    #[serde(skip)]
14528    #[cfg(feature = "extra-attrs")]
14529    #[serde(default)]
14530    #[cfg(feature = "extra-attrs")]
14531    pub extra_attrs: std::collections::HashMap<String, String>,
14532    /// Unknown child elements captured for roundtrip fidelity.
14533    #[cfg(feature = "extra-children")]
14534    #[serde(skip)]
14535    #[cfg(feature = "extra-children")]
14536    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14537}
14538
14539#[derive(Debug, Clone, Serialize, Deserialize)]
14540pub struct WebPublishItem {
14541    #[serde(rename = "@id")]
14542    pub id: u32,
14543    #[serde(rename = "@divId")]
14544    pub div_id: XmlString,
14545    #[serde(rename = "@sourceType")]
14546    pub source_type: STWebSourceType,
14547    #[serde(rename = "@sourceRef")]
14548    #[serde(default, skip_serializing_if = "Option::is_none")]
14549    pub source_ref: Option<Reference>,
14550    #[serde(rename = "@sourceObject")]
14551    #[serde(default, skip_serializing_if = "Option::is_none")]
14552    pub source_object: Option<XmlString>,
14553    #[serde(rename = "@destinationFile")]
14554    pub destination_file: XmlString,
14555    #[serde(rename = "@title")]
14556    #[serde(default, skip_serializing_if = "Option::is_none")]
14557    pub title: Option<XmlString>,
14558    #[serde(rename = "@autoRepublish")]
14559    #[serde(
14560        default,
14561        skip_serializing_if = "Option::is_none",
14562        with = "ooxml_xml::ooxml_bool"
14563    )]
14564    pub auto_republish: Option<bool>,
14565    /// Unknown attributes captured for roundtrip fidelity.
14566    #[cfg(feature = "extra-attrs")]
14567    #[serde(skip)]
14568    #[cfg(feature = "extra-attrs")]
14569    #[serde(default)]
14570    #[cfg(feature = "extra-attrs")]
14571    pub extra_attrs: std::collections::HashMap<String, String>,
14572}
14573
14574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14575pub struct Controls {
14576    #[serde(rename = "control")]
14577    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14578    pub control: Vec<Control>,
14579    /// Unknown child elements captured for roundtrip fidelity.
14580    #[cfg(feature = "extra-children")]
14581    #[serde(skip)]
14582    #[cfg(feature = "extra-children")]
14583    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14584}
14585
14586#[derive(Debug, Clone, Serialize, Deserialize)]
14587pub struct Control {
14588    #[serde(rename = "@shapeId")]
14589    pub shape_id: u32,
14590    #[serde(rename = "@r:id")]
14591    pub id: STRelationshipId,
14592    #[serde(rename = "@name")]
14593    #[serde(default, skip_serializing_if = "Option::is_none")]
14594    pub name: Option<String>,
14595    #[serde(rename = "controlPr")]
14596    #[serde(default, skip_serializing_if = "Option::is_none")]
14597    pub control_pr: Option<Box<CTControlPr>>,
14598    /// Unknown attributes captured for roundtrip fidelity.
14599    #[cfg(feature = "extra-attrs")]
14600    #[serde(skip)]
14601    #[cfg(feature = "extra-attrs")]
14602    #[serde(default)]
14603    #[cfg(feature = "extra-attrs")]
14604    pub extra_attrs: std::collections::HashMap<String, String>,
14605    /// Unknown child elements captured for roundtrip fidelity.
14606    #[cfg(feature = "extra-children")]
14607    #[serde(skip)]
14608    #[cfg(feature = "extra-children")]
14609    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14610}
14611
14612#[derive(Debug, Clone, Serialize, Deserialize)]
14613pub struct CTControlPr {
14614    #[serde(rename = "@locked")]
14615    #[serde(
14616        default,
14617        skip_serializing_if = "Option::is_none",
14618        with = "ooxml_xml::ooxml_bool"
14619    )]
14620    pub locked: Option<bool>,
14621    #[serde(rename = "@defaultSize")]
14622    #[serde(
14623        default,
14624        skip_serializing_if = "Option::is_none",
14625        with = "ooxml_xml::ooxml_bool"
14626    )]
14627    pub default_size: Option<bool>,
14628    #[serde(rename = "@print")]
14629    #[serde(
14630        default,
14631        skip_serializing_if = "Option::is_none",
14632        with = "ooxml_xml::ooxml_bool"
14633    )]
14634    pub print: Option<bool>,
14635    #[serde(rename = "@disabled")]
14636    #[serde(
14637        default,
14638        skip_serializing_if = "Option::is_none",
14639        with = "ooxml_xml::ooxml_bool"
14640    )]
14641    pub disabled: Option<bool>,
14642    #[serde(rename = "@recalcAlways")]
14643    #[serde(
14644        default,
14645        skip_serializing_if = "Option::is_none",
14646        with = "ooxml_xml::ooxml_bool"
14647    )]
14648    pub recalc_always: Option<bool>,
14649    #[serde(rename = "@uiObject")]
14650    #[serde(
14651        default,
14652        skip_serializing_if = "Option::is_none",
14653        with = "ooxml_xml::ooxml_bool"
14654    )]
14655    pub ui_object: Option<bool>,
14656    #[serde(rename = "@autoFill")]
14657    #[serde(
14658        default,
14659        skip_serializing_if = "Option::is_none",
14660        with = "ooxml_xml::ooxml_bool"
14661    )]
14662    pub auto_fill: Option<bool>,
14663    #[serde(rename = "@autoLine")]
14664    #[serde(
14665        default,
14666        skip_serializing_if = "Option::is_none",
14667        with = "ooxml_xml::ooxml_bool"
14668    )]
14669    pub auto_line: Option<bool>,
14670    #[serde(rename = "@autoPict")]
14671    #[serde(
14672        default,
14673        skip_serializing_if = "Option::is_none",
14674        with = "ooxml_xml::ooxml_bool"
14675    )]
14676    pub auto_pict: Option<bool>,
14677    #[serde(rename = "@macro")]
14678    #[serde(default, skip_serializing_if = "Option::is_none")]
14679    pub r#macro: Option<STFormula>,
14680    #[serde(rename = "@altText")]
14681    #[serde(default, skip_serializing_if = "Option::is_none")]
14682    pub alt_text: Option<XmlString>,
14683    #[serde(rename = "@linkedCell")]
14684    #[serde(default, skip_serializing_if = "Option::is_none")]
14685    pub linked_cell: Option<STFormula>,
14686    #[serde(rename = "@listFillRange")]
14687    #[serde(default, skip_serializing_if = "Option::is_none")]
14688    pub list_fill_range: Option<STFormula>,
14689    #[serde(rename = "@cf")]
14690    #[serde(default, skip_serializing_if = "Option::is_none")]
14691    pub cf: Option<XmlString>,
14692    #[serde(rename = "@r:id")]
14693    #[serde(default, skip_serializing_if = "Option::is_none")]
14694    pub id: Option<STRelationshipId>,
14695    #[serde(rename = "anchor")]
14696    pub anchor: Box<ObjectAnchor>,
14697    /// Unknown attributes captured for roundtrip fidelity.
14698    #[cfg(feature = "extra-attrs")]
14699    #[serde(skip)]
14700    #[cfg(feature = "extra-attrs")]
14701    #[serde(default)]
14702    #[cfg(feature = "extra-attrs")]
14703    pub extra_attrs: std::collections::HashMap<String, String>,
14704    /// Unknown child elements captured for roundtrip fidelity.
14705    #[cfg(feature = "extra-children")]
14706    #[serde(skip)]
14707    #[cfg(feature = "extra-children")]
14708    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14709}
14710
14711#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14712pub struct IgnoredErrors {
14713    #[serde(rename = "ignoredError")]
14714    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14715    pub ignored_error: Vec<IgnoredError>,
14716    #[serde(rename = "extLst")]
14717    #[serde(default, skip_serializing_if = "Option::is_none")]
14718    pub extension_list: Option<Box<ExtensionList>>,
14719    /// Unknown child elements captured for roundtrip fidelity.
14720    #[cfg(feature = "extra-children")]
14721    #[serde(skip)]
14722    #[cfg(feature = "extra-children")]
14723    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14724}
14725
14726#[derive(Debug, Clone, Serialize, Deserialize)]
14727pub struct IgnoredError {
14728    #[serde(rename = "@sqref")]
14729    pub square_reference: SquareRef,
14730    #[serde(rename = "@evalError")]
14731    #[serde(
14732        default,
14733        skip_serializing_if = "Option::is_none",
14734        with = "ooxml_xml::ooxml_bool"
14735    )]
14736    pub eval_error: Option<bool>,
14737    #[serde(rename = "@twoDigitTextYear")]
14738    #[serde(
14739        default,
14740        skip_serializing_if = "Option::is_none",
14741        with = "ooxml_xml::ooxml_bool"
14742    )]
14743    pub two_digit_text_year: Option<bool>,
14744    #[serde(rename = "@numberStoredAsText")]
14745    #[serde(
14746        default,
14747        skip_serializing_if = "Option::is_none",
14748        with = "ooxml_xml::ooxml_bool"
14749    )]
14750    pub number_stored_as_text: Option<bool>,
14751    #[serde(rename = "@formula")]
14752    #[serde(
14753        default,
14754        skip_serializing_if = "Option::is_none",
14755        with = "ooxml_xml::ooxml_bool"
14756    )]
14757    pub formula: Option<bool>,
14758    #[serde(rename = "@formulaRange")]
14759    #[serde(
14760        default,
14761        skip_serializing_if = "Option::is_none",
14762        with = "ooxml_xml::ooxml_bool"
14763    )]
14764    pub formula_range: Option<bool>,
14765    #[serde(rename = "@unlockedFormula")]
14766    #[serde(
14767        default,
14768        skip_serializing_if = "Option::is_none",
14769        with = "ooxml_xml::ooxml_bool"
14770    )]
14771    pub unlocked_formula: Option<bool>,
14772    #[serde(rename = "@emptyCellReference")]
14773    #[serde(
14774        default,
14775        skip_serializing_if = "Option::is_none",
14776        with = "ooxml_xml::ooxml_bool"
14777    )]
14778    pub empty_cell_reference: Option<bool>,
14779    #[serde(rename = "@listDataValidation")]
14780    #[serde(
14781        default,
14782        skip_serializing_if = "Option::is_none",
14783        with = "ooxml_xml::ooxml_bool"
14784    )]
14785    pub list_data_validation: Option<bool>,
14786    #[serde(rename = "@calculatedColumn")]
14787    #[serde(
14788        default,
14789        skip_serializing_if = "Option::is_none",
14790        with = "ooxml_xml::ooxml_bool"
14791    )]
14792    pub calculated_column: Option<bool>,
14793    /// Unknown attributes captured for roundtrip fidelity.
14794    #[cfg(feature = "extra-attrs")]
14795    #[serde(skip)]
14796    #[cfg(feature = "extra-attrs")]
14797    #[serde(default)]
14798    #[cfg(feature = "extra-attrs")]
14799    pub extra_attrs: std::collections::HashMap<String, String>,
14800}
14801
14802#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14803#[serde(rename = "tableParts")]
14804pub struct TableParts {
14805    #[serde(rename = "@count")]
14806    #[serde(default, skip_serializing_if = "Option::is_none")]
14807    pub count: Option<u32>,
14808    #[serde(rename = "tablePart")]
14809    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14810    pub table_part: Vec<TablePart>,
14811    /// Unknown attributes captured for roundtrip fidelity.
14812    #[cfg(feature = "extra-attrs")]
14813    #[serde(skip)]
14814    #[cfg(feature = "extra-attrs")]
14815    #[serde(default)]
14816    #[cfg(feature = "extra-attrs")]
14817    pub extra_attrs: std::collections::HashMap<String, String>,
14818    /// Unknown child elements captured for roundtrip fidelity.
14819    #[cfg(feature = "extra-children")]
14820    #[serde(skip)]
14821    #[cfg(feature = "extra-children")]
14822    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14823}
14824
14825#[derive(Debug, Clone, Serialize, Deserialize)]
14826#[serde(rename = "tablePart")]
14827pub struct TablePart {
14828    #[serde(rename = "@r:id")]
14829    pub id: STRelationshipId,
14830    /// Unknown attributes captured for roundtrip fidelity.
14831    #[cfg(feature = "extra-attrs")]
14832    #[serde(skip)]
14833    #[cfg(feature = "extra-attrs")]
14834    #[serde(default)]
14835    #[cfg(feature = "extra-attrs")]
14836    pub extra_attrs: std::collections::HashMap<String, String>,
14837}
14838
14839pub type SmlMetadata = Box<Metadata>;
14840
14841#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14842pub struct Metadata {
14843    #[serde(rename = "metadataTypes")]
14844    #[serde(default, skip_serializing_if = "Option::is_none")]
14845    pub metadata_types: Option<Box<MetadataTypes>>,
14846    #[serde(rename = "metadataStrings")]
14847    #[serde(default, skip_serializing_if = "Option::is_none")]
14848    pub metadata_strings: Option<Box<MetadataStrings>>,
14849    #[serde(rename = "mdxMetadata")]
14850    #[serde(default, skip_serializing_if = "Option::is_none")]
14851    pub mdx_metadata: Option<Box<CTMdxMetadata>>,
14852    #[serde(rename = "futureMetadata")]
14853    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14854    pub future_metadata: Vec<CTFutureMetadata>,
14855    #[serde(rename = "cellMetadata")]
14856    #[serde(default, skip_serializing_if = "Option::is_none")]
14857    pub cell_metadata: Option<Box<MetadataBlocks>>,
14858    #[serde(rename = "valueMetadata")]
14859    #[serde(default, skip_serializing_if = "Option::is_none")]
14860    pub value_metadata: Option<Box<MetadataBlocks>>,
14861    #[serde(rename = "extLst")]
14862    #[serde(default, skip_serializing_if = "Option::is_none")]
14863    pub extension_list: Option<Box<ExtensionList>>,
14864    /// Unknown child elements captured for roundtrip fidelity.
14865    #[cfg(feature = "extra-children")]
14866    #[serde(skip)]
14867    #[cfg(feature = "extra-children")]
14868    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14869}
14870
14871#[derive(Debug, Clone, Default, Serialize, Deserialize)]
14872pub struct MetadataTypes {
14873    #[serde(rename = "@count")]
14874    #[serde(default, skip_serializing_if = "Option::is_none")]
14875    pub count: Option<u32>,
14876    #[serde(rename = "metadataType")]
14877    #[serde(default, skip_serializing_if = "Vec::is_empty")]
14878    pub metadata_type: Vec<MetadataType>,
14879    /// Unknown attributes captured for roundtrip fidelity.
14880    #[cfg(feature = "extra-attrs")]
14881    #[serde(skip)]
14882    #[cfg(feature = "extra-attrs")]
14883    #[serde(default)]
14884    #[cfg(feature = "extra-attrs")]
14885    pub extra_attrs: std::collections::HashMap<String, String>,
14886    /// Unknown child elements captured for roundtrip fidelity.
14887    #[cfg(feature = "extra-children")]
14888    #[serde(skip)]
14889    #[cfg(feature = "extra-children")]
14890    pub extra_children: Vec<ooxml_xml::PositionedNode>,
14891}
14892
14893#[derive(Debug, Clone, Serialize, Deserialize)]
14894pub struct MetadataType {
14895    #[serde(rename = "@name")]
14896    pub name: XmlString,
14897    #[serde(rename = "@minSupportedVersion")]
14898    pub min_supported_version: u32,
14899    #[serde(rename = "@ghostRow")]
14900    #[serde(
14901        default,
14902        skip_serializing_if = "Option::is_none",
14903        with = "ooxml_xml::ooxml_bool"
14904    )]
14905    pub ghost_row: Option<bool>,
14906    #[serde(rename = "@ghostCol")]
14907    #[serde(
14908        default,
14909        skip_serializing_if = "Option::is_none",
14910        with = "ooxml_xml::ooxml_bool"
14911    )]
14912    pub ghost_col: Option<bool>,
14913    #[serde(rename = "@edit")]
14914    #[serde(
14915        default,
14916        skip_serializing_if = "Option::is_none",
14917        with = "ooxml_xml::ooxml_bool"
14918    )]
14919    pub edit: Option<bool>,
14920    #[serde(rename = "@delete")]
14921    #[serde(
14922        default,
14923        skip_serializing_if = "Option::is_none",
14924        with = "ooxml_xml::ooxml_bool"
14925    )]
14926    pub delete: Option<bool>,
14927    #[serde(rename = "@copy")]
14928    #[serde(
14929        default,
14930        skip_serializing_if = "Option::is_none",
14931        with = "ooxml_xml::ooxml_bool"
14932    )]
14933    pub copy: Option<bool>,
14934    #[serde(rename = "@pasteAll")]
14935    #[serde(
14936        default,
14937        skip_serializing_if = "Option::is_none",
14938        with = "ooxml_xml::ooxml_bool"
14939    )]
14940    pub paste_all: Option<bool>,
14941    #[serde(rename = "@pasteFormulas")]
14942    #[serde(
14943        default,
14944        skip_serializing_if = "Option::is_none",
14945        with = "ooxml_xml::ooxml_bool"
14946    )]
14947    pub paste_formulas: Option<bool>,
14948    #[serde(rename = "@pasteValues")]
14949    #[serde(
14950        default,
14951        skip_serializing_if = "Option::is_none",
14952        with = "ooxml_xml::ooxml_bool"
14953    )]
14954    pub paste_values: Option<bool>,
14955    #[serde(rename = "@pasteFormats")]
14956    #[serde(
14957        default,
14958        skip_serializing_if = "Option::is_none",
14959        with = "ooxml_xml::ooxml_bool"
14960    )]
14961    pub paste_formats: Option<bool>,
14962    #[serde(rename = "@pasteComments")]
14963    #[serde(
14964        default,
14965        skip_serializing_if = "Option::is_none",
14966        with = "ooxml_xml::ooxml_bool"
14967    )]
14968    pub paste_comments: Option<bool>,
14969    #[serde(rename = "@pasteDataValidation")]
14970    #[serde(
14971        default,
14972        skip_serializing_if = "Option::is_none",
14973        with = "ooxml_xml::ooxml_bool"
14974    )]
14975    pub paste_data_validation: Option<bool>,
14976    #[serde(rename = "@pasteBorders")]
14977    #[serde(
14978        default,
14979        skip_serializing_if = "Option::is_none",
14980        with = "ooxml_xml::ooxml_bool"
14981    )]
14982    pub paste_borders: Option<bool>,
14983    #[serde(rename = "@pasteColWidths")]
14984    #[serde(
14985        default,
14986        skip_serializing_if = "Option::is_none",
14987        with = "ooxml_xml::ooxml_bool"
14988    )]
14989    pub paste_col_widths: Option<bool>,
14990    #[serde(rename = "@pasteNumberFormats")]
14991    #[serde(
14992        default,
14993        skip_serializing_if = "Option::is_none",
14994        with = "ooxml_xml::ooxml_bool"
14995    )]
14996    pub paste_number_formats: Option<bool>,
14997    #[serde(rename = "@merge")]
14998    #[serde(
14999        default,
15000        skip_serializing_if = "Option::is_none",
15001        with = "ooxml_xml::ooxml_bool"
15002    )]
15003    pub merge: Option<bool>,
15004    #[serde(rename = "@splitFirst")]
15005    #[serde(
15006        default,
15007        skip_serializing_if = "Option::is_none",
15008        with = "ooxml_xml::ooxml_bool"
15009    )]
15010    pub split_first: Option<bool>,
15011    #[serde(rename = "@splitAll")]
15012    #[serde(
15013        default,
15014        skip_serializing_if = "Option::is_none",
15015        with = "ooxml_xml::ooxml_bool"
15016    )]
15017    pub split_all: Option<bool>,
15018    #[serde(rename = "@rowColShift")]
15019    #[serde(
15020        default,
15021        skip_serializing_if = "Option::is_none",
15022        with = "ooxml_xml::ooxml_bool"
15023    )]
15024    pub row_col_shift: Option<bool>,
15025    #[serde(rename = "@clearAll")]
15026    #[serde(
15027        default,
15028        skip_serializing_if = "Option::is_none",
15029        with = "ooxml_xml::ooxml_bool"
15030    )]
15031    pub clear_all: Option<bool>,
15032    #[serde(rename = "@clearFormats")]
15033    #[serde(
15034        default,
15035        skip_serializing_if = "Option::is_none",
15036        with = "ooxml_xml::ooxml_bool"
15037    )]
15038    pub clear_formats: Option<bool>,
15039    #[serde(rename = "@clearContents")]
15040    #[serde(
15041        default,
15042        skip_serializing_if = "Option::is_none",
15043        with = "ooxml_xml::ooxml_bool"
15044    )]
15045    pub clear_contents: Option<bool>,
15046    #[serde(rename = "@clearComments")]
15047    #[serde(
15048        default,
15049        skip_serializing_if = "Option::is_none",
15050        with = "ooxml_xml::ooxml_bool"
15051    )]
15052    pub clear_comments: Option<bool>,
15053    #[serde(rename = "@assign")]
15054    #[serde(
15055        default,
15056        skip_serializing_if = "Option::is_none",
15057        with = "ooxml_xml::ooxml_bool"
15058    )]
15059    pub assign: Option<bool>,
15060    #[serde(rename = "@coerce")]
15061    #[serde(
15062        default,
15063        skip_serializing_if = "Option::is_none",
15064        with = "ooxml_xml::ooxml_bool"
15065    )]
15066    pub coerce: Option<bool>,
15067    #[serde(rename = "@adjust")]
15068    #[serde(
15069        default,
15070        skip_serializing_if = "Option::is_none",
15071        with = "ooxml_xml::ooxml_bool"
15072    )]
15073    pub adjust: Option<bool>,
15074    #[serde(rename = "@cellMeta")]
15075    #[serde(
15076        default,
15077        skip_serializing_if = "Option::is_none",
15078        with = "ooxml_xml::ooxml_bool"
15079    )]
15080    pub cell_meta: Option<bool>,
15081    /// Unknown attributes captured for roundtrip fidelity.
15082    #[cfg(feature = "extra-attrs")]
15083    #[serde(skip)]
15084    #[cfg(feature = "extra-attrs")]
15085    #[serde(default)]
15086    #[cfg(feature = "extra-attrs")]
15087    pub extra_attrs: std::collections::HashMap<String, String>,
15088}
15089
15090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15091pub struct MetadataBlocks {
15092    #[serde(rename = "@count")]
15093    #[serde(default, skip_serializing_if = "Option::is_none")]
15094    pub count: Option<u32>,
15095    #[serde(rename = "bk")]
15096    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15097    pub bk: Vec<MetadataBlock>,
15098    /// Unknown attributes captured for roundtrip fidelity.
15099    #[cfg(feature = "extra-attrs")]
15100    #[serde(skip)]
15101    #[cfg(feature = "extra-attrs")]
15102    #[serde(default)]
15103    #[cfg(feature = "extra-attrs")]
15104    pub extra_attrs: std::collections::HashMap<String, String>,
15105    /// Unknown child elements captured for roundtrip fidelity.
15106    #[cfg(feature = "extra-children")]
15107    #[serde(skip)]
15108    #[cfg(feature = "extra-children")]
15109    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15110}
15111
15112#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15113pub struct MetadataBlock {
15114    #[serde(rename = "rc")]
15115    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15116    pub rc: Vec<MetadataRecord>,
15117    /// Unknown child elements captured for roundtrip fidelity.
15118    #[cfg(feature = "extra-children")]
15119    #[serde(skip)]
15120    #[cfg(feature = "extra-children")]
15121    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15122}
15123
15124#[derive(Debug, Clone, Serialize, Deserialize)]
15125pub struct MetadataRecord {
15126    #[serde(rename = "@t")]
15127    pub cell_type: u32,
15128    #[serde(rename = "@v")]
15129    pub value: u32,
15130    /// Unknown attributes captured for roundtrip fidelity.
15131    #[cfg(feature = "extra-attrs")]
15132    #[serde(skip)]
15133    #[cfg(feature = "extra-attrs")]
15134    #[serde(default)]
15135    #[cfg(feature = "extra-attrs")]
15136    pub extra_attrs: std::collections::HashMap<String, String>,
15137}
15138
15139#[derive(Debug, Clone, Serialize, Deserialize)]
15140pub struct CTFutureMetadata {
15141    #[serde(rename = "@name")]
15142    pub name: XmlString,
15143    #[serde(rename = "@count")]
15144    #[serde(default, skip_serializing_if = "Option::is_none")]
15145    pub count: Option<u32>,
15146    #[serde(rename = "bk")]
15147    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15148    pub bk: Vec<CTFutureMetadataBlock>,
15149    #[serde(rename = "extLst")]
15150    #[serde(default, skip_serializing_if = "Option::is_none")]
15151    pub extension_list: Option<Box<ExtensionList>>,
15152    /// Unknown attributes captured for roundtrip fidelity.
15153    #[cfg(feature = "extra-attrs")]
15154    #[serde(skip)]
15155    #[cfg(feature = "extra-attrs")]
15156    #[serde(default)]
15157    #[cfg(feature = "extra-attrs")]
15158    pub extra_attrs: std::collections::HashMap<String, String>,
15159    /// Unknown child elements captured for roundtrip fidelity.
15160    #[cfg(feature = "extra-children")]
15161    #[serde(skip)]
15162    #[cfg(feature = "extra-children")]
15163    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15164}
15165
15166#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15167pub struct CTFutureMetadataBlock {
15168    #[serde(rename = "extLst")]
15169    #[serde(default, skip_serializing_if = "Option::is_none")]
15170    pub extension_list: Option<Box<ExtensionList>>,
15171    /// Unknown child elements captured for roundtrip fidelity.
15172    #[cfg(feature = "extra-children")]
15173    #[serde(skip)]
15174    #[cfg(feature = "extra-children")]
15175    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15176}
15177
15178#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15179pub struct CTMdxMetadata {
15180    #[serde(rename = "@count")]
15181    #[serde(default, skip_serializing_if = "Option::is_none")]
15182    pub count: Option<u32>,
15183    #[serde(rename = "mdx")]
15184    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15185    pub mdx: Vec<CTMdx>,
15186    /// Unknown attributes captured for roundtrip fidelity.
15187    #[cfg(feature = "extra-attrs")]
15188    #[serde(skip)]
15189    #[cfg(feature = "extra-attrs")]
15190    #[serde(default)]
15191    #[cfg(feature = "extra-attrs")]
15192    pub extra_attrs: std::collections::HashMap<String, String>,
15193    /// Unknown child elements captured for roundtrip fidelity.
15194    #[cfg(feature = "extra-children")]
15195    #[serde(skip)]
15196    #[cfg(feature = "extra-children")]
15197    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15198}
15199
15200#[derive(Debug, Clone, Serialize, Deserialize)]
15201pub struct CTMdx {
15202    #[serde(rename = "@n")]
15203    pub n: u32,
15204    #[serde(rename = "@f")]
15205    pub formula: STMdxFunctionType,
15206    #[serde(rename = "t")]
15207    #[serde(default, skip_serializing_if = "Option::is_none")]
15208    pub cell_type: Option<Box<CTMdxTuple>>,
15209    #[serde(rename = "ms")]
15210    #[serde(default, skip_serializing_if = "Option::is_none")]
15211    pub ms: Option<Box<CTMdxSet>>,
15212    #[serde(rename = "p")]
15213    #[serde(default, skip_serializing_if = "Option::is_none")]
15214    pub p: Option<Box<CTMdxMemeberProp>>,
15215    #[serde(rename = "k")]
15216    #[serde(default, skip_serializing_if = "Option::is_none")]
15217    pub k: Option<Box<CTMdxKPI>>,
15218    /// Unknown attributes captured for roundtrip fidelity.
15219    #[cfg(feature = "extra-attrs")]
15220    #[serde(skip)]
15221    #[cfg(feature = "extra-attrs")]
15222    #[serde(default)]
15223    #[cfg(feature = "extra-attrs")]
15224    pub extra_attrs: std::collections::HashMap<String, String>,
15225    /// Unknown child elements captured for roundtrip fidelity.
15226    #[cfg(feature = "extra-children")]
15227    #[serde(skip)]
15228    #[cfg(feature = "extra-children")]
15229    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15230}
15231
15232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15233pub struct CTMdxTuple {
15234    #[serde(rename = "@c")]
15235    #[serde(default, skip_serializing_if = "Option::is_none")]
15236    pub cells: Option<u32>,
15237    #[serde(rename = "@ct")]
15238    #[serde(default, skip_serializing_if = "Option::is_none")]
15239    pub ct: Option<XmlString>,
15240    #[serde(rename = "@si")]
15241    #[serde(default, skip_serializing_if = "Option::is_none")]
15242    pub si: Option<u32>,
15243    #[serde(rename = "@fi")]
15244    #[serde(default, skip_serializing_if = "Option::is_none")]
15245    pub fi: Option<u32>,
15246    #[serde(rename = "@bc")]
15247    #[serde(default, skip_serializing_if = "Option::is_none")]
15248    pub bc: Option<STUnsignedIntHex>,
15249    #[serde(rename = "@fc")]
15250    #[serde(default, skip_serializing_if = "Option::is_none")]
15251    pub fc: Option<STUnsignedIntHex>,
15252    #[serde(rename = "@i")]
15253    #[serde(
15254        default,
15255        skip_serializing_if = "Option::is_none",
15256        with = "ooxml_xml::ooxml_bool"
15257    )]
15258    pub i: Option<bool>,
15259    #[serde(rename = "@u")]
15260    #[serde(
15261        default,
15262        skip_serializing_if = "Option::is_none",
15263        with = "ooxml_xml::ooxml_bool"
15264    )]
15265    pub u: Option<bool>,
15266    #[serde(rename = "@st")]
15267    #[serde(
15268        default,
15269        skip_serializing_if = "Option::is_none",
15270        with = "ooxml_xml::ooxml_bool"
15271    )]
15272    pub st: Option<bool>,
15273    #[serde(rename = "@b")]
15274    #[serde(
15275        default,
15276        skip_serializing_if = "Option::is_none",
15277        with = "ooxml_xml::ooxml_bool"
15278    )]
15279    pub b: Option<bool>,
15280    #[serde(rename = "n")]
15281    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15282    pub n: Vec<CTMetadataStringIndex>,
15283    /// Unknown attributes captured for roundtrip fidelity.
15284    #[cfg(feature = "extra-attrs")]
15285    #[serde(skip)]
15286    #[cfg(feature = "extra-attrs")]
15287    #[serde(default)]
15288    #[cfg(feature = "extra-attrs")]
15289    pub extra_attrs: std::collections::HashMap<String, String>,
15290    /// Unknown child elements captured for roundtrip fidelity.
15291    #[cfg(feature = "extra-children")]
15292    #[serde(skip)]
15293    #[cfg(feature = "extra-children")]
15294    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15295}
15296
15297#[derive(Debug, Clone, Serialize, Deserialize)]
15298pub struct CTMdxSet {
15299    #[serde(rename = "@ns")]
15300    pub ns: u32,
15301    #[serde(rename = "@c")]
15302    #[serde(default, skip_serializing_if = "Option::is_none")]
15303    pub cells: Option<u32>,
15304    #[serde(rename = "@o")]
15305    #[serde(default, skip_serializing_if = "Option::is_none")]
15306    pub o: Option<STMdxSetOrder>,
15307    #[serde(rename = "n")]
15308    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15309    pub n: Vec<CTMetadataStringIndex>,
15310    /// Unknown attributes captured for roundtrip fidelity.
15311    #[cfg(feature = "extra-attrs")]
15312    #[serde(skip)]
15313    #[cfg(feature = "extra-attrs")]
15314    #[serde(default)]
15315    #[cfg(feature = "extra-attrs")]
15316    pub extra_attrs: std::collections::HashMap<String, String>,
15317    /// Unknown child elements captured for roundtrip fidelity.
15318    #[cfg(feature = "extra-children")]
15319    #[serde(skip)]
15320    #[cfg(feature = "extra-children")]
15321    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15322}
15323
15324#[derive(Debug, Clone, Serialize, Deserialize)]
15325pub struct CTMdxMemeberProp {
15326    #[serde(rename = "@n")]
15327    pub n: u32,
15328    #[serde(rename = "@np")]
15329    pub np: u32,
15330    /// Unknown attributes captured for roundtrip fidelity.
15331    #[cfg(feature = "extra-attrs")]
15332    #[serde(skip)]
15333    #[cfg(feature = "extra-attrs")]
15334    #[serde(default)]
15335    #[cfg(feature = "extra-attrs")]
15336    pub extra_attrs: std::collections::HashMap<String, String>,
15337}
15338
15339#[derive(Debug, Clone, Serialize, Deserialize)]
15340pub struct CTMdxKPI {
15341    #[serde(rename = "@n")]
15342    pub n: u32,
15343    #[serde(rename = "@np")]
15344    pub np: u32,
15345    #[serde(rename = "@p")]
15346    pub p: STMdxKPIProperty,
15347    /// Unknown attributes captured for roundtrip fidelity.
15348    #[cfg(feature = "extra-attrs")]
15349    #[serde(skip)]
15350    #[cfg(feature = "extra-attrs")]
15351    #[serde(default)]
15352    #[cfg(feature = "extra-attrs")]
15353    pub extra_attrs: std::collections::HashMap<String, String>,
15354}
15355
15356#[derive(Debug, Clone, Serialize, Deserialize)]
15357pub struct CTMetadataStringIndex {
15358    #[serde(rename = "@x")]
15359    pub x: u32,
15360    #[serde(rename = "@s")]
15361    #[serde(
15362        default,
15363        skip_serializing_if = "Option::is_none",
15364        with = "ooxml_xml::ooxml_bool"
15365    )]
15366    pub style_index: Option<bool>,
15367    /// Unknown attributes captured for roundtrip fidelity.
15368    #[cfg(feature = "extra-attrs")]
15369    #[serde(skip)]
15370    #[cfg(feature = "extra-attrs")]
15371    #[serde(default)]
15372    #[cfg(feature = "extra-attrs")]
15373    pub extra_attrs: std::collections::HashMap<String, String>,
15374}
15375
15376#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15377pub struct MetadataStrings {
15378    #[serde(rename = "@count")]
15379    #[serde(default, skip_serializing_if = "Option::is_none")]
15380    pub count: Option<u32>,
15381    #[serde(rename = "s")]
15382    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15383    pub style_index: Vec<CTXStringElement>,
15384    /// Unknown attributes captured for roundtrip fidelity.
15385    #[cfg(feature = "extra-attrs")]
15386    #[serde(skip)]
15387    #[cfg(feature = "extra-attrs")]
15388    #[serde(default)]
15389    #[cfg(feature = "extra-attrs")]
15390    pub extra_attrs: std::collections::HashMap<String, String>,
15391    /// Unknown child elements captured for roundtrip fidelity.
15392    #[cfg(feature = "extra-children")]
15393    #[serde(skip)]
15394    #[cfg(feature = "extra-children")]
15395    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15396}
15397
15398pub type SmlSingleXmlCells = Box<SingleXmlCells>;
15399
15400#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15401pub struct SingleXmlCells {
15402    #[serde(rename = "singleXmlCell")]
15403    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15404    pub single_xml_cell: Vec<SingleXmlCell>,
15405    /// Unknown child elements captured for roundtrip fidelity.
15406    #[cfg(feature = "extra-children")]
15407    #[serde(skip)]
15408    #[cfg(feature = "extra-children")]
15409    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15410}
15411
15412#[derive(Debug, Clone, Serialize, Deserialize)]
15413pub struct SingleXmlCell {
15414    #[serde(rename = "@id")]
15415    pub id: u32,
15416    #[serde(rename = "@r")]
15417    pub reference: CellRef,
15418    #[serde(rename = "@connectionId")]
15419    pub connection_id: u32,
15420    #[serde(rename = "xmlCellPr")]
15421    pub xml_cell_pr: Box<XmlCellProperties>,
15422    #[serde(rename = "extLst")]
15423    #[serde(default, skip_serializing_if = "Option::is_none")]
15424    pub extension_list: Option<Box<ExtensionList>>,
15425    /// Unknown attributes captured for roundtrip fidelity.
15426    #[cfg(feature = "extra-attrs")]
15427    #[serde(skip)]
15428    #[cfg(feature = "extra-attrs")]
15429    #[serde(default)]
15430    #[cfg(feature = "extra-attrs")]
15431    pub extra_attrs: std::collections::HashMap<String, String>,
15432    /// Unknown child elements captured for roundtrip fidelity.
15433    #[cfg(feature = "extra-children")]
15434    #[serde(skip)]
15435    #[cfg(feature = "extra-children")]
15436    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15437}
15438
15439#[derive(Debug, Clone, Serialize, Deserialize)]
15440pub struct XmlCellProperties {
15441    #[serde(rename = "@id")]
15442    pub id: u32,
15443    #[serde(rename = "@uniqueName")]
15444    #[serde(default, skip_serializing_if = "Option::is_none")]
15445    pub unique_name: Option<XmlString>,
15446    #[serde(rename = "xmlPr")]
15447    pub xml_pr: Box<XmlProperties>,
15448    #[serde(rename = "extLst")]
15449    #[serde(default, skip_serializing_if = "Option::is_none")]
15450    pub extension_list: Option<Box<ExtensionList>>,
15451    /// Unknown attributes captured for roundtrip fidelity.
15452    #[cfg(feature = "extra-attrs")]
15453    #[serde(skip)]
15454    #[cfg(feature = "extra-attrs")]
15455    #[serde(default)]
15456    #[cfg(feature = "extra-attrs")]
15457    pub extra_attrs: std::collections::HashMap<String, String>,
15458    /// Unknown child elements captured for roundtrip fidelity.
15459    #[cfg(feature = "extra-children")]
15460    #[serde(skip)]
15461    #[cfg(feature = "extra-children")]
15462    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15463}
15464
15465#[derive(Debug, Clone, Serialize, Deserialize)]
15466pub struct XmlProperties {
15467    #[serde(rename = "@mapId")]
15468    pub map_id: u32,
15469    #[serde(rename = "@xpath")]
15470    pub xpath: XmlString,
15471    #[serde(rename = "@xmlDataType")]
15472    pub xml_data_type: STXmlDataType,
15473    #[serde(rename = "extLst")]
15474    #[serde(default, skip_serializing_if = "Option::is_none")]
15475    pub extension_list: Option<Box<ExtensionList>>,
15476    /// Unknown attributes captured for roundtrip fidelity.
15477    #[cfg(feature = "extra-attrs")]
15478    #[serde(skip)]
15479    #[cfg(feature = "extra-attrs")]
15480    #[serde(default)]
15481    #[cfg(feature = "extra-attrs")]
15482    pub extra_attrs: std::collections::HashMap<String, String>,
15483    /// Unknown child elements captured for roundtrip fidelity.
15484    #[cfg(feature = "extra-children")]
15485    #[serde(skip)]
15486    #[cfg(feature = "extra-children")]
15487    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15488}
15489
15490pub type SmlStyleSheet = Box<Stylesheet>;
15491
15492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15493#[serde(rename = "styleSheet")]
15494pub struct Stylesheet {
15495    #[cfg(feature = "sml-styling")]
15496    #[serde(rename = "numFmts")]
15497    #[serde(default, skip_serializing_if = "Option::is_none")]
15498    pub num_fmts: Option<Box<NumberFormats>>,
15499    #[cfg(feature = "sml-styling")]
15500    #[serde(rename = "fonts")]
15501    #[serde(default, skip_serializing_if = "Option::is_none")]
15502    pub fonts: Option<Box<Fonts>>,
15503    #[cfg(feature = "sml-styling")]
15504    #[serde(rename = "fills")]
15505    #[serde(default, skip_serializing_if = "Option::is_none")]
15506    pub fills: Option<Box<Fills>>,
15507    #[cfg(feature = "sml-styling")]
15508    #[serde(rename = "borders")]
15509    #[serde(default, skip_serializing_if = "Option::is_none")]
15510    pub borders: Option<Box<Borders>>,
15511    #[cfg(feature = "sml-styling")]
15512    #[serde(rename = "cellStyleXfs")]
15513    #[serde(default, skip_serializing_if = "Option::is_none")]
15514    pub cell_style_xfs: Option<Box<CellStyleFormats>>,
15515    #[cfg(feature = "sml-styling")]
15516    #[serde(rename = "cellXfs")]
15517    #[serde(default, skip_serializing_if = "Option::is_none")]
15518    pub cell_xfs: Option<Box<CellFormats>>,
15519    #[cfg(feature = "sml-styling")]
15520    #[serde(rename = "cellStyles")]
15521    #[serde(default, skip_serializing_if = "Option::is_none")]
15522    pub cell_styles: Option<Box<CellStyles>>,
15523    #[cfg(feature = "sml-styling")]
15524    #[serde(rename = "dxfs")]
15525    #[serde(default, skip_serializing_if = "Option::is_none")]
15526    pub dxfs: Option<Box<DifferentialFormats>>,
15527    #[cfg(feature = "sml-styling")]
15528    #[serde(rename = "tableStyles")]
15529    #[serde(default, skip_serializing_if = "Option::is_none")]
15530    pub table_styles: Option<Box<TableStyles>>,
15531    #[cfg(feature = "sml-styling")]
15532    #[serde(rename = "colors")]
15533    #[serde(default, skip_serializing_if = "Option::is_none")]
15534    pub colors: Option<Box<Colors>>,
15535    #[cfg(feature = "sml-extensions")]
15536    #[serde(rename = "extLst")]
15537    #[serde(default, skip_serializing_if = "Option::is_none")]
15538    pub extension_list: Option<Box<ExtensionList>>,
15539    /// Unknown child elements captured for roundtrip fidelity.
15540    #[cfg(feature = "extra-children")]
15541    #[serde(skip)]
15542    #[cfg(feature = "extra-children")]
15543    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15544}
15545
15546#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15547#[serde(rename = "alignment")]
15548pub struct CellAlignment {
15549    #[cfg(feature = "sml-styling")]
15550    #[serde(rename = "@horizontal")]
15551    #[serde(default, skip_serializing_if = "Option::is_none")]
15552    pub horizontal: Option<HorizontalAlignment>,
15553    #[cfg(feature = "sml-styling")]
15554    #[serde(rename = "@vertical")]
15555    #[serde(default, skip_serializing_if = "Option::is_none")]
15556    pub vertical: Option<VerticalAlignment>,
15557    #[cfg(feature = "sml-styling")]
15558    #[serde(rename = "@textRotation")]
15559    #[serde(default, skip_serializing_if = "Option::is_none")]
15560    pub text_rotation: Option<STTextRotation>,
15561    #[cfg(feature = "sml-styling")]
15562    #[serde(rename = "@wrapText")]
15563    #[serde(
15564        default,
15565        skip_serializing_if = "Option::is_none",
15566        with = "ooxml_xml::ooxml_bool"
15567    )]
15568    pub wrap_text: Option<bool>,
15569    #[cfg(feature = "sml-styling")]
15570    #[serde(rename = "@indent")]
15571    #[serde(default, skip_serializing_if = "Option::is_none")]
15572    pub indent: Option<u32>,
15573    #[cfg(feature = "sml-styling")]
15574    #[serde(rename = "@relativeIndent")]
15575    #[serde(default, skip_serializing_if = "Option::is_none")]
15576    pub relative_indent: Option<i32>,
15577    #[cfg(feature = "sml-styling")]
15578    #[serde(rename = "@justifyLastLine")]
15579    #[serde(
15580        default,
15581        skip_serializing_if = "Option::is_none",
15582        with = "ooxml_xml::ooxml_bool"
15583    )]
15584    pub justify_last_line: Option<bool>,
15585    #[cfg(feature = "sml-styling")]
15586    #[serde(rename = "@shrinkToFit")]
15587    #[serde(
15588        default,
15589        skip_serializing_if = "Option::is_none",
15590        with = "ooxml_xml::ooxml_bool"
15591    )]
15592    pub shrink_to_fit: Option<bool>,
15593    #[cfg(feature = "sml-styling")]
15594    #[serde(rename = "@readingOrder")]
15595    #[serde(default, skip_serializing_if = "Option::is_none")]
15596    pub reading_order: Option<u32>,
15597    /// Unknown attributes captured for roundtrip fidelity.
15598    #[cfg(feature = "extra-attrs")]
15599    #[serde(skip)]
15600    #[cfg(feature = "extra-attrs")]
15601    #[serde(default)]
15602    #[cfg(feature = "extra-attrs")]
15603    pub extra_attrs: std::collections::HashMap<String, String>,
15604}
15605
15606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15607#[serde(rename = "borders")]
15608pub struct Borders {
15609    #[serde(rename = "@count")]
15610    #[serde(default, skip_serializing_if = "Option::is_none")]
15611    pub count: Option<u32>,
15612    #[serde(rename = "border")]
15613    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15614    pub border: Vec<Border>,
15615    /// Unknown attributes captured for roundtrip fidelity.
15616    #[cfg(feature = "extra-attrs")]
15617    #[serde(skip)]
15618    #[cfg(feature = "extra-attrs")]
15619    #[serde(default)]
15620    #[cfg(feature = "extra-attrs")]
15621    pub extra_attrs: std::collections::HashMap<String, String>,
15622    /// Unknown child elements captured for roundtrip fidelity.
15623    #[cfg(feature = "extra-children")]
15624    #[serde(skip)]
15625    #[cfg(feature = "extra-children")]
15626    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15627}
15628
15629#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15630#[serde(rename = "border")]
15631pub struct Border {
15632    #[cfg(feature = "sml-styling")]
15633    #[serde(rename = "@diagonalUp")]
15634    #[serde(
15635        default,
15636        skip_serializing_if = "Option::is_none",
15637        with = "ooxml_xml::ooxml_bool"
15638    )]
15639    pub diagonal_up: Option<bool>,
15640    #[cfg(feature = "sml-styling")]
15641    #[serde(rename = "@diagonalDown")]
15642    #[serde(
15643        default,
15644        skip_serializing_if = "Option::is_none",
15645        with = "ooxml_xml::ooxml_bool"
15646    )]
15647    pub diagonal_down: Option<bool>,
15648    #[cfg(feature = "sml-styling")]
15649    #[serde(rename = "@outline")]
15650    #[serde(
15651        default,
15652        skip_serializing_if = "Option::is_none",
15653        with = "ooxml_xml::ooxml_bool"
15654    )]
15655    pub outline: Option<bool>,
15656    #[serde(rename = "start")]
15657    #[serde(default, skip_serializing_if = "Option::is_none")]
15658    pub start: Option<Box<BorderProperties>>,
15659    #[serde(rename = "end")]
15660    #[serde(default, skip_serializing_if = "Option::is_none")]
15661    pub end: Option<Box<BorderProperties>>,
15662    #[cfg(feature = "sml-styling")]
15663    #[serde(rename = "left")]
15664    #[serde(default, skip_serializing_if = "Option::is_none")]
15665    pub left: Option<Box<BorderProperties>>,
15666    #[cfg(feature = "sml-styling")]
15667    #[serde(rename = "right")]
15668    #[serde(default, skip_serializing_if = "Option::is_none")]
15669    pub right: Option<Box<BorderProperties>>,
15670    #[cfg(feature = "sml-styling")]
15671    #[serde(rename = "top")]
15672    #[serde(default, skip_serializing_if = "Option::is_none")]
15673    pub top: Option<Box<BorderProperties>>,
15674    #[cfg(feature = "sml-styling")]
15675    #[serde(rename = "bottom")]
15676    #[serde(default, skip_serializing_if = "Option::is_none")]
15677    pub bottom: Option<Box<BorderProperties>>,
15678    #[cfg(feature = "sml-styling")]
15679    #[serde(rename = "diagonal")]
15680    #[serde(default, skip_serializing_if = "Option::is_none")]
15681    pub diagonal: Option<Box<BorderProperties>>,
15682    #[cfg(feature = "sml-styling")]
15683    #[serde(rename = "vertical")]
15684    #[serde(default, skip_serializing_if = "Option::is_none")]
15685    pub vertical: Option<Box<BorderProperties>>,
15686    #[cfg(feature = "sml-styling")]
15687    #[serde(rename = "horizontal")]
15688    #[serde(default, skip_serializing_if = "Option::is_none")]
15689    pub horizontal: Option<Box<BorderProperties>>,
15690    /// Unknown attributes captured for roundtrip fidelity.
15691    #[cfg(feature = "extra-attrs")]
15692    #[serde(skip)]
15693    #[cfg(feature = "extra-attrs")]
15694    #[serde(default)]
15695    #[cfg(feature = "extra-attrs")]
15696    pub extra_attrs: std::collections::HashMap<String, String>,
15697    /// Unknown child elements captured for roundtrip fidelity.
15698    #[cfg(feature = "extra-children")]
15699    #[serde(skip)]
15700    #[cfg(feature = "extra-children")]
15701    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15702}
15703
15704#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15705#[serde(rename = "left")]
15706pub struct BorderProperties {
15707    #[serde(rename = "@style")]
15708    #[serde(default, skip_serializing_if = "Option::is_none")]
15709    pub style: Option<BorderStyle>,
15710    #[serde(rename = "color")]
15711    #[serde(default, skip_serializing_if = "Option::is_none")]
15712    pub color: Option<Box<Color>>,
15713    /// Unknown attributes captured for roundtrip fidelity.
15714    #[cfg(feature = "extra-attrs")]
15715    #[serde(skip)]
15716    #[cfg(feature = "extra-attrs")]
15717    #[serde(default)]
15718    #[cfg(feature = "extra-attrs")]
15719    pub extra_attrs: std::collections::HashMap<String, String>,
15720    /// Unknown child elements captured for roundtrip fidelity.
15721    #[cfg(feature = "extra-children")]
15722    #[serde(skip)]
15723    #[cfg(feature = "extra-children")]
15724    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15725}
15726
15727#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15728#[serde(rename = "protection")]
15729pub struct CellProtection {
15730    #[cfg(feature = "sml-protection")]
15731    #[serde(rename = "@locked")]
15732    #[serde(
15733        default,
15734        skip_serializing_if = "Option::is_none",
15735        with = "ooxml_xml::ooxml_bool"
15736    )]
15737    pub locked: Option<bool>,
15738    #[cfg(feature = "sml-protection")]
15739    #[serde(rename = "@hidden")]
15740    #[serde(
15741        default,
15742        skip_serializing_if = "Option::is_none",
15743        with = "ooxml_xml::ooxml_bool"
15744    )]
15745    pub hidden: Option<bool>,
15746    /// Unknown attributes captured for roundtrip fidelity.
15747    #[cfg(feature = "extra-attrs")]
15748    #[serde(skip)]
15749    #[cfg(feature = "extra-attrs")]
15750    #[serde(default)]
15751    #[cfg(feature = "extra-attrs")]
15752    pub extra_attrs: std::collections::HashMap<String, String>,
15753}
15754
15755#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15756#[serde(rename = "fonts")]
15757pub struct Fonts {
15758    #[serde(rename = "@count")]
15759    #[serde(default, skip_serializing_if = "Option::is_none")]
15760    pub count: Option<u32>,
15761    #[serde(rename = "font")]
15762    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15763    pub font: Vec<Font>,
15764    /// Unknown attributes captured for roundtrip fidelity.
15765    #[cfg(feature = "extra-attrs")]
15766    #[serde(skip)]
15767    #[cfg(feature = "extra-attrs")]
15768    #[serde(default)]
15769    #[cfg(feature = "extra-attrs")]
15770    pub extra_attrs: std::collections::HashMap<String, String>,
15771    /// Unknown child elements captured for roundtrip fidelity.
15772    #[cfg(feature = "extra-children")]
15773    #[serde(skip)]
15774    #[cfg(feature = "extra-children")]
15775    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15776}
15777
15778#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15779#[serde(rename = "fills")]
15780pub struct Fills {
15781    #[serde(rename = "@count")]
15782    #[serde(default, skip_serializing_if = "Option::is_none")]
15783    pub count: Option<u32>,
15784    #[serde(rename = "fill")]
15785    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15786    pub fill: Vec<Fill>,
15787    /// Unknown attributes captured for roundtrip fidelity.
15788    #[cfg(feature = "extra-attrs")]
15789    #[serde(skip)]
15790    #[cfg(feature = "extra-attrs")]
15791    #[serde(default)]
15792    #[cfg(feature = "extra-attrs")]
15793    pub extra_attrs: std::collections::HashMap<String, String>,
15794    /// Unknown child elements captured for roundtrip fidelity.
15795    #[cfg(feature = "extra-children")]
15796    #[serde(skip)]
15797    #[cfg(feature = "extra-children")]
15798    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15799}
15800
15801#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15802#[serde(rename = "fill")]
15803pub struct Fill {
15804    #[cfg(feature = "sml-styling")]
15805    #[serde(rename = "patternFill")]
15806    #[serde(default, skip_serializing_if = "Option::is_none")]
15807    pub pattern_fill: Option<Box<PatternFill>>,
15808    #[cfg(feature = "sml-styling")]
15809    #[serde(rename = "gradientFill")]
15810    #[serde(default, skip_serializing_if = "Option::is_none")]
15811    pub gradient_fill: Option<Box<GradientFill>>,
15812    /// Unknown child elements captured for roundtrip fidelity.
15813    #[cfg(feature = "extra-children")]
15814    #[serde(skip)]
15815    #[cfg(feature = "extra-children")]
15816    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15817}
15818
15819#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15820#[serde(rename = "patternFill")]
15821pub struct PatternFill {
15822    #[serde(rename = "@patternType")]
15823    #[serde(default, skip_serializing_if = "Option::is_none")]
15824    pub pattern_type: Option<PatternType>,
15825    #[serde(rename = "fgColor")]
15826    #[serde(default, skip_serializing_if = "Option::is_none")]
15827    pub fg_color: Option<Box<Color>>,
15828    #[serde(rename = "bgColor")]
15829    #[serde(default, skip_serializing_if = "Option::is_none")]
15830    pub bg_color: Option<Box<Color>>,
15831    /// Unknown attributes captured for roundtrip fidelity.
15832    #[cfg(feature = "extra-attrs")]
15833    #[serde(skip)]
15834    #[cfg(feature = "extra-attrs")]
15835    #[serde(default)]
15836    #[cfg(feature = "extra-attrs")]
15837    pub extra_attrs: std::collections::HashMap<String, String>,
15838    /// Unknown child elements captured for roundtrip fidelity.
15839    #[cfg(feature = "extra-children")]
15840    #[serde(skip)]
15841    #[cfg(feature = "extra-children")]
15842    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15843}
15844
15845#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15846#[serde(rename = "color")]
15847pub struct Color {
15848    #[cfg(feature = "sml-styling")]
15849    #[serde(rename = "@auto")]
15850    #[serde(
15851        default,
15852        skip_serializing_if = "Option::is_none",
15853        with = "ooxml_xml::ooxml_bool"
15854    )]
15855    pub auto: Option<bool>,
15856    #[cfg(feature = "sml-styling")]
15857    #[serde(rename = "@indexed")]
15858    #[serde(default, skip_serializing_if = "Option::is_none")]
15859    pub indexed: Option<u32>,
15860    #[cfg(feature = "sml-styling")]
15861    #[serde(rename = "@rgb")]
15862    #[serde(default, skip_serializing_if = "Option::is_none")]
15863    pub rgb: Option<STUnsignedIntHex>,
15864    #[cfg(feature = "sml-styling")]
15865    #[serde(rename = "@theme")]
15866    #[serde(default, skip_serializing_if = "Option::is_none")]
15867    pub theme: Option<u32>,
15868    #[cfg(feature = "sml-styling")]
15869    #[serde(rename = "@tint")]
15870    #[serde(default, skip_serializing_if = "Option::is_none")]
15871    pub tint: Option<f64>,
15872    /// Unknown attributes captured for roundtrip fidelity.
15873    #[cfg(feature = "extra-attrs")]
15874    #[serde(skip)]
15875    #[cfg(feature = "extra-attrs")]
15876    #[serde(default)]
15877    #[cfg(feature = "extra-attrs")]
15878    pub extra_attrs: std::collections::HashMap<String, String>,
15879}
15880
15881#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15882#[serde(rename = "gradientFill")]
15883pub struct GradientFill {
15884    #[serde(rename = "@type")]
15885    #[serde(default, skip_serializing_if = "Option::is_none")]
15886    pub r#type: Option<GradientType>,
15887    #[serde(rename = "@degree")]
15888    #[serde(default, skip_serializing_if = "Option::is_none")]
15889    pub degree: Option<f64>,
15890    #[serde(rename = "@left")]
15891    #[serde(default, skip_serializing_if = "Option::is_none")]
15892    pub left: Option<f64>,
15893    #[serde(rename = "@right")]
15894    #[serde(default, skip_serializing_if = "Option::is_none")]
15895    pub right: Option<f64>,
15896    #[serde(rename = "@top")]
15897    #[serde(default, skip_serializing_if = "Option::is_none")]
15898    pub top: Option<f64>,
15899    #[serde(rename = "@bottom")]
15900    #[serde(default, skip_serializing_if = "Option::is_none")]
15901    pub bottom: Option<f64>,
15902    #[serde(rename = "stop")]
15903    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15904    pub stop: Vec<GradientStop>,
15905    /// Unknown attributes captured for roundtrip fidelity.
15906    #[cfg(feature = "extra-attrs")]
15907    #[serde(skip)]
15908    #[cfg(feature = "extra-attrs")]
15909    #[serde(default)]
15910    #[cfg(feature = "extra-attrs")]
15911    pub extra_attrs: std::collections::HashMap<String, String>,
15912    /// Unknown child elements captured for roundtrip fidelity.
15913    #[cfg(feature = "extra-children")]
15914    #[serde(skip)]
15915    #[cfg(feature = "extra-children")]
15916    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15917}
15918
15919#[derive(Debug, Clone, Serialize, Deserialize)]
15920#[serde(rename = "stop")]
15921pub struct GradientStop {
15922    #[serde(rename = "@position")]
15923    pub position: f64,
15924    #[serde(rename = "color")]
15925    pub color: Box<Color>,
15926    /// Unknown attributes captured for roundtrip fidelity.
15927    #[cfg(feature = "extra-attrs")]
15928    #[serde(skip)]
15929    #[cfg(feature = "extra-attrs")]
15930    #[serde(default)]
15931    #[cfg(feature = "extra-attrs")]
15932    pub extra_attrs: std::collections::HashMap<String, String>,
15933    /// Unknown child elements captured for roundtrip fidelity.
15934    #[cfg(feature = "extra-children")]
15935    #[serde(skip)]
15936    #[cfg(feature = "extra-children")]
15937    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15938}
15939
15940#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15941#[serde(rename = "numFmts")]
15942pub struct NumberFormats {
15943    #[serde(rename = "@count")]
15944    #[serde(default, skip_serializing_if = "Option::is_none")]
15945    pub count: Option<u32>,
15946    #[serde(rename = "numFmt")]
15947    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15948    pub num_fmt: Vec<NumberFormat>,
15949    /// Unknown attributes captured for roundtrip fidelity.
15950    #[cfg(feature = "extra-attrs")]
15951    #[serde(skip)]
15952    #[cfg(feature = "extra-attrs")]
15953    #[serde(default)]
15954    #[cfg(feature = "extra-attrs")]
15955    pub extra_attrs: std::collections::HashMap<String, String>,
15956    /// Unknown child elements captured for roundtrip fidelity.
15957    #[cfg(feature = "extra-children")]
15958    #[serde(skip)]
15959    #[cfg(feature = "extra-children")]
15960    pub extra_children: Vec<ooxml_xml::PositionedNode>,
15961}
15962
15963#[derive(Debug, Clone, Serialize, Deserialize)]
15964#[serde(rename = "numFmt")]
15965pub struct NumberFormat {
15966    #[cfg(feature = "sml-styling")]
15967    #[serde(rename = "@numFmtId")]
15968    pub number_format_id: STNumFmtId,
15969    #[cfg(feature = "sml-styling")]
15970    #[serde(rename = "@formatCode")]
15971    pub format_code: XmlString,
15972    /// Unknown attributes captured for roundtrip fidelity.
15973    #[cfg(feature = "extra-attrs")]
15974    #[serde(skip)]
15975    #[cfg(feature = "extra-attrs")]
15976    #[serde(default)]
15977    #[cfg(feature = "extra-attrs")]
15978    pub extra_attrs: std::collections::HashMap<String, String>,
15979}
15980
15981#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15982#[serde(rename = "cellStyleXfs")]
15983pub struct CellStyleFormats {
15984    #[serde(rename = "@count")]
15985    #[serde(default, skip_serializing_if = "Option::is_none")]
15986    pub count: Option<u32>,
15987    #[serde(rename = "xf")]
15988    #[serde(default, skip_serializing_if = "Vec::is_empty")]
15989    pub xf: Vec<Format>,
15990    /// Unknown attributes captured for roundtrip fidelity.
15991    #[cfg(feature = "extra-attrs")]
15992    #[serde(skip)]
15993    #[cfg(feature = "extra-attrs")]
15994    #[serde(default)]
15995    #[cfg(feature = "extra-attrs")]
15996    pub extra_attrs: std::collections::HashMap<String, String>,
15997    /// Unknown child elements captured for roundtrip fidelity.
15998    #[cfg(feature = "extra-children")]
15999    #[serde(skip)]
16000    #[cfg(feature = "extra-children")]
16001    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16002}
16003
16004#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16005#[serde(rename = "cellXfs")]
16006pub struct CellFormats {
16007    #[serde(rename = "@count")]
16008    #[serde(default, skip_serializing_if = "Option::is_none")]
16009    pub count: Option<u32>,
16010    #[serde(rename = "xf")]
16011    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16012    pub xf: Vec<Format>,
16013    /// Unknown attributes captured for roundtrip fidelity.
16014    #[cfg(feature = "extra-attrs")]
16015    #[serde(skip)]
16016    #[cfg(feature = "extra-attrs")]
16017    #[serde(default)]
16018    #[cfg(feature = "extra-attrs")]
16019    pub extra_attrs: std::collections::HashMap<String, String>,
16020    /// Unknown child elements captured for roundtrip fidelity.
16021    #[cfg(feature = "extra-children")]
16022    #[serde(skip)]
16023    #[cfg(feature = "extra-children")]
16024    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16025}
16026
16027#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16028#[serde(rename = "xf")]
16029pub struct Format {
16030    #[cfg(feature = "sml-styling")]
16031    #[serde(rename = "@numFmtId")]
16032    #[serde(default, skip_serializing_if = "Option::is_none")]
16033    pub number_format_id: Option<STNumFmtId>,
16034    #[cfg(feature = "sml-styling")]
16035    #[serde(rename = "@fontId")]
16036    #[serde(default, skip_serializing_if = "Option::is_none")]
16037    pub font_id: Option<STFontId>,
16038    #[cfg(feature = "sml-styling")]
16039    #[serde(rename = "@fillId")]
16040    #[serde(default, skip_serializing_if = "Option::is_none")]
16041    pub fill_id: Option<STFillId>,
16042    #[cfg(feature = "sml-styling")]
16043    #[serde(rename = "@borderId")]
16044    #[serde(default, skip_serializing_if = "Option::is_none")]
16045    pub border_id: Option<STBorderId>,
16046    #[cfg(feature = "sml-styling")]
16047    #[serde(rename = "@xfId")]
16048    #[serde(default, skip_serializing_if = "Option::is_none")]
16049    pub format_id: Option<STCellStyleXfId>,
16050    #[cfg(feature = "sml-styling")]
16051    #[serde(rename = "@quotePrefix")]
16052    #[serde(
16053        default,
16054        skip_serializing_if = "Option::is_none",
16055        with = "ooxml_xml::ooxml_bool"
16056    )]
16057    pub quote_prefix: Option<bool>,
16058    #[cfg(feature = "sml-pivot")]
16059    #[serde(rename = "@pivotButton")]
16060    #[serde(
16061        default,
16062        skip_serializing_if = "Option::is_none",
16063        with = "ooxml_xml::ooxml_bool"
16064    )]
16065    pub pivot_button: Option<bool>,
16066    #[cfg(feature = "sml-styling")]
16067    #[serde(rename = "@applyNumberFormat")]
16068    #[serde(
16069        default,
16070        skip_serializing_if = "Option::is_none",
16071        with = "ooxml_xml::ooxml_bool"
16072    )]
16073    pub apply_number_format: Option<bool>,
16074    #[cfg(feature = "sml-styling")]
16075    #[serde(rename = "@applyFont")]
16076    #[serde(
16077        default,
16078        skip_serializing_if = "Option::is_none",
16079        with = "ooxml_xml::ooxml_bool"
16080    )]
16081    pub apply_font: Option<bool>,
16082    #[cfg(feature = "sml-styling")]
16083    #[serde(rename = "@applyFill")]
16084    #[serde(
16085        default,
16086        skip_serializing_if = "Option::is_none",
16087        with = "ooxml_xml::ooxml_bool"
16088    )]
16089    pub apply_fill: Option<bool>,
16090    #[cfg(feature = "sml-styling")]
16091    #[serde(rename = "@applyBorder")]
16092    #[serde(
16093        default,
16094        skip_serializing_if = "Option::is_none",
16095        with = "ooxml_xml::ooxml_bool"
16096    )]
16097    pub apply_border: Option<bool>,
16098    #[cfg(feature = "sml-styling")]
16099    #[serde(rename = "@applyAlignment")]
16100    #[serde(
16101        default,
16102        skip_serializing_if = "Option::is_none",
16103        with = "ooxml_xml::ooxml_bool"
16104    )]
16105    pub apply_alignment: Option<bool>,
16106    #[cfg(feature = "sml-styling")]
16107    #[serde(rename = "@applyProtection")]
16108    #[serde(
16109        default,
16110        skip_serializing_if = "Option::is_none",
16111        with = "ooxml_xml::ooxml_bool"
16112    )]
16113    pub apply_protection: Option<bool>,
16114    #[cfg(feature = "sml-styling")]
16115    #[serde(rename = "alignment")]
16116    #[serde(default, skip_serializing_if = "Option::is_none")]
16117    pub alignment: Option<Box<CellAlignment>>,
16118    #[cfg(feature = "sml-protection")]
16119    #[serde(rename = "protection")]
16120    #[serde(default, skip_serializing_if = "Option::is_none")]
16121    pub protection: Option<Box<CellProtection>>,
16122    #[cfg(feature = "sml-extensions")]
16123    #[serde(rename = "extLst")]
16124    #[serde(default, skip_serializing_if = "Option::is_none")]
16125    pub extension_list: Option<Box<ExtensionList>>,
16126    /// Unknown attributes captured for roundtrip fidelity.
16127    #[cfg(feature = "extra-attrs")]
16128    #[serde(skip)]
16129    #[cfg(feature = "extra-attrs")]
16130    #[serde(default)]
16131    #[cfg(feature = "extra-attrs")]
16132    pub extra_attrs: std::collections::HashMap<String, String>,
16133    /// Unknown child elements captured for roundtrip fidelity.
16134    #[cfg(feature = "extra-children")]
16135    #[serde(skip)]
16136    #[cfg(feature = "extra-children")]
16137    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16138}
16139
16140#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16141#[serde(rename = "cellStyles")]
16142pub struct CellStyles {
16143    #[serde(rename = "@count")]
16144    #[serde(default, skip_serializing_if = "Option::is_none")]
16145    pub count: Option<u32>,
16146    #[serde(rename = "cellStyle")]
16147    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16148    pub cell_style: Vec<CellStyle>,
16149    /// Unknown attributes captured for roundtrip fidelity.
16150    #[cfg(feature = "extra-attrs")]
16151    #[serde(skip)]
16152    #[cfg(feature = "extra-attrs")]
16153    #[serde(default)]
16154    #[cfg(feature = "extra-attrs")]
16155    pub extra_attrs: std::collections::HashMap<String, String>,
16156    /// Unknown child elements captured for roundtrip fidelity.
16157    #[cfg(feature = "extra-children")]
16158    #[serde(skip)]
16159    #[cfg(feature = "extra-children")]
16160    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16161}
16162
16163#[derive(Debug, Clone, Serialize, Deserialize)]
16164#[serde(rename = "cellStyle")]
16165pub struct CellStyle {
16166    #[serde(rename = "@name")]
16167    #[serde(default, skip_serializing_if = "Option::is_none")]
16168    pub name: Option<XmlString>,
16169    #[serde(rename = "@xfId")]
16170    pub format_id: STCellStyleXfId,
16171    #[serde(rename = "@builtinId")]
16172    #[serde(default, skip_serializing_if = "Option::is_none")]
16173    pub builtin_id: Option<u32>,
16174    #[serde(rename = "@iLevel")]
16175    #[serde(default, skip_serializing_if = "Option::is_none")]
16176    pub i_level: Option<u32>,
16177    #[serde(rename = "@hidden")]
16178    #[serde(
16179        default,
16180        skip_serializing_if = "Option::is_none",
16181        with = "ooxml_xml::ooxml_bool"
16182    )]
16183    pub hidden: Option<bool>,
16184    #[serde(rename = "@customBuiltin")]
16185    #[serde(
16186        default,
16187        skip_serializing_if = "Option::is_none",
16188        with = "ooxml_xml::ooxml_bool"
16189    )]
16190    pub custom_builtin: Option<bool>,
16191    #[serde(rename = "extLst")]
16192    #[serde(default, skip_serializing_if = "Option::is_none")]
16193    pub extension_list: Option<Box<ExtensionList>>,
16194    /// Unknown attributes captured for roundtrip fidelity.
16195    #[cfg(feature = "extra-attrs")]
16196    #[serde(skip)]
16197    #[cfg(feature = "extra-attrs")]
16198    #[serde(default)]
16199    #[cfg(feature = "extra-attrs")]
16200    pub extra_attrs: std::collections::HashMap<String, String>,
16201    /// Unknown child elements captured for roundtrip fidelity.
16202    #[cfg(feature = "extra-children")]
16203    #[serde(skip)]
16204    #[cfg(feature = "extra-children")]
16205    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16206}
16207
16208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16209#[serde(rename = "dxfs")]
16210pub struct DifferentialFormats {
16211    #[serde(rename = "@count")]
16212    #[serde(default, skip_serializing_if = "Option::is_none")]
16213    pub count: Option<u32>,
16214    #[serde(rename = "dxf")]
16215    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16216    pub dxf: Vec<DifferentialFormat>,
16217    /// Unknown attributes captured for roundtrip fidelity.
16218    #[cfg(feature = "extra-attrs")]
16219    #[serde(skip)]
16220    #[cfg(feature = "extra-attrs")]
16221    #[serde(default)]
16222    #[cfg(feature = "extra-attrs")]
16223    pub extra_attrs: std::collections::HashMap<String, String>,
16224    /// Unknown child elements captured for roundtrip fidelity.
16225    #[cfg(feature = "extra-children")]
16226    #[serde(skip)]
16227    #[cfg(feature = "extra-children")]
16228    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16229}
16230
16231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16232#[serde(rename = "dxf")]
16233pub struct DifferentialFormat {
16234    #[serde(rename = "font")]
16235    #[serde(default, skip_serializing_if = "Option::is_none")]
16236    pub font: Option<Box<Font>>,
16237    #[serde(rename = "numFmt")]
16238    #[serde(default, skip_serializing_if = "Option::is_none")]
16239    pub num_fmt: Option<Box<NumberFormat>>,
16240    #[serde(rename = "fill")]
16241    #[serde(default, skip_serializing_if = "Option::is_none")]
16242    pub fill: Option<Box<Fill>>,
16243    #[serde(rename = "alignment")]
16244    #[serde(default, skip_serializing_if = "Option::is_none")]
16245    pub alignment: Option<Box<CellAlignment>>,
16246    #[serde(rename = "border")]
16247    #[serde(default, skip_serializing_if = "Option::is_none")]
16248    pub border: Option<Box<Border>>,
16249    #[serde(rename = "protection")]
16250    #[serde(default, skip_serializing_if = "Option::is_none")]
16251    pub protection: Option<Box<CellProtection>>,
16252    #[serde(rename = "extLst")]
16253    #[serde(default, skip_serializing_if = "Option::is_none")]
16254    pub extension_list: Option<Box<ExtensionList>>,
16255    /// Unknown child elements captured for roundtrip fidelity.
16256    #[cfg(feature = "extra-children")]
16257    #[serde(skip)]
16258    #[cfg(feature = "extra-children")]
16259    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16260}
16261
16262#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16263#[serde(rename = "colors")]
16264pub struct Colors {
16265    #[cfg(feature = "sml-styling")]
16266    #[serde(rename = "indexedColors")]
16267    #[serde(default, skip_serializing_if = "Option::is_none")]
16268    pub indexed_colors: Option<Box<IndexedColors>>,
16269    #[cfg(feature = "sml-styling")]
16270    #[serde(rename = "mruColors")]
16271    #[serde(default, skip_serializing_if = "Option::is_none")]
16272    pub mru_colors: Option<Box<MostRecentColors>>,
16273    /// Unknown child elements captured for roundtrip fidelity.
16274    #[cfg(feature = "extra-children")]
16275    #[serde(skip)]
16276    #[cfg(feature = "extra-children")]
16277    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16278}
16279
16280#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16281pub struct IndexedColors {
16282    #[serde(rename = "rgbColor")]
16283    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16284    pub rgb_color: Vec<RgbColor>,
16285    /// Unknown child elements captured for roundtrip fidelity.
16286    #[cfg(feature = "extra-children")]
16287    #[serde(skip)]
16288    #[cfg(feature = "extra-children")]
16289    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16290}
16291
16292#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16293pub struct MostRecentColors {
16294    #[serde(rename = "color")]
16295    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16296    pub color: Vec<Color>,
16297    /// Unknown child elements captured for roundtrip fidelity.
16298    #[cfg(feature = "extra-children")]
16299    #[serde(skip)]
16300    #[cfg(feature = "extra-children")]
16301    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16302}
16303
16304#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16305pub struct RgbColor {
16306    #[serde(rename = "@rgb")]
16307    #[serde(default, skip_serializing_if = "Option::is_none")]
16308    pub rgb: Option<STUnsignedIntHex>,
16309    /// Unknown attributes captured for roundtrip fidelity.
16310    #[cfg(feature = "extra-attrs")]
16311    #[serde(skip)]
16312    #[cfg(feature = "extra-attrs")]
16313    #[serde(default)]
16314    #[cfg(feature = "extra-attrs")]
16315    pub extra_attrs: std::collections::HashMap<String, String>,
16316}
16317
16318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16319pub struct TableStyles {
16320    #[serde(rename = "@count")]
16321    #[serde(default, skip_serializing_if = "Option::is_none")]
16322    pub count: Option<u32>,
16323    #[serde(rename = "@defaultTableStyle")]
16324    #[serde(default, skip_serializing_if = "Option::is_none")]
16325    pub default_table_style: Option<String>,
16326    #[serde(rename = "@defaultPivotStyle")]
16327    #[serde(default, skip_serializing_if = "Option::is_none")]
16328    pub default_pivot_style: Option<String>,
16329    #[serde(rename = "tableStyle")]
16330    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16331    pub table_style: Vec<TableStyle>,
16332    /// Unknown attributes captured for roundtrip fidelity.
16333    #[cfg(feature = "extra-attrs")]
16334    #[serde(skip)]
16335    #[cfg(feature = "extra-attrs")]
16336    #[serde(default)]
16337    #[cfg(feature = "extra-attrs")]
16338    pub extra_attrs: std::collections::HashMap<String, String>,
16339    /// Unknown child elements captured for roundtrip fidelity.
16340    #[cfg(feature = "extra-children")]
16341    #[serde(skip)]
16342    #[cfg(feature = "extra-children")]
16343    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16344}
16345
16346#[derive(Debug, Clone, Serialize, Deserialize)]
16347pub struct TableStyle {
16348    #[serde(rename = "@name")]
16349    pub name: String,
16350    #[serde(rename = "@pivot")]
16351    #[serde(
16352        default,
16353        skip_serializing_if = "Option::is_none",
16354        with = "ooxml_xml::ooxml_bool"
16355    )]
16356    pub pivot: Option<bool>,
16357    #[serde(rename = "@table")]
16358    #[serde(
16359        default,
16360        skip_serializing_if = "Option::is_none",
16361        with = "ooxml_xml::ooxml_bool"
16362    )]
16363    pub table: Option<bool>,
16364    #[serde(rename = "@count")]
16365    #[serde(default, skip_serializing_if = "Option::is_none")]
16366    pub count: Option<u32>,
16367    #[serde(rename = "tableStyleElement")]
16368    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16369    pub table_style_element: Vec<TableStyleElement>,
16370    /// Unknown attributes captured for roundtrip fidelity.
16371    #[cfg(feature = "extra-attrs")]
16372    #[serde(skip)]
16373    #[cfg(feature = "extra-attrs")]
16374    #[serde(default)]
16375    #[cfg(feature = "extra-attrs")]
16376    pub extra_attrs: std::collections::HashMap<String, String>,
16377    /// Unknown child elements captured for roundtrip fidelity.
16378    #[cfg(feature = "extra-children")]
16379    #[serde(skip)]
16380    #[cfg(feature = "extra-children")]
16381    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16382}
16383
16384#[derive(Debug, Clone, Serialize, Deserialize)]
16385pub struct TableStyleElement {
16386    #[serde(rename = "@type")]
16387    pub r#type: STTableStyleType,
16388    #[serde(rename = "@size")]
16389    #[serde(default, skip_serializing_if = "Option::is_none")]
16390    pub size: Option<u32>,
16391    #[serde(rename = "@dxfId")]
16392    #[serde(default, skip_serializing_if = "Option::is_none")]
16393    pub dxf_id: Option<STDxfId>,
16394    /// Unknown attributes captured for roundtrip fidelity.
16395    #[cfg(feature = "extra-attrs")]
16396    #[serde(skip)]
16397    #[cfg(feature = "extra-attrs")]
16398    #[serde(default)]
16399    #[cfg(feature = "extra-attrs")]
16400    pub extra_attrs: std::collections::HashMap<String, String>,
16401}
16402
16403#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16404pub struct BooleanProperty {
16405    #[serde(rename = "@val")]
16406    #[serde(
16407        default,
16408        skip_serializing_if = "Option::is_none",
16409        with = "ooxml_xml::ooxml_bool"
16410    )]
16411    pub value: Option<bool>,
16412    /// Unknown attributes captured for roundtrip fidelity.
16413    #[cfg(feature = "extra-attrs")]
16414    #[serde(skip)]
16415    #[cfg(feature = "extra-attrs")]
16416    #[serde(default)]
16417    #[cfg(feature = "extra-attrs")]
16418    pub extra_attrs: std::collections::HashMap<String, String>,
16419}
16420
16421#[derive(Debug, Clone, Serialize, Deserialize)]
16422pub struct FontSize {
16423    #[serde(rename = "@val")]
16424    pub value: f64,
16425    /// Unknown attributes captured for roundtrip fidelity.
16426    #[cfg(feature = "extra-attrs")]
16427    #[serde(skip)]
16428    #[cfg(feature = "extra-attrs")]
16429    #[serde(default)]
16430    #[cfg(feature = "extra-attrs")]
16431    pub extra_attrs: std::collections::HashMap<String, String>,
16432}
16433
16434#[derive(Debug, Clone, Serialize, Deserialize)]
16435pub struct IntProperty {
16436    #[serde(rename = "@val")]
16437    pub value: i32,
16438    /// Unknown attributes captured for roundtrip fidelity.
16439    #[cfg(feature = "extra-attrs")]
16440    #[serde(skip)]
16441    #[cfg(feature = "extra-attrs")]
16442    #[serde(default)]
16443    #[cfg(feature = "extra-attrs")]
16444    pub extra_attrs: std::collections::HashMap<String, String>,
16445}
16446
16447#[derive(Debug, Clone, Serialize, Deserialize)]
16448pub struct FontName {
16449    #[serde(rename = "@val")]
16450    pub value: XmlString,
16451    /// Unknown attributes captured for roundtrip fidelity.
16452    #[cfg(feature = "extra-attrs")]
16453    #[serde(skip)]
16454    #[cfg(feature = "extra-attrs")]
16455    #[serde(default)]
16456    #[cfg(feature = "extra-attrs")]
16457    pub extra_attrs: std::collections::HashMap<String, String>,
16458}
16459
16460#[derive(Debug, Clone, Serialize, Deserialize)]
16461pub struct VerticalAlignFontProperty {
16462    #[serde(rename = "@val")]
16463    pub value: VerticalAlignRun,
16464    /// Unknown attributes captured for roundtrip fidelity.
16465    #[cfg(feature = "extra-attrs")]
16466    #[serde(skip)]
16467    #[cfg(feature = "extra-attrs")]
16468    #[serde(default)]
16469    #[cfg(feature = "extra-attrs")]
16470    pub extra_attrs: std::collections::HashMap<String, String>,
16471}
16472
16473#[derive(Debug, Clone, Serialize, Deserialize)]
16474pub struct FontSchemeProperty {
16475    #[serde(rename = "@val")]
16476    pub value: FontScheme,
16477    /// Unknown attributes captured for roundtrip fidelity.
16478    #[cfg(feature = "extra-attrs")]
16479    #[serde(skip)]
16480    #[cfg(feature = "extra-attrs")]
16481    #[serde(default)]
16482    #[cfg(feature = "extra-attrs")]
16483    pub extra_attrs: std::collections::HashMap<String, String>,
16484}
16485
16486#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16487pub struct UnderlineProperty {
16488    #[serde(rename = "@val")]
16489    #[serde(default, skip_serializing_if = "Option::is_none")]
16490    pub value: Option<UnderlineStyle>,
16491    /// Unknown attributes captured for roundtrip fidelity.
16492    #[cfg(feature = "extra-attrs")]
16493    #[serde(skip)]
16494    #[cfg(feature = "extra-attrs")]
16495    #[serde(default)]
16496    #[cfg(feature = "extra-attrs")]
16497    pub extra_attrs: std::collections::HashMap<String, String>,
16498}
16499
16500#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16501#[serde(rename = "font")]
16502pub struct Font {
16503    #[cfg(feature = "sml-styling")]
16504    #[serde(rename = "name")]
16505    #[serde(default, skip_serializing_if = "Option::is_none")]
16506    pub name: Option<Box<FontName>>,
16507    #[cfg(feature = "sml-styling")]
16508    #[serde(rename = "charset")]
16509    #[serde(default, skip_serializing_if = "Option::is_none")]
16510    pub charset: Option<Box<IntProperty>>,
16511    #[cfg(feature = "sml-styling")]
16512    #[serde(rename = "family")]
16513    #[serde(default, skip_serializing_if = "Option::is_none")]
16514    pub family: Option<Box<FontFamily>>,
16515    #[cfg(feature = "sml-styling")]
16516    #[serde(rename = "b")]
16517    #[serde(default, skip_serializing_if = "Option::is_none")]
16518    pub b: Option<Box<BooleanProperty>>,
16519    #[cfg(feature = "sml-styling")]
16520    #[serde(rename = "i")]
16521    #[serde(default, skip_serializing_if = "Option::is_none")]
16522    pub i: Option<Box<BooleanProperty>>,
16523    #[cfg(feature = "sml-styling")]
16524    #[serde(rename = "strike")]
16525    #[serde(default, skip_serializing_if = "Option::is_none")]
16526    pub strike: Option<Box<BooleanProperty>>,
16527    #[cfg(feature = "sml-styling")]
16528    #[serde(rename = "outline")]
16529    #[serde(default, skip_serializing_if = "Option::is_none")]
16530    pub outline: Option<Box<BooleanProperty>>,
16531    #[cfg(feature = "sml-styling")]
16532    #[serde(rename = "shadow")]
16533    #[serde(default, skip_serializing_if = "Option::is_none")]
16534    pub shadow: Option<Box<BooleanProperty>>,
16535    #[cfg(feature = "sml-styling")]
16536    #[serde(rename = "condense")]
16537    #[serde(default, skip_serializing_if = "Option::is_none")]
16538    pub condense: Option<Box<BooleanProperty>>,
16539    #[cfg(feature = "sml-styling")]
16540    #[serde(rename = "extend")]
16541    #[serde(default, skip_serializing_if = "Option::is_none")]
16542    pub extend: Option<Box<BooleanProperty>>,
16543    #[cfg(feature = "sml-styling")]
16544    #[serde(rename = "color")]
16545    #[serde(default, skip_serializing_if = "Option::is_none")]
16546    pub color: Option<Box<Color>>,
16547    #[cfg(feature = "sml-styling")]
16548    #[serde(rename = "sz")]
16549    #[serde(default, skip_serializing_if = "Option::is_none")]
16550    pub sz: Option<Box<FontSize>>,
16551    #[cfg(feature = "sml-styling")]
16552    #[serde(rename = "u")]
16553    #[serde(default, skip_serializing_if = "Option::is_none")]
16554    pub u: Option<Box<UnderlineProperty>>,
16555    #[cfg(feature = "sml-styling")]
16556    #[serde(rename = "vertAlign")]
16557    #[serde(default, skip_serializing_if = "Option::is_none")]
16558    pub vert_align: Option<Box<VerticalAlignFontProperty>>,
16559    #[cfg(feature = "sml-styling")]
16560    #[serde(rename = "scheme")]
16561    #[serde(default, skip_serializing_if = "Option::is_none")]
16562    pub scheme: Option<Box<FontSchemeProperty>>,
16563    /// Unknown child elements captured for roundtrip fidelity.
16564    #[cfg(feature = "extra-children")]
16565    #[serde(skip)]
16566    #[cfg(feature = "extra-children")]
16567    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16568}
16569
16570#[derive(Debug, Clone, Serialize, Deserialize)]
16571pub struct FontFamily {
16572    #[serde(rename = "@val")]
16573    pub value: STFontFamily,
16574    /// Unknown attributes captured for roundtrip fidelity.
16575    #[cfg(feature = "extra-attrs")]
16576    #[serde(skip)]
16577    #[cfg(feature = "extra-attrs")]
16578    #[serde(default)]
16579    #[cfg(feature = "extra-attrs")]
16580    pub extra_attrs: std::collections::HashMap<String, String>,
16581}
16582
16583#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16584pub struct SmlAGAutoFormat {
16585    #[serde(rename = "@autoFormatId")]
16586    #[serde(default, skip_serializing_if = "Option::is_none")]
16587    pub auto_format_id: Option<u32>,
16588    #[serde(rename = "@applyNumberFormats")]
16589    #[serde(
16590        default,
16591        skip_serializing_if = "Option::is_none",
16592        with = "ooxml_xml::ooxml_bool"
16593    )]
16594    pub apply_number_formats: Option<bool>,
16595    #[serde(rename = "@applyBorderFormats")]
16596    #[serde(
16597        default,
16598        skip_serializing_if = "Option::is_none",
16599        with = "ooxml_xml::ooxml_bool"
16600    )]
16601    pub apply_border_formats: Option<bool>,
16602    #[serde(rename = "@applyFontFormats")]
16603    #[serde(
16604        default,
16605        skip_serializing_if = "Option::is_none",
16606        with = "ooxml_xml::ooxml_bool"
16607    )]
16608    pub apply_font_formats: Option<bool>,
16609    #[serde(rename = "@applyPatternFormats")]
16610    #[serde(
16611        default,
16612        skip_serializing_if = "Option::is_none",
16613        with = "ooxml_xml::ooxml_bool"
16614    )]
16615    pub apply_pattern_formats: Option<bool>,
16616    #[serde(rename = "@applyAlignmentFormats")]
16617    #[serde(
16618        default,
16619        skip_serializing_if = "Option::is_none",
16620        with = "ooxml_xml::ooxml_bool"
16621    )]
16622    pub apply_alignment_formats: Option<bool>,
16623    #[serde(rename = "@applyWidthHeightFormats")]
16624    #[serde(
16625        default,
16626        skip_serializing_if = "Option::is_none",
16627        with = "ooxml_xml::ooxml_bool"
16628    )]
16629    pub apply_width_height_formats: Option<bool>,
16630    /// Unknown attributes captured for roundtrip fidelity.
16631    #[cfg(feature = "extra-attrs")]
16632    #[serde(skip)]
16633    #[cfg(feature = "extra-attrs")]
16634    #[serde(default)]
16635    #[cfg(feature = "extra-attrs")]
16636    pub extra_attrs: std::collections::HashMap<String, String>,
16637}
16638
16639pub type SmlExternalLink = Box<ExternalLink>;
16640
16641#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16642pub struct ExternalLink {
16643    #[serde(rename = "externalBook")]
16644    #[serde(default, skip_serializing_if = "Option::is_none")]
16645    pub external_book: Option<Box<ExternalBook>>,
16646    #[serde(rename = "ddeLink")]
16647    #[serde(default, skip_serializing_if = "Option::is_none")]
16648    pub dde_link: Option<Box<DdeLink>>,
16649    #[serde(rename = "oleLink")]
16650    #[serde(default, skip_serializing_if = "Option::is_none")]
16651    pub ole_link: Option<Box<OleLink>>,
16652    #[serde(rename = "extLst")]
16653    #[serde(default, skip_serializing_if = "Option::is_none")]
16654    pub extension_list: Option<Box<ExtensionList>>,
16655    /// Unknown child elements captured for roundtrip fidelity.
16656    #[cfg(feature = "extra-children")]
16657    #[serde(skip)]
16658    #[cfg(feature = "extra-children")]
16659    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16660}
16661
16662#[derive(Debug, Clone, Serialize, Deserialize)]
16663pub struct ExternalBook {
16664    #[serde(rename = "@r:id")]
16665    pub id: STRelationshipId,
16666    #[serde(rename = "sheetNames")]
16667    #[serde(default, skip_serializing_if = "Option::is_none")]
16668    pub sheet_names: Option<Box<CTExternalSheetNames>>,
16669    #[serde(rename = "definedNames")]
16670    #[serde(default, skip_serializing_if = "Option::is_none")]
16671    pub defined_names: Option<Box<CTExternalDefinedNames>>,
16672    #[serde(rename = "sheetDataSet")]
16673    #[serde(default, skip_serializing_if = "Option::is_none")]
16674    pub sheet_data_set: Option<Box<ExternalSheetDataSet>>,
16675    /// Unknown attributes captured for roundtrip fidelity.
16676    #[cfg(feature = "extra-attrs")]
16677    #[serde(skip)]
16678    #[cfg(feature = "extra-attrs")]
16679    #[serde(default)]
16680    #[cfg(feature = "extra-attrs")]
16681    pub extra_attrs: std::collections::HashMap<String, String>,
16682    /// Unknown child elements captured for roundtrip fidelity.
16683    #[cfg(feature = "extra-children")]
16684    #[serde(skip)]
16685    #[cfg(feature = "extra-children")]
16686    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16687}
16688
16689#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16690pub struct CTExternalSheetNames {
16691    #[serde(rename = "sheetName")]
16692    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16693    pub sheet_name: Vec<CTExternalSheetName>,
16694    /// Unknown child elements captured for roundtrip fidelity.
16695    #[cfg(feature = "extra-children")]
16696    #[serde(skip)]
16697    #[cfg(feature = "extra-children")]
16698    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16699}
16700
16701#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16702pub struct CTExternalSheetName {
16703    #[serde(rename = "@val")]
16704    #[serde(default, skip_serializing_if = "Option::is_none")]
16705    pub value: Option<XmlString>,
16706    /// Unknown attributes captured for roundtrip fidelity.
16707    #[cfg(feature = "extra-attrs")]
16708    #[serde(skip)]
16709    #[cfg(feature = "extra-attrs")]
16710    #[serde(default)]
16711    #[cfg(feature = "extra-attrs")]
16712    pub extra_attrs: std::collections::HashMap<String, String>,
16713}
16714
16715#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16716pub struct CTExternalDefinedNames {
16717    #[serde(rename = "definedName")]
16718    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16719    pub defined_name: Vec<CTExternalDefinedName>,
16720    /// Unknown child elements captured for roundtrip fidelity.
16721    #[cfg(feature = "extra-children")]
16722    #[serde(skip)]
16723    #[cfg(feature = "extra-children")]
16724    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16725}
16726
16727#[derive(Debug, Clone, Serialize, Deserialize)]
16728pub struct CTExternalDefinedName {
16729    #[serde(rename = "@name")]
16730    pub name: XmlString,
16731    #[serde(rename = "@refersTo")]
16732    #[serde(default, skip_serializing_if = "Option::is_none")]
16733    pub refers_to: Option<XmlString>,
16734    #[serde(rename = "@sheetId")]
16735    #[serde(default, skip_serializing_if = "Option::is_none")]
16736    pub sheet_id: Option<u32>,
16737    /// Unknown attributes captured for roundtrip fidelity.
16738    #[cfg(feature = "extra-attrs")]
16739    #[serde(skip)]
16740    #[cfg(feature = "extra-attrs")]
16741    #[serde(default)]
16742    #[cfg(feature = "extra-attrs")]
16743    pub extra_attrs: std::collections::HashMap<String, String>,
16744}
16745
16746#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16747pub struct ExternalSheetDataSet {
16748    #[serde(rename = "sheetData")]
16749    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16750    pub sheet_data: Vec<ExternalSheetData>,
16751    /// Unknown child elements captured for roundtrip fidelity.
16752    #[cfg(feature = "extra-children")]
16753    #[serde(skip)]
16754    #[cfg(feature = "extra-children")]
16755    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16756}
16757
16758#[derive(Debug, Clone, Serialize, Deserialize)]
16759pub struct ExternalSheetData {
16760    #[serde(rename = "@sheetId")]
16761    pub sheet_id: u32,
16762    #[serde(rename = "@refreshError")]
16763    #[serde(
16764        default,
16765        skip_serializing_if = "Option::is_none",
16766        with = "ooxml_xml::ooxml_bool"
16767    )]
16768    pub refresh_error: Option<bool>,
16769    #[serde(rename = "row")]
16770    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16771    pub row: Vec<ExternalRow>,
16772    /// Unknown attributes captured for roundtrip fidelity.
16773    #[cfg(feature = "extra-attrs")]
16774    #[serde(skip)]
16775    #[cfg(feature = "extra-attrs")]
16776    #[serde(default)]
16777    #[cfg(feature = "extra-attrs")]
16778    pub extra_attrs: std::collections::HashMap<String, String>,
16779    /// Unknown child elements captured for roundtrip fidelity.
16780    #[cfg(feature = "extra-children")]
16781    #[serde(skip)]
16782    #[cfg(feature = "extra-children")]
16783    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16784}
16785
16786#[derive(Debug, Clone, Serialize, Deserialize)]
16787pub struct ExternalRow {
16788    #[serde(rename = "@r")]
16789    pub reference: u32,
16790    #[serde(rename = "cell")]
16791    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16792    pub cell: Vec<ExternalCell>,
16793    /// Unknown attributes captured for roundtrip fidelity.
16794    #[cfg(feature = "extra-attrs")]
16795    #[serde(skip)]
16796    #[cfg(feature = "extra-attrs")]
16797    #[serde(default)]
16798    #[cfg(feature = "extra-attrs")]
16799    pub extra_attrs: std::collections::HashMap<String, String>,
16800    /// Unknown child elements captured for roundtrip fidelity.
16801    #[cfg(feature = "extra-children")]
16802    #[serde(skip)]
16803    #[cfg(feature = "extra-children")]
16804    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16805}
16806
16807#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16808pub struct ExternalCell {
16809    #[serde(rename = "@r")]
16810    #[serde(default, skip_serializing_if = "Option::is_none")]
16811    pub reference: Option<CellRef>,
16812    #[serde(rename = "@t")]
16813    #[serde(default, skip_serializing_if = "Option::is_none")]
16814    pub cell_type: Option<CellType>,
16815    #[serde(rename = "@vm")]
16816    #[serde(default, skip_serializing_if = "Option::is_none")]
16817    pub vm: Option<u32>,
16818    #[serde(rename = "v")]
16819    #[serde(default, skip_serializing_if = "Option::is_none")]
16820    pub value: Option<XmlString>,
16821    /// Unknown attributes captured for roundtrip fidelity.
16822    #[cfg(feature = "extra-attrs")]
16823    #[serde(skip)]
16824    #[cfg(feature = "extra-attrs")]
16825    #[serde(default)]
16826    #[cfg(feature = "extra-attrs")]
16827    pub extra_attrs: std::collections::HashMap<String, String>,
16828    /// Unknown child elements captured for roundtrip fidelity.
16829    #[cfg(feature = "extra-children")]
16830    #[serde(skip)]
16831    #[cfg(feature = "extra-children")]
16832    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16833}
16834
16835#[derive(Debug, Clone, Serialize, Deserialize)]
16836pub struct DdeLink {
16837    #[serde(rename = "@ddeService")]
16838    pub dde_service: XmlString,
16839    #[serde(rename = "@ddeTopic")]
16840    pub dde_topic: XmlString,
16841    #[serde(rename = "ddeItems")]
16842    #[serde(default, skip_serializing_if = "Option::is_none")]
16843    pub dde_items: Option<Box<DdeItems>>,
16844    /// Unknown attributes captured for roundtrip fidelity.
16845    #[cfg(feature = "extra-attrs")]
16846    #[serde(skip)]
16847    #[cfg(feature = "extra-attrs")]
16848    #[serde(default)]
16849    #[cfg(feature = "extra-attrs")]
16850    pub extra_attrs: std::collections::HashMap<String, String>,
16851    /// Unknown child elements captured for roundtrip fidelity.
16852    #[cfg(feature = "extra-children")]
16853    #[serde(skip)]
16854    #[cfg(feature = "extra-children")]
16855    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16856}
16857
16858#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16859pub struct DdeItems {
16860    #[serde(rename = "ddeItem")]
16861    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16862    pub dde_item: Vec<DdeItem>,
16863    /// Unknown child elements captured for roundtrip fidelity.
16864    #[cfg(feature = "extra-children")]
16865    #[serde(skip)]
16866    #[cfg(feature = "extra-children")]
16867    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16868}
16869
16870#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16871pub struct DdeItem {
16872    #[serde(rename = "@name")]
16873    #[serde(default, skip_serializing_if = "Option::is_none")]
16874    pub name: Option<XmlString>,
16875    #[serde(rename = "@ole")]
16876    #[serde(
16877        default,
16878        skip_serializing_if = "Option::is_none",
16879        with = "ooxml_xml::ooxml_bool"
16880    )]
16881    pub ole: Option<bool>,
16882    #[serde(rename = "@advise")]
16883    #[serde(
16884        default,
16885        skip_serializing_if = "Option::is_none",
16886        with = "ooxml_xml::ooxml_bool"
16887    )]
16888    pub advise: Option<bool>,
16889    #[serde(rename = "@preferPic")]
16890    #[serde(
16891        default,
16892        skip_serializing_if = "Option::is_none",
16893        with = "ooxml_xml::ooxml_bool"
16894    )]
16895    pub prefer_pic: Option<bool>,
16896    #[serde(rename = "values")]
16897    #[serde(default, skip_serializing_if = "Option::is_none")]
16898    pub values: Option<Box<CTDdeValues>>,
16899    /// Unknown attributes captured for roundtrip fidelity.
16900    #[cfg(feature = "extra-attrs")]
16901    #[serde(skip)]
16902    #[cfg(feature = "extra-attrs")]
16903    #[serde(default)]
16904    #[cfg(feature = "extra-attrs")]
16905    pub extra_attrs: std::collections::HashMap<String, String>,
16906    /// Unknown child elements captured for roundtrip fidelity.
16907    #[cfg(feature = "extra-children")]
16908    #[serde(skip)]
16909    #[cfg(feature = "extra-children")]
16910    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16911}
16912
16913#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16914pub struct CTDdeValues {
16915    #[serde(rename = "@rows")]
16916    #[serde(default, skip_serializing_if = "Option::is_none")]
16917    pub rows: Option<u32>,
16918    #[serde(rename = "@cols")]
16919    #[serde(default, skip_serializing_if = "Option::is_none")]
16920    pub cols: Option<u32>,
16921    #[serde(rename = "value")]
16922    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16923    pub value: Vec<CTDdeValue>,
16924    /// Unknown attributes captured for roundtrip fidelity.
16925    #[cfg(feature = "extra-attrs")]
16926    #[serde(skip)]
16927    #[cfg(feature = "extra-attrs")]
16928    #[serde(default)]
16929    #[cfg(feature = "extra-attrs")]
16930    pub extra_attrs: std::collections::HashMap<String, String>,
16931    /// Unknown child elements captured for roundtrip fidelity.
16932    #[cfg(feature = "extra-children")]
16933    #[serde(skip)]
16934    #[cfg(feature = "extra-children")]
16935    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16936}
16937
16938#[derive(Debug, Clone, Serialize, Deserialize)]
16939pub struct CTDdeValue {
16940    #[serde(rename = "@t")]
16941    #[serde(default, skip_serializing_if = "Option::is_none")]
16942    pub cell_type: Option<STDdeValueType>,
16943    #[serde(rename = "val")]
16944    pub value: XmlString,
16945    /// Unknown attributes captured for roundtrip fidelity.
16946    #[cfg(feature = "extra-attrs")]
16947    #[serde(skip)]
16948    #[cfg(feature = "extra-attrs")]
16949    #[serde(default)]
16950    #[cfg(feature = "extra-attrs")]
16951    pub extra_attrs: std::collections::HashMap<String, String>,
16952    /// Unknown child elements captured for roundtrip fidelity.
16953    #[cfg(feature = "extra-children")]
16954    #[serde(skip)]
16955    #[cfg(feature = "extra-children")]
16956    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16957}
16958
16959#[derive(Debug, Clone, Serialize, Deserialize)]
16960pub struct OleLink {
16961    #[serde(rename = "@r:id")]
16962    pub id: STRelationshipId,
16963    #[serde(rename = "@progId")]
16964    pub prog_id: XmlString,
16965    #[serde(rename = "oleItems")]
16966    #[serde(default, skip_serializing_if = "Option::is_none")]
16967    pub ole_items: Option<Box<OleItems>>,
16968    /// Unknown attributes captured for roundtrip fidelity.
16969    #[cfg(feature = "extra-attrs")]
16970    #[serde(skip)]
16971    #[cfg(feature = "extra-attrs")]
16972    #[serde(default)]
16973    #[cfg(feature = "extra-attrs")]
16974    pub extra_attrs: std::collections::HashMap<String, String>,
16975    /// Unknown child elements captured for roundtrip fidelity.
16976    #[cfg(feature = "extra-children")]
16977    #[serde(skip)]
16978    #[cfg(feature = "extra-children")]
16979    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16980}
16981
16982#[derive(Debug, Clone, Default, Serialize, Deserialize)]
16983pub struct OleItems {
16984    #[serde(rename = "oleItem")]
16985    #[serde(default, skip_serializing_if = "Vec::is_empty")]
16986    pub ole_item: Vec<OleItem>,
16987    /// Unknown child elements captured for roundtrip fidelity.
16988    #[cfg(feature = "extra-children")]
16989    #[serde(skip)]
16990    #[cfg(feature = "extra-children")]
16991    pub extra_children: Vec<ooxml_xml::PositionedNode>,
16992}
16993
16994#[derive(Debug, Clone, Serialize, Deserialize)]
16995pub struct OleItem {
16996    #[serde(rename = "@name")]
16997    pub name: XmlString,
16998    #[serde(rename = "@icon")]
16999    #[serde(
17000        default,
17001        skip_serializing_if = "Option::is_none",
17002        with = "ooxml_xml::ooxml_bool"
17003    )]
17004    pub icon: Option<bool>,
17005    #[serde(rename = "@advise")]
17006    #[serde(
17007        default,
17008        skip_serializing_if = "Option::is_none",
17009        with = "ooxml_xml::ooxml_bool"
17010    )]
17011    pub advise: Option<bool>,
17012    #[serde(rename = "@preferPic")]
17013    #[serde(
17014        default,
17015        skip_serializing_if = "Option::is_none",
17016        with = "ooxml_xml::ooxml_bool"
17017    )]
17018    pub prefer_pic: Option<bool>,
17019    /// Unknown attributes captured for roundtrip fidelity.
17020    #[cfg(feature = "extra-attrs")]
17021    #[serde(skip)]
17022    #[cfg(feature = "extra-attrs")]
17023    #[serde(default)]
17024    #[cfg(feature = "extra-attrs")]
17025    pub extra_attrs: std::collections::HashMap<String, String>,
17026}
17027
17028pub type SmlTable = Box<Table>;
17029
17030#[derive(Debug, Clone, Serialize, Deserialize)]
17031#[serde(rename = "table")]
17032pub struct Table {
17033    #[cfg(feature = "sml-tables")]
17034    #[serde(rename = "@id")]
17035    pub id: u32,
17036    #[cfg(feature = "sml-tables")]
17037    #[serde(rename = "@name")]
17038    #[serde(default, skip_serializing_if = "Option::is_none")]
17039    pub name: Option<XmlString>,
17040    #[cfg(feature = "sml-tables")]
17041    #[serde(rename = "@displayName")]
17042    pub display_name: XmlString,
17043    #[cfg(feature = "sml-tables")]
17044    #[serde(rename = "@comment")]
17045    #[serde(default, skip_serializing_if = "Option::is_none")]
17046    pub comment: Option<XmlString>,
17047    #[cfg(feature = "sml-tables")]
17048    #[serde(rename = "@ref")]
17049    pub reference: Reference,
17050    #[cfg(feature = "sml-tables")]
17051    #[serde(rename = "@tableType")]
17052    #[serde(default, skip_serializing_if = "Option::is_none")]
17053    pub table_type: Option<STTableType>,
17054    #[cfg(feature = "sml-tables")]
17055    #[serde(rename = "@headerRowCount")]
17056    #[serde(default, skip_serializing_if = "Option::is_none")]
17057    pub header_row_count: Option<u32>,
17058    #[cfg(feature = "sml-tables")]
17059    #[serde(rename = "@insertRow")]
17060    #[serde(
17061        default,
17062        skip_serializing_if = "Option::is_none",
17063        with = "ooxml_xml::ooxml_bool"
17064    )]
17065    pub insert_row: Option<bool>,
17066    #[cfg(feature = "sml-tables")]
17067    #[serde(rename = "@insertRowShift")]
17068    #[serde(
17069        default,
17070        skip_serializing_if = "Option::is_none",
17071        with = "ooxml_xml::ooxml_bool"
17072    )]
17073    pub insert_row_shift: Option<bool>,
17074    #[cfg(feature = "sml-tables")]
17075    #[serde(rename = "@totalsRowCount")]
17076    #[serde(default, skip_serializing_if = "Option::is_none")]
17077    pub totals_row_count: Option<u32>,
17078    #[cfg(feature = "sml-tables")]
17079    #[serde(rename = "@totalsRowShown")]
17080    #[serde(
17081        default,
17082        skip_serializing_if = "Option::is_none",
17083        with = "ooxml_xml::ooxml_bool"
17084    )]
17085    pub totals_row_shown: Option<bool>,
17086    #[cfg(feature = "sml-tables")]
17087    #[serde(rename = "@published")]
17088    #[serde(
17089        default,
17090        skip_serializing_if = "Option::is_none",
17091        with = "ooxml_xml::ooxml_bool"
17092    )]
17093    pub published: Option<bool>,
17094    #[cfg(feature = "sml-tables")]
17095    #[serde(rename = "@headerRowDxfId")]
17096    #[serde(default, skip_serializing_if = "Option::is_none")]
17097    pub header_row_dxf_id: Option<STDxfId>,
17098    #[cfg(feature = "sml-tables")]
17099    #[serde(rename = "@dataDxfId")]
17100    #[serde(default, skip_serializing_if = "Option::is_none")]
17101    pub data_dxf_id: Option<STDxfId>,
17102    #[cfg(feature = "sml-tables")]
17103    #[serde(rename = "@totalsRowDxfId")]
17104    #[serde(default, skip_serializing_if = "Option::is_none")]
17105    pub totals_row_dxf_id: Option<STDxfId>,
17106    #[cfg(feature = "sml-tables")]
17107    #[serde(rename = "@headerRowBorderDxfId")]
17108    #[serde(default, skip_serializing_if = "Option::is_none")]
17109    pub header_row_border_dxf_id: Option<STDxfId>,
17110    #[cfg(feature = "sml-tables")]
17111    #[serde(rename = "@tableBorderDxfId")]
17112    #[serde(default, skip_serializing_if = "Option::is_none")]
17113    pub table_border_dxf_id: Option<STDxfId>,
17114    #[cfg(feature = "sml-tables")]
17115    #[serde(rename = "@totalsRowBorderDxfId")]
17116    #[serde(default, skip_serializing_if = "Option::is_none")]
17117    pub totals_row_border_dxf_id: Option<STDxfId>,
17118    #[cfg(feature = "sml-tables")]
17119    #[serde(rename = "@headerRowCellStyle")]
17120    #[serde(default, skip_serializing_if = "Option::is_none")]
17121    pub header_row_cell_style: Option<XmlString>,
17122    #[cfg(feature = "sml-tables")]
17123    #[serde(rename = "@dataCellStyle")]
17124    #[serde(default, skip_serializing_if = "Option::is_none")]
17125    pub data_cell_style: Option<XmlString>,
17126    #[cfg(feature = "sml-tables")]
17127    #[serde(rename = "@totalsRowCellStyle")]
17128    #[serde(default, skip_serializing_if = "Option::is_none")]
17129    pub totals_row_cell_style: Option<XmlString>,
17130    #[cfg(feature = "sml-tables")]
17131    #[serde(rename = "@connectionId")]
17132    #[serde(default, skip_serializing_if = "Option::is_none")]
17133    pub connection_id: Option<u32>,
17134    #[cfg(feature = "sml-tables")]
17135    #[serde(rename = "autoFilter")]
17136    #[serde(default, skip_serializing_if = "Option::is_none")]
17137    pub auto_filter: Option<Box<AutoFilter>>,
17138    #[cfg(feature = "sml-tables")]
17139    #[serde(rename = "sortState")]
17140    #[serde(default, skip_serializing_if = "Option::is_none")]
17141    pub sort_state: Option<Box<SortState>>,
17142    #[cfg(feature = "sml-tables")]
17143    #[serde(rename = "tableColumns")]
17144    pub table_columns: Box<TableColumns>,
17145    #[cfg(feature = "sml-tables")]
17146    #[serde(rename = "tableStyleInfo")]
17147    #[serde(default, skip_serializing_if = "Option::is_none")]
17148    pub table_style_info: Option<Box<TableStyleInfo>>,
17149    #[cfg(feature = "sml-extensions")]
17150    #[serde(rename = "extLst")]
17151    #[serde(default, skip_serializing_if = "Option::is_none")]
17152    pub extension_list: Option<Box<ExtensionList>>,
17153    /// Unknown attributes captured for roundtrip fidelity.
17154    #[cfg(feature = "extra-attrs")]
17155    #[serde(skip)]
17156    #[cfg(feature = "extra-attrs")]
17157    #[serde(default)]
17158    #[cfg(feature = "extra-attrs")]
17159    pub extra_attrs: std::collections::HashMap<String, String>,
17160    /// Unknown child elements captured for roundtrip fidelity.
17161    #[cfg(feature = "extra-children")]
17162    #[serde(skip)]
17163    #[cfg(feature = "extra-children")]
17164    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17165}
17166
17167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17168pub struct TableStyleInfo {
17169    #[serde(rename = "@name")]
17170    #[serde(default, skip_serializing_if = "Option::is_none")]
17171    pub name: Option<XmlString>,
17172    #[serde(rename = "@showFirstColumn")]
17173    #[serde(
17174        default,
17175        skip_serializing_if = "Option::is_none",
17176        with = "ooxml_xml::ooxml_bool"
17177    )]
17178    pub show_first_column: Option<bool>,
17179    #[serde(rename = "@showLastColumn")]
17180    #[serde(
17181        default,
17182        skip_serializing_if = "Option::is_none",
17183        with = "ooxml_xml::ooxml_bool"
17184    )]
17185    pub show_last_column: Option<bool>,
17186    #[serde(rename = "@showRowStripes")]
17187    #[serde(
17188        default,
17189        skip_serializing_if = "Option::is_none",
17190        with = "ooxml_xml::ooxml_bool"
17191    )]
17192    pub show_row_stripes: Option<bool>,
17193    #[serde(rename = "@showColumnStripes")]
17194    #[serde(
17195        default,
17196        skip_serializing_if = "Option::is_none",
17197        with = "ooxml_xml::ooxml_bool"
17198    )]
17199    pub show_column_stripes: Option<bool>,
17200    /// Unknown attributes captured for roundtrip fidelity.
17201    #[cfg(feature = "extra-attrs")]
17202    #[serde(skip)]
17203    #[cfg(feature = "extra-attrs")]
17204    #[serde(default)]
17205    #[cfg(feature = "extra-attrs")]
17206    pub extra_attrs: std::collections::HashMap<String, String>,
17207}
17208
17209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17210#[serde(rename = "tableColumns")]
17211pub struct TableColumns {
17212    #[serde(rename = "@count")]
17213    #[serde(default, skip_serializing_if = "Option::is_none")]
17214    pub count: Option<u32>,
17215    #[serde(rename = "tableColumn")]
17216    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17217    pub table_column: Vec<TableColumn>,
17218    /// Unknown attributes captured for roundtrip fidelity.
17219    #[cfg(feature = "extra-attrs")]
17220    #[serde(skip)]
17221    #[cfg(feature = "extra-attrs")]
17222    #[serde(default)]
17223    #[cfg(feature = "extra-attrs")]
17224    pub extra_attrs: std::collections::HashMap<String, String>,
17225    /// Unknown child elements captured for roundtrip fidelity.
17226    #[cfg(feature = "extra-children")]
17227    #[serde(skip)]
17228    #[cfg(feature = "extra-children")]
17229    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17230}
17231
17232#[derive(Debug, Clone, Serialize, Deserialize)]
17233#[serde(rename = "tableColumn")]
17234pub struct TableColumn {
17235    #[serde(rename = "@id")]
17236    pub id: u32,
17237    #[serde(rename = "@uniqueName")]
17238    #[serde(default, skip_serializing_if = "Option::is_none")]
17239    pub unique_name: Option<XmlString>,
17240    #[serde(rename = "@name")]
17241    pub name: XmlString,
17242    #[serde(rename = "@totalsRowFunction")]
17243    #[serde(default, skip_serializing_if = "Option::is_none")]
17244    pub totals_row_function: Option<STTotalsRowFunction>,
17245    #[serde(rename = "@totalsRowLabel")]
17246    #[serde(default, skip_serializing_if = "Option::is_none")]
17247    pub totals_row_label: Option<XmlString>,
17248    #[serde(rename = "@queryTableFieldId")]
17249    #[serde(default, skip_serializing_if = "Option::is_none")]
17250    pub query_table_field_id: Option<u32>,
17251    #[serde(rename = "@headerRowDxfId")]
17252    #[serde(default, skip_serializing_if = "Option::is_none")]
17253    pub header_row_dxf_id: Option<STDxfId>,
17254    #[serde(rename = "@dataDxfId")]
17255    #[serde(default, skip_serializing_if = "Option::is_none")]
17256    pub data_dxf_id: Option<STDxfId>,
17257    #[serde(rename = "@totalsRowDxfId")]
17258    #[serde(default, skip_serializing_if = "Option::is_none")]
17259    pub totals_row_dxf_id: Option<STDxfId>,
17260    #[serde(rename = "@headerRowCellStyle")]
17261    #[serde(default, skip_serializing_if = "Option::is_none")]
17262    pub header_row_cell_style: Option<XmlString>,
17263    #[serde(rename = "@dataCellStyle")]
17264    #[serde(default, skip_serializing_if = "Option::is_none")]
17265    pub data_cell_style: Option<XmlString>,
17266    #[serde(rename = "@totalsRowCellStyle")]
17267    #[serde(default, skip_serializing_if = "Option::is_none")]
17268    pub totals_row_cell_style: Option<XmlString>,
17269    #[serde(rename = "calculatedColumnFormula")]
17270    #[serde(default, skip_serializing_if = "Option::is_none")]
17271    pub calculated_column_formula: Option<Box<TableFormula>>,
17272    #[serde(rename = "totalsRowFormula")]
17273    #[serde(default, skip_serializing_if = "Option::is_none")]
17274    pub totals_row_formula: Option<Box<TableFormula>>,
17275    #[serde(rename = "xmlColumnPr")]
17276    #[serde(default, skip_serializing_if = "Option::is_none")]
17277    pub xml_column_pr: Option<Box<XmlColumnProperties>>,
17278    #[serde(rename = "extLst")]
17279    #[serde(default, skip_serializing_if = "Option::is_none")]
17280    pub extension_list: Option<Box<ExtensionList>>,
17281    /// Unknown attributes captured for roundtrip fidelity.
17282    #[cfg(feature = "extra-attrs")]
17283    #[serde(skip)]
17284    #[cfg(feature = "extra-attrs")]
17285    #[serde(default)]
17286    #[cfg(feature = "extra-attrs")]
17287    pub extra_attrs: std::collections::HashMap<String, String>,
17288    /// Unknown child elements captured for roundtrip fidelity.
17289    #[cfg(feature = "extra-children")]
17290    #[serde(skip)]
17291    #[cfg(feature = "extra-children")]
17292    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17293}
17294
17295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17296pub struct TableFormula {
17297    #[serde(rename = "$text")]
17298    #[serde(default, skip_serializing_if = "Option::is_none")]
17299    pub text: Option<String>,
17300    #[serde(rename = "@array")]
17301    #[serde(
17302        default,
17303        skip_serializing_if = "Option::is_none",
17304        with = "ooxml_xml::ooxml_bool"
17305    )]
17306    pub array: Option<bool>,
17307    /// Unknown attributes captured for roundtrip fidelity.
17308    #[cfg(feature = "extra-attrs")]
17309    #[serde(skip)]
17310    #[cfg(feature = "extra-attrs")]
17311    #[serde(default)]
17312    #[cfg(feature = "extra-attrs")]
17313    pub extra_attrs: std::collections::HashMap<String, String>,
17314    /// Unknown child elements captured for roundtrip fidelity.
17315    #[cfg(feature = "extra-children")]
17316    #[serde(skip)]
17317    #[cfg(feature = "extra-children")]
17318    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17319}
17320
17321#[derive(Debug, Clone, Serialize, Deserialize)]
17322pub struct XmlColumnProperties {
17323    #[serde(rename = "@mapId")]
17324    pub map_id: u32,
17325    #[serde(rename = "@xpath")]
17326    pub xpath: XmlString,
17327    #[serde(rename = "@denormalized")]
17328    #[serde(
17329        default,
17330        skip_serializing_if = "Option::is_none",
17331        with = "ooxml_xml::ooxml_bool"
17332    )]
17333    pub denormalized: Option<bool>,
17334    #[serde(rename = "@xmlDataType")]
17335    pub xml_data_type: STXmlDataType,
17336    #[serde(rename = "extLst")]
17337    #[serde(default, skip_serializing_if = "Option::is_none")]
17338    pub extension_list: Option<Box<ExtensionList>>,
17339    /// Unknown attributes captured for roundtrip fidelity.
17340    #[cfg(feature = "extra-attrs")]
17341    #[serde(skip)]
17342    #[cfg(feature = "extra-attrs")]
17343    #[serde(default)]
17344    #[cfg(feature = "extra-attrs")]
17345    pub extra_attrs: std::collections::HashMap<String, String>,
17346    /// Unknown child elements captured for roundtrip fidelity.
17347    #[cfg(feature = "extra-children")]
17348    #[serde(skip)]
17349    #[cfg(feature = "extra-children")]
17350    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17351}
17352
17353pub type SmlVolTypes = Box<CTVolTypes>;
17354
17355#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17356pub struct CTVolTypes {
17357    #[serde(rename = "volType")]
17358    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17359    pub vol_type: Vec<CTVolType>,
17360    #[serde(rename = "extLst")]
17361    #[serde(default, skip_serializing_if = "Option::is_none")]
17362    pub extension_list: Option<Box<ExtensionList>>,
17363    /// Unknown child elements captured for roundtrip fidelity.
17364    #[cfg(feature = "extra-children")]
17365    #[serde(skip)]
17366    #[cfg(feature = "extra-children")]
17367    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17368}
17369
17370#[derive(Debug, Clone, Serialize, Deserialize)]
17371pub struct CTVolType {
17372    #[serde(rename = "@type")]
17373    pub r#type: STVolDepType,
17374    #[serde(rename = "main")]
17375    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17376    pub main: Vec<CTVolMain>,
17377    /// Unknown attributes captured for roundtrip fidelity.
17378    #[cfg(feature = "extra-attrs")]
17379    #[serde(skip)]
17380    #[cfg(feature = "extra-attrs")]
17381    #[serde(default)]
17382    #[cfg(feature = "extra-attrs")]
17383    pub extra_attrs: std::collections::HashMap<String, String>,
17384    /// Unknown child elements captured for roundtrip fidelity.
17385    #[cfg(feature = "extra-children")]
17386    #[serde(skip)]
17387    #[cfg(feature = "extra-children")]
17388    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17389}
17390
17391#[derive(Debug, Clone, Serialize, Deserialize)]
17392pub struct CTVolMain {
17393    #[serde(rename = "@first")]
17394    pub first: XmlString,
17395    #[serde(rename = "tp")]
17396    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17397    pub tp: Vec<CTVolTopic>,
17398    /// Unknown attributes captured for roundtrip fidelity.
17399    #[cfg(feature = "extra-attrs")]
17400    #[serde(skip)]
17401    #[cfg(feature = "extra-attrs")]
17402    #[serde(default)]
17403    #[cfg(feature = "extra-attrs")]
17404    pub extra_attrs: std::collections::HashMap<String, String>,
17405    /// Unknown child elements captured for roundtrip fidelity.
17406    #[cfg(feature = "extra-children")]
17407    #[serde(skip)]
17408    #[cfg(feature = "extra-children")]
17409    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17410}
17411
17412#[derive(Debug, Clone, Serialize, Deserialize)]
17413pub struct CTVolTopic {
17414    #[serde(rename = "@t")]
17415    #[serde(default, skip_serializing_if = "Option::is_none")]
17416    pub cell_type: Option<STVolValueType>,
17417    #[serde(rename = "v")]
17418    pub value: XmlString,
17419    #[serde(rename = "stp")]
17420    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17421    pub stp: Vec<XmlString>,
17422    #[serde(rename = "tr")]
17423    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17424    pub tr: Vec<CTVolTopicRef>,
17425    /// Unknown attributes captured for roundtrip fidelity.
17426    #[cfg(feature = "extra-attrs")]
17427    #[serde(skip)]
17428    #[cfg(feature = "extra-attrs")]
17429    #[serde(default)]
17430    #[cfg(feature = "extra-attrs")]
17431    pub extra_attrs: std::collections::HashMap<String, String>,
17432    /// Unknown child elements captured for roundtrip fidelity.
17433    #[cfg(feature = "extra-children")]
17434    #[serde(skip)]
17435    #[cfg(feature = "extra-children")]
17436    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17437}
17438
17439#[derive(Debug, Clone, Serialize, Deserialize)]
17440pub struct CTVolTopicRef {
17441    #[serde(rename = "@r")]
17442    pub reference: CellRef,
17443    #[serde(rename = "@s")]
17444    pub style_index: u32,
17445    /// Unknown attributes captured for roundtrip fidelity.
17446    #[cfg(feature = "extra-attrs")]
17447    #[serde(skip)]
17448    #[cfg(feature = "extra-attrs")]
17449    #[serde(default)]
17450    #[cfg(feature = "extra-attrs")]
17451    pub extra_attrs: std::collections::HashMap<String, String>,
17452}
17453
17454pub type SmlWorkbook = Box<Workbook>;
17455
17456#[derive(Debug, Clone, Serialize, Deserialize)]
17457#[serde(rename = "workbook")]
17458pub struct Workbook {
17459    #[serde(rename = "@conformance")]
17460    #[serde(default, skip_serializing_if = "Option::is_none")]
17461    pub conformance: Option<STConformanceClass>,
17462    #[serde(rename = "fileVersion")]
17463    #[serde(default, skip_serializing_if = "Option::is_none")]
17464    pub file_version: Option<Box<FileVersion>>,
17465    #[cfg(feature = "sml-protection")]
17466    #[serde(rename = "fileSharing")]
17467    #[serde(default, skip_serializing_if = "Option::is_none")]
17468    pub file_sharing: Option<Box<FileSharing>>,
17469    #[serde(rename = "workbookPr")]
17470    #[serde(default, skip_serializing_if = "Option::is_none")]
17471    pub workbook_pr: Option<Box<WorkbookProperties>>,
17472    #[cfg(feature = "sml-protection")]
17473    #[serde(rename = "workbookProtection")]
17474    #[serde(default, skip_serializing_if = "Option::is_none")]
17475    pub workbook_protection: Option<Box<WorkbookProtection>>,
17476    #[serde(rename = "bookViews")]
17477    #[serde(default, skip_serializing_if = "Option::is_none")]
17478    pub book_views: Option<Box<BookViews>>,
17479    #[serde(rename = "sheets")]
17480    pub sheets: Box<Sheets>,
17481    #[cfg(feature = "sml-formulas-advanced")]
17482    #[serde(rename = "functionGroups")]
17483    #[serde(default, skip_serializing_if = "Option::is_none")]
17484    pub function_groups: Option<Box<CTFunctionGroups>>,
17485    #[cfg(feature = "sml-external")]
17486    #[serde(rename = "externalReferences")]
17487    #[serde(default, skip_serializing_if = "Option::is_none")]
17488    pub external_references: Option<Box<ExternalReferences>>,
17489    #[serde(rename = "definedNames")]
17490    #[serde(default, skip_serializing_if = "Option::is_none")]
17491    pub defined_names: Option<Box<DefinedNames>>,
17492    #[cfg(feature = "sml-formulas")]
17493    #[serde(rename = "calcPr")]
17494    #[serde(default, skip_serializing_if = "Option::is_none")]
17495    pub calc_pr: Option<Box<CalculationProperties>>,
17496    #[cfg(feature = "sml-external")]
17497    #[serde(rename = "oleSize")]
17498    #[serde(default, skip_serializing_if = "Option::is_none")]
17499    pub ole_size: Option<Box<CTOleSize>>,
17500    #[cfg(feature = "sml-structure")]
17501    #[serde(rename = "customWorkbookViews")]
17502    #[serde(default, skip_serializing_if = "Option::is_none")]
17503    pub custom_workbook_views: Option<Box<CustomWorkbookViews>>,
17504    #[cfg(feature = "sml-pivot")]
17505    #[serde(rename = "pivotCaches")]
17506    #[serde(default, skip_serializing_if = "Option::is_none")]
17507    pub pivot_caches: Option<Box<PivotCaches>>,
17508    #[cfg(feature = "sml-metadata")]
17509    #[serde(rename = "smartTagPr")]
17510    #[serde(default, skip_serializing_if = "Option::is_none")]
17511    pub smart_tag_pr: Option<Box<CTSmartTagPr>>,
17512    #[cfg(feature = "sml-metadata")]
17513    #[serde(rename = "smartTagTypes")]
17514    #[serde(default, skip_serializing_if = "Option::is_none")]
17515    pub smart_tag_types: Option<Box<CTSmartTagTypes>>,
17516    #[cfg(feature = "sml-external")]
17517    #[serde(rename = "webPublishing")]
17518    #[serde(default, skip_serializing_if = "Option::is_none")]
17519    pub web_publishing: Option<Box<WebPublishing>>,
17520    #[serde(rename = "fileRecoveryPr")]
17521    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17522    pub file_recovery_pr: Vec<FileRecoveryProperties>,
17523    #[cfg(feature = "sml-external")]
17524    #[serde(rename = "webPublishObjects")]
17525    #[serde(default, skip_serializing_if = "Option::is_none")]
17526    pub web_publish_objects: Option<Box<CTWebPublishObjects>>,
17527    #[cfg(feature = "sml-extensions")]
17528    #[serde(rename = "extLst")]
17529    #[serde(default, skip_serializing_if = "Option::is_none")]
17530    pub extension_list: Option<Box<ExtensionList>>,
17531    /// Unknown attributes captured for roundtrip fidelity.
17532    #[cfg(feature = "extra-attrs")]
17533    #[serde(skip)]
17534    #[cfg(feature = "extra-attrs")]
17535    #[serde(default)]
17536    #[cfg(feature = "extra-attrs")]
17537    pub extra_attrs: std::collections::HashMap<String, String>,
17538    /// Unknown child elements captured for roundtrip fidelity.
17539    #[cfg(feature = "extra-children")]
17540    #[serde(skip)]
17541    #[cfg(feature = "extra-children")]
17542    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17543}
17544
17545#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17546pub struct FileVersion {
17547    #[serde(rename = "@appName")]
17548    #[serde(default, skip_serializing_if = "Option::is_none")]
17549    pub app_name: Option<String>,
17550    #[serde(rename = "@lastEdited")]
17551    #[serde(default, skip_serializing_if = "Option::is_none")]
17552    pub last_edited: Option<String>,
17553    #[serde(rename = "@lowestEdited")]
17554    #[serde(default, skip_serializing_if = "Option::is_none")]
17555    pub lowest_edited: Option<String>,
17556    #[serde(rename = "@rupBuild")]
17557    #[serde(default, skip_serializing_if = "Option::is_none")]
17558    pub rup_build: Option<String>,
17559    #[serde(rename = "@codeName")]
17560    #[serde(default, skip_serializing_if = "Option::is_none")]
17561    pub code_name: Option<Guid>,
17562    /// Unknown attributes captured for roundtrip fidelity.
17563    #[cfg(feature = "extra-attrs")]
17564    #[serde(skip)]
17565    #[cfg(feature = "extra-attrs")]
17566    #[serde(default)]
17567    #[cfg(feature = "extra-attrs")]
17568    pub extra_attrs: std::collections::HashMap<String, String>,
17569}
17570
17571#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17572#[serde(rename = "bookViews")]
17573pub struct BookViews {
17574    #[serde(rename = "workbookView")]
17575    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17576    pub workbook_view: Vec<BookView>,
17577    /// Unknown child elements captured for roundtrip fidelity.
17578    #[cfg(feature = "extra-children")]
17579    #[serde(skip)]
17580    #[cfg(feature = "extra-children")]
17581    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17582}
17583
17584#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17585#[serde(rename = "workbookView")]
17586pub struct BookView {
17587    #[cfg(feature = "sml-structure")]
17588    #[serde(rename = "@visibility")]
17589    #[serde(default, skip_serializing_if = "Option::is_none")]
17590    pub visibility: Option<Visibility>,
17591    #[cfg(feature = "sml-structure")]
17592    #[serde(rename = "@minimized")]
17593    #[serde(
17594        default,
17595        skip_serializing_if = "Option::is_none",
17596        with = "ooxml_xml::ooxml_bool"
17597    )]
17598    pub minimized: Option<bool>,
17599    #[cfg(feature = "sml-structure")]
17600    #[serde(rename = "@showHorizontalScroll")]
17601    #[serde(
17602        default,
17603        skip_serializing_if = "Option::is_none",
17604        with = "ooxml_xml::ooxml_bool"
17605    )]
17606    pub show_horizontal_scroll: Option<bool>,
17607    #[cfg(feature = "sml-structure")]
17608    #[serde(rename = "@showVerticalScroll")]
17609    #[serde(
17610        default,
17611        skip_serializing_if = "Option::is_none",
17612        with = "ooxml_xml::ooxml_bool"
17613    )]
17614    pub show_vertical_scroll: Option<bool>,
17615    #[cfg(feature = "sml-structure")]
17616    #[serde(rename = "@showSheetTabs")]
17617    #[serde(
17618        default,
17619        skip_serializing_if = "Option::is_none",
17620        with = "ooxml_xml::ooxml_bool"
17621    )]
17622    pub show_sheet_tabs: Option<bool>,
17623    #[cfg(feature = "sml-structure")]
17624    #[serde(rename = "@xWindow")]
17625    #[serde(default, skip_serializing_if = "Option::is_none")]
17626    pub x_window: Option<i32>,
17627    #[cfg(feature = "sml-structure")]
17628    #[serde(rename = "@yWindow")]
17629    #[serde(default, skip_serializing_if = "Option::is_none")]
17630    pub y_window: Option<i32>,
17631    #[cfg(feature = "sml-structure")]
17632    #[serde(rename = "@windowWidth")]
17633    #[serde(default, skip_serializing_if = "Option::is_none")]
17634    pub window_width: Option<u32>,
17635    #[cfg(feature = "sml-structure")]
17636    #[serde(rename = "@windowHeight")]
17637    #[serde(default, skip_serializing_if = "Option::is_none")]
17638    pub window_height: Option<u32>,
17639    #[cfg(feature = "sml-structure")]
17640    #[serde(rename = "@tabRatio")]
17641    #[serde(default, skip_serializing_if = "Option::is_none")]
17642    pub tab_ratio: Option<u32>,
17643    #[cfg(feature = "sml-structure")]
17644    #[serde(rename = "@firstSheet")]
17645    #[serde(default, skip_serializing_if = "Option::is_none")]
17646    pub first_sheet: Option<u32>,
17647    #[serde(rename = "@activeTab")]
17648    #[serde(default, skip_serializing_if = "Option::is_none")]
17649    pub active_tab: Option<u32>,
17650    #[cfg(feature = "sml-filtering")]
17651    #[serde(rename = "@autoFilterDateGrouping")]
17652    #[serde(
17653        default,
17654        skip_serializing_if = "Option::is_none",
17655        with = "ooxml_xml::ooxml_bool"
17656    )]
17657    pub auto_filter_date_grouping: Option<bool>,
17658    #[cfg(feature = "sml-extensions")]
17659    #[serde(rename = "extLst")]
17660    #[serde(default, skip_serializing_if = "Option::is_none")]
17661    pub extension_list: Option<Box<ExtensionList>>,
17662    /// Unknown attributes captured for roundtrip fidelity.
17663    #[cfg(feature = "extra-attrs")]
17664    #[serde(skip)]
17665    #[cfg(feature = "extra-attrs")]
17666    #[serde(default)]
17667    #[cfg(feature = "extra-attrs")]
17668    pub extra_attrs: std::collections::HashMap<String, String>,
17669    /// Unknown child elements captured for roundtrip fidelity.
17670    #[cfg(feature = "extra-children")]
17671    #[serde(skip)]
17672    #[cfg(feature = "extra-children")]
17673    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17674}
17675
17676#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17677pub struct CustomWorkbookViews {
17678    #[serde(rename = "customWorkbookView")]
17679    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17680    pub custom_workbook_view: Vec<CustomWorkbookView>,
17681    /// Unknown child elements captured for roundtrip fidelity.
17682    #[cfg(feature = "extra-children")]
17683    #[serde(skip)]
17684    #[cfg(feature = "extra-children")]
17685    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17686}
17687
17688#[derive(Debug, Clone, Serialize, Deserialize)]
17689pub struct CustomWorkbookView {
17690    #[serde(rename = "@name")]
17691    pub name: XmlString,
17692    #[serde(rename = "@guid")]
17693    pub guid: Guid,
17694    #[serde(rename = "@autoUpdate")]
17695    #[serde(
17696        default,
17697        skip_serializing_if = "Option::is_none",
17698        with = "ooxml_xml::ooxml_bool"
17699    )]
17700    pub auto_update: Option<bool>,
17701    #[serde(rename = "@mergeInterval")]
17702    #[serde(default, skip_serializing_if = "Option::is_none")]
17703    pub merge_interval: Option<u32>,
17704    #[serde(rename = "@changesSavedWin")]
17705    #[serde(
17706        default,
17707        skip_serializing_if = "Option::is_none",
17708        with = "ooxml_xml::ooxml_bool"
17709    )]
17710    pub changes_saved_win: Option<bool>,
17711    #[serde(rename = "@onlySync")]
17712    #[serde(
17713        default,
17714        skip_serializing_if = "Option::is_none",
17715        with = "ooxml_xml::ooxml_bool"
17716    )]
17717    pub only_sync: Option<bool>,
17718    #[serde(rename = "@personalView")]
17719    #[serde(
17720        default,
17721        skip_serializing_if = "Option::is_none",
17722        with = "ooxml_xml::ooxml_bool"
17723    )]
17724    pub personal_view: Option<bool>,
17725    #[serde(rename = "@includePrintSettings")]
17726    #[serde(
17727        default,
17728        skip_serializing_if = "Option::is_none",
17729        with = "ooxml_xml::ooxml_bool"
17730    )]
17731    pub include_print_settings: Option<bool>,
17732    #[serde(rename = "@includeHiddenRowCol")]
17733    #[serde(
17734        default,
17735        skip_serializing_if = "Option::is_none",
17736        with = "ooxml_xml::ooxml_bool"
17737    )]
17738    pub include_hidden_row_col: Option<bool>,
17739    #[serde(rename = "@maximized")]
17740    #[serde(
17741        default,
17742        skip_serializing_if = "Option::is_none",
17743        with = "ooxml_xml::ooxml_bool"
17744    )]
17745    pub maximized: Option<bool>,
17746    #[serde(rename = "@minimized")]
17747    #[serde(
17748        default,
17749        skip_serializing_if = "Option::is_none",
17750        with = "ooxml_xml::ooxml_bool"
17751    )]
17752    pub minimized: Option<bool>,
17753    #[serde(rename = "@showHorizontalScroll")]
17754    #[serde(
17755        default,
17756        skip_serializing_if = "Option::is_none",
17757        with = "ooxml_xml::ooxml_bool"
17758    )]
17759    pub show_horizontal_scroll: Option<bool>,
17760    #[serde(rename = "@showVerticalScroll")]
17761    #[serde(
17762        default,
17763        skip_serializing_if = "Option::is_none",
17764        with = "ooxml_xml::ooxml_bool"
17765    )]
17766    pub show_vertical_scroll: Option<bool>,
17767    #[serde(rename = "@showSheetTabs")]
17768    #[serde(
17769        default,
17770        skip_serializing_if = "Option::is_none",
17771        with = "ooxml_xml::ooxml_bool"
17772    )]
17773    pub show_sheet_tabs: Option<bool>,
17774    #[serde(rename = "@xWindow")]
17775    #[serde(default, skip_serializing_if = "Option::is_none")]
17776    pub x_window: Option<i32>,
17777    #[serde(rename = "@yWindow")]
17778    #[serde(default, skip_serializing_if = "Option::is_none")]
17779    pub y_window: Option<i32>,
17780    #[serde(rename = "@windowWidth")]
17781    pub window_width: u32,
17782    #[serde(rename = "@windowHeight")]
17783    pub window_height: u32,
17784    #[serde(rename = "@tabRatio")]
17785    #[serde(default, skip_serializing_if = "Option::is_none")]
17786    pub tab_ratio: Option<u32>,
17787    #[serde(rename = "@activeSheetId")]
17788    pub active_sheet_id: u32,
17789    #[serde(rename = "@showFormulaBar")]
17790    #[serde(
17791        default,
17792        skip_serializing_if = "Option::is_none",
17793        with = "ooxml_xml::ooxml_bool"
17794    )]
17795    pub show_formula_bar: Option<bool>,
17796    #[serde(rename = "@showStatusbar")]
17797    #[serde(
17798        default,
17799        skip_serializing_if = "Option::is_none",
17800        with = "ooxml_xml::ooxml_bool"
17801    )]
17802    pub show_statusbar: Option<bool>,
17803    #[serde(rename = "@showComments")]
17804    #[serde(default, skip_serializing_if = "Option::is_none")]
17805    pub show_comments: Option<CommentVisibility>,
17806    #[serde(rename = "@showObjects")]
17807    #[serde(default, skip_serializing_if = "Option::is_none")]
17808    pub show_objects: Option<ObjectVisibility>,
17809    #[serde(rename = "extLst")]
17810    #[serde(default, skip_serializing_if = "Option::is_none")]
17811    pub extension_list: Option<Box<ExtensionList>>,
17812    /// Unknown attributes captured for roundtrip fidelity.
17813    #[cfg(feature = "extra-attrs")]
17814    #[serde(skip)]
17815    #[cfg(feature = "extra-attrs")]
17816    #[serde(default)]
17817    #[cfg(feature = "extra-attrs")]
17818    pub extra_attrs: std::collections::HashMap<String, String>,
17819    /// Unknown child elements captured for roundtrip fidelity.
17820    #[cfg(feature = "extra-children")]
17821    #[serde(skip)]
17822    #[cfg(feature = "extra-children")]
17823    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17824}
17825
17826#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17827#[serde(rename = "sheets")]
17828pub struct Sheets {
17829    #[serde(rename = "sheet")]
17830    #[serde(default, skip_serializing_if = "Vec::is_empty")]
17831    pub sheet: Vec<Sheet>,
17832    /// Unknown child elements captured for roundtrip fidelity.
17833    #[cfg(feature = "extra-children")]
17834    #[serde(skip)]
17835    #[cfg(feature = "extra-children")]
17836    pub extra_children: Vec<ooxml_xml::PositionedNode>,
17837}
17838
17839#[derive(Debug, Clone, Serialize, Deserialize)]
17840#[serde(rename = "sheet")]
17841pub struct Sheet {
17842    #[serde(rename = "@name")]
17843    pub name: XmlString,
17844    #[serde(rename = "@sheetId")]
17845    pub sheet_id: u32,
17846    #[cfg(feature = "sml-structure")]
17847    #[serde(rename = "@state")]
17848    #[serde(default, skip_serializing_if = "Option::is_none")]
17849    pub state: Option<SheetState>,
17850    #[serde(rename = "@r:id")]
17851    pub id: STRelationshipId,
17852    /// Unknown attributes captured for roundtrip fidelity.
17853    #[cfg(feature = "extra-attrs")]
17854    #[serde(skip)]
17855    #[cfg(feature = "extra-attrs")]
17856    #[serde(default)]
17857    #[cfg(feature = "extra-attrs")]
17858    pub extra_attrs: std::collections::HashMap<String, String>,
17859}
17860
17861#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17862#[serde(rename = "workbookPr")]
17863pub struct WorkbookProperties {
17864    #[serde(rename = "@date1904")]
17865    #[serde(
17866        default,
17867        skip_serializing_if = "Option::is_none",
17868        with = "ooxml_xml::ooxml_bool"
17869    )]
17870    pub date1904: Option<bool>,
17871    #[serde(rename = "@showObjects")]
17872    #[serde(default, skip_serializing_if = "Option::is_none")]
17873    pub show_objects: Option<ObjectVisibility>,
17874    #[serde(rename = "@showBorderUnselectedTables")]
17875    #[serde(
17876        default,
17877        skip_serializing_if = "Option::is_none",
17878        with = "ooxml_xml::ooxml_bool"
17879    )]
17880    pub show_border_unselected_tables: Option<bool>,
17881    #[serde(rename = "@filterPrivacy")]
17882    #[serde(
17883        default,
17884        skip_serializing_if = "Option::is_none",
17885        with = "ooxml_xml::ooxml_bool"
17886    )]
17887    pub filter_privacy: Option<bool>,
17888    #[serde(rename = "@promptedSolutions")]
17889    #[serde(
17890        default,
17891        skip_serializing_if = "Option::is_none",
17892        with = "ooxml_xml::ooxml_bool"
17893    )]
17894    pub prompted_solutions: Option<bool>,
17895    #[serde(rename = "@showInkAnnotation")]
17896    #[serde(
17897        default,
17898        skip_serializing_if = "Option::is_none",
17899        with = "ooxml_xml::ooxml_bool"
17900    )]
17901    pub show_ink_annotation: Option<bool>,
17902    #[serde(rename = "@backupFile")]
17903    #[serde(
17904        default,
17905        skip_serializing_if = "Option::is_none",
17906        with = "ooxml_xml::ooxml_bool"
17907    )]
17908    pub backup_file: Option<bool>,
17909    #[serde(rename = "@saveExternalLinkValues")]
17910    #[serde(
17911        default,
17912        skip_serializing_if = "Option::is_none",
17913        with = "ooxml_xml::ooxml_bool"
17914    )]
17915    pub save_external_link_values: Option<bool>,
17916    #[serde(rename = "@updateLinks")]
17917    #[serde(default, skip_serializing_if = "Option::is_none")]
17918    pub update_links: Option<UpdateLinks>,
17919    #[serde(rename = "@codeName")]
17920    #[serde(default, skip_serializing_if = "Option::is_none")]
17921    pub code_name: Option<String>,
17922    #[serde(rename = "@hidePivotFieldList")]
17923    #[serde(
17924        default,
17925        skip_serializing_if = "Option::is_none",
17926        with = "ooxml_xml::ooxml_bool"
17927    )]
17928    pub hide_pivot_field_list: Option<bool>,
17929    #[serde(rename = "@showPivotChartFilter")]
17930    #[serde(
17931        default,
17932        skip_serializing_if = "Option::is_none",
17933        with = "ooxml_xml::ooxml_bool"
17934    )]
17935    pub show_pivot_chart_filter: Option<bool>,
17936    #[serde(rename = "@allowRefreshQuery")]
17937    #[serde(
17938        default,
17939        skip_serializing_if = "Option::is_none",
17940        with = "ooxml_xml::ooxml_bool"
17941    )]
17942    pub allow_refresh_query: Option<bool>,
17943    #[serde(rename = "@publishItems")]
17944    #[serde(
17945        default,
17946        skip_serializing_if = "Option::is_none",
17947        with = "ooxml_xml::ooxml_bool"
17948    )]
17949    pub publish_items: Option<bool>,
17950    #[serde(rename = "@checkCompatibility")]
17951    #[serde(
17952        default,
17953        skip_serializing_if = "Option::is_none",
17954        with = "ooxml_xml::ooxml_bool"
17955    )]
17956    pub check_compatibility: Option<bool>,
17957    #[serde(rename = "@autoCompressPictures")]
17958    #[serde(
17959        default,
17960        skip_serializing_if = "Option::is_none",
17961        with = "ooxml_xml::ooxml_bool"
17962    )]
17963    pub auto_compress_pictures: Option<bool>,
17964    #[serde(rename = "@refreshAllConnections")]
17965    #[serde(
17966        default,
17967        skip_serializing_if = "Option::is_none",
17968        with = "ooxml_xml::ooxml_bool"
17969    )]
17970    pub refresh_all_connections: Option<bool>,
17971    #[serde(rename = "@defaultThemeVersion")]
17972    #[serde(default, skip_serializing_if = "Option::is_none")]
17973    pub default_theme_version: Option<u32>,
17974    /// Unknown attributes captured for roundtrip fidelity.
17975    #[cfg(feature = "extra-attrs")]
17976    #[serde(skip)]
17977    #[cfg(feature = "extra-attrs")]
17978    #[serde(default)]
17979    #[cfg(feature = "extra-attrs")]
17980    pub extra_attrs: std::collections::HashMap<String, String>,
17981}
17982
17983#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17984pub struct CTSmartTagPr {
17985    #[serde(rename = "@embed")]
17986    #[serde(
17987        default,
17988        skip_serializing_if = "Option::is_none",
17989        with = "ooxml_xml::ooxml_bool"
17990    )]
17991    pub embed: Option<bool>,
17992    #[serde(rename = "@show")]
17993    #[serde(default, skip_serializing_if = "Option::is_none")]
17994    pub show: Option<STSmartTagShow>,
17995    /// Unknown attributes captured for roundtrip fidelity.
17996    #[cfg(feature = "extra-attrs")]
17997    #[serde(skip)]
17998    #[cfg(feature = "extra-attrs")]
17999    #[serde(default)]
18000    #[cfg(feature = "extra-attrs")]
18001    pub extra_attrs: std::collections::HashMap<String, String>,
18002}
18003
18004#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18005pub struct CTSmartTagTypes {
18006    #[serde(rename = "smartTagType")]
18007    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18008    pub smart_tag_type: Vec<CTSmartTagType>,
18009    /// Unknown child elements captured for roundtrip fidelity.
18010    #[cfg(feature = "extra-children")]
18011    #[serde(skip)]
18012    #[cfg(feature = "extra-children")]
18013    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18014}
18015
18016#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18017pub struct CTSmartTagType {
18018    #[serde(rename = "@namespaceUri")]
18019    #[serde(default, skip_serializing_if = "Option::is_none")]
18020    pub namespace_uri: Option<XmlString>,
18021    #[serde(rename = "@name")]
18022    #[serde(default, skip_serializing_if = "Option::is_none")]
18023    pub name: Option<XmlString>,
18024    #[serde(rename = "@url")]
18025    #[serde(default, skip_serializing_if = "Option::is_none")]
18026    pub url: Option<XmlString>,
18027    /// Unknown attributes captured for roundtrip fidelity.
18028    #[cfg(feature = "extra-attrs")]
18029    #[serde(skip)]
18030    #[cfg(feature = "extra-attrs")]
18031    #[serde(default)]
18032    #[cfg(feature = "extra-attrs")]
18033    pub extra_attrs: std::collections::HashMap<String, String>,
18034}
18035
18036#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18037pub struct FileRecoveryProperties {
18038    #[serde(rename = "@autoRecover")]
18039    #[serde(
18040        default,
18041        skip_serializing_if = "Option::is_none",
18042        with = "ooxml_xml::ooxml_bool"
18043    )]
18044    pub auto_recover: Option<bool>,
18045    #[serde(rename = "@crashSave")]
18046    #[serde(
18047        default,
18048        skip_serializing_if = "Option::is_none",
18049        with = "ooxml_xml::ooxml_bool"
18050    )]
18051    pub crash_save: Option<bool>,
18052    #[serde(rename = "@dataExtractLoad")]
18053    #[serde(
18054        default,
18055        skip_serializing_if = "Option::is_none",
18056        with = "ooxml_xml::ooxml_bool"
18057    )]
18058    pub data_extract_load: Option<bool>,
18059    #[serde(rename = "@repairLoad")]
18060    #[serde(
18061        default,
18062        skip_serializing_if = "Option::is_none",
18063        with = "ooxml_xml::ooxml_bool"
18064    )]
18065    pub repair_load: Option<bool>,
18066    /// Unknown attributes captured for roundtrip fidelity.
18067    #[cfg(feature = "extra-attrs")]
18068    #[serde(skip)]
18069    #[cfg(feature = "extra-attrs")]
18070    #[serde(default)]
18071    #[cfg(feature = "extra-attrs")]
18072    pub extra_attrs: std::collections::HashMap<String, String>,
18073}
18074
18075#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18076#[serde(rename = "calcPr")]
18077pub struct CalculationProperties {
18078    #[cfg(feature = "sml-formulas")]
18079    #[serde(rename = "@calcId")]
18080    #[serde(default, skip_serializing_if = "Option::is_none")]
18081    pub calc_id: Option<u32>,
18082    #[cfg(feature = "sml-formulas")]
18083    #[serde(rename = "@calcMode")]
18084    #[serde(default, skip_serializing_if = "Option::is_none")]
18085    pub calc_mode: Option<CalculationMode>,
18086    #[cfg(feature = "sml-formulas")]
18087    #[serde(rename = "@fullCalcOnLoad")]
18088    #[serde(
18089        default,
18090        skip_serializing_if = "Option::is_none",
18091        with = "ooxml_xml::ooxml_bool"
18092    )]
18093    pub full_calc_on_load: Option<bool>,
18094    #[cfg(feature = "sml-formulas")]
18095    #[serde(rename = "@refMode")]
18096    #[serde(default, skip_serializing_if = "Option::is_none")]
18097    pub ref_mode: Option<ReferenceMode>,
18098    #[cfg(feature = "sml-formulas-advanced")]
18099    #[serde(rename = "@iterate")]
18100    #[serde(
18101        default,
18102        skip_serializing_if = "Option::is_none",
18103        with = "ooxml_xml::ooxml_bool"
18104    )]
18105    pub iterate: Option<bool>,
18106    #[cfg(feature = "sml-formulas-advanced")]
18107    #[serde(rename = "@iterateCount")]
18108    #[serde(default, skip_serializing_if = "Option::is_none")]
18109    pub iterate_count: Option<u32>,
18110    #[cfg(feature = "sml-formulas-advanced")]
18111    #[serde(rename = "@iterateDelta")]
18112    #[serde(default, skip_serializing_if = "Option::is_none")]
18113    pub iterate_delta: Option<f64>,
18114    #[cfg(feature = "sml-formulas")]
18115    #[serde(rename = "@fullPrecision")]
18116    #[serde(
18117        default,
18118        skip_serializing_if = "Option::is_none",
18119        with = "ooxml_xml::ooxml_bool"
18120    )]
18121    pub full_precision: Option<bool>,
18122    #[cfg(feature = "sml-formulas")]
18123    #[serde(rename = "@calcCompleted")]
18124    #[serde(
18125        default,
18126        skip_serializing_if = "Option::is_none",
18127        with = "ooxml_xml::ooxml_bool"
18128    )]
18129    pub calc_completed: Option<bool>,
18130    #[cfg(feature = "sml-formulas")]
18131    #[serde(rename = "@calcOnSave")]
18132    #[serde(
18133        default,
18134        skip_serializing_if = "Option::is_none",
18135        with = "ooxml_xml::ooxml_bool"
18136    )]
18137    pub calc_on_save: Option<bool>,
18138    #[cfg(feature = "sml-formulas-advanced")]
18139    #[serde(rename = "@concurrentCalc")]
18140    #[serde(
18141        default,
18142        skip_serializing_if = "Option::is_none",
18143        with = "ooxml_xml::ooxml_bool"
18144    )]
18145    pub concurrent_calc: Option<bool>,
18146    #[cfg(feature = "sml-formulas-advanced")]
18147    #[serde(rename = "@concurrentManualCount")]
18148    #[serde(default, skip_serializing_if = "Option::is_none")]
18149    pub concurrent_manual_count: Option<u32>,
18150    #[cfg(feature = "sml-formulas")]
18151    #[serde(rename = "@forceFullCalc")]
18152    #[serde(
18153        default,
18154        skip_serializing_if = "Option::is_none",
18155        with = "ooxml_xml::ooxml_bool"
18156    )]
18157    pub force_full_calc: Option<bool>,
18158    /// Unknown attributes captured for roundtrip fidelity.
18159    #[cfg(feature = "extra-attrs")]
18160    #[serde(skip)]
18161    #[cfg(feature = "extra-attrs")]
18162    #[serde(default)]
18163    #[cfg(feature = "extra-attrs")]
18164    pub extra_attrs: std::collections::HashMap<String, String>,
18165}
18166
18167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18168#[serde(rename = "definedNames")]
18169pub struct DefinedNames {
18170    #[serde(rename = "definedName")]
18171    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18172    pub defined_name: Vec<DefinedName>,
18173    /// Unknown child elements captured for roundtrip fidelity.
18174    #[cfg(feature = "extra-children")]
18175    #[serde(skip)]
18176    #[cfg(feature = "extra-children")]
18177    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18178}
18179
18180#[derive(Debug, Clone, Serialize, Deserialize)]
18181#[serde(rename = "definedName")]
18182pub struct DefinedName {
18183    #[serde(rename = "$text")]
18184    #[serde(default, skip_serializing_if = "Option::is_none")]
18185    pub text: Option<String>,
18186    #[serde(rename = "@name")]
18187    pub name: XmlString,
18188    #[serde(rename = "@comment")]
18189    #[serde(default, skip_serializing_if = "Option::is_none")]
18190    pub comment: Option<XmlString>,
18191    #[cfg(feature = "sml-formulas-advanced")]
18192    #[serde(rename = "@customMenu")]
18193    #[serde(default, skip_serializing_if = "Option::is_none")]
18194    pub custom_menu: Option<XmlString>,
18195    #[serde(rename = "@description")]
18196    #[serde(default, skip_serializing_if = "Option::is_none")]
18197    pub description: Option<XmlString>,
18198    #[cfg(feature = "sml-formulas-advanced")]
18199    #[serde(rename = "@help")]
18200    #[serde(default, skip_serializing_if = "Option::is_none")]
18201    pub help: Option<XmlString>,
18202    #[cfg(feature = "sml-formulas-advanced")]
18203    #[serde(rename = "@statusBar")]
18204    #[serde(default, skip_serializing_if = "Option::is_none")]
18205    pub status_bar: Option<XmlString>,
18206    #[serde(rename = "@localSheetId")]
18207    #[serde(default, skip_serializing_if = "Option::is_none")]
18208    pub local_sheet_id: Option<u32>,
18209    #[cfg(feature = "sml-structure")]
18210    #[serde(rename = "@hidden")]
18211    #[serde(
18212        default,
18213        skip_serializing_if = "Option::is_none",
18214        with = "ooxml_xml::ooxml_bool"
18215    )]
18216    pub hidden: Option<bool>,
18217    #[cfg(feature = "sml-formulas-advanced")]
18218    #[serde(rename = "@function")]
18219    #[serde(
18220        default,
18221        skip_serializing_if = "Option::is_none",
18222        with = "ooxml_xml::ooxml_bool"
18223    )]
18224    pub function: Option<bool>,
18225    #[cfg(feature = "sml-formulas-advanced")]
18226    #[serde(rename = "@vbProcedure")]
18227    #[serde(
18228        default,
18229        skip_serializing_if = "Option::is_none",
18230        with = "ooxml_xml::ooxml_bool"
18231    )]
18232    pub vb_procedure: Option<bool>,
18233    #[cfg(feature = "sml-formulas-advanced")]
18234    #[serde(rename = "@xlm")]
18235    #[serde(
18236        default,
18237        skip_serializing_if = "Option::is_none",
18238        with = "ooxml_xml::ooxml_bool"
18239    )]
18240    pub xlm: Option<bool>,
18241    #[cfg(feature = "sml-formulas-advanced")]
18242    #[serde(rename = "@functionGroupId")]
18243    #[serde(default, skip_serializing_if = "Option::is_none")]
18244    pub function_group_id: Option<u32>,
18245    #[cfg(feature = "sml-formulas-advanced")]
18246    #[serde(rename = "@shortcutKey")]
18247    #[serde(default, skip_serializing_if = "Option::is_none")]
18248    pub shortcut_key: Option<XmlString>,
18249    #[cfg(feature = "sml-external")]
18250    #[serde(rename = "@publishToServer")]
18251    #[serde(
18252        default,
18253        skip_serializing_if = "Option::is_none",
18254        with = "ooxml_xml::ooxml_bool"
18255    )]
18256    pub publish_to_server: Option<bool>,
18257    #[cfg(feature = "sml-formulas-advanced")]
18258    #[serde(rename = "@workbookParameter")]
18259    #[serde(
18260        default,
18261        skip_serializing_if = "Option::is_none",
18262        with = "ooxml_xml::ooxml_bool"
18263    )]
18264    pub workbook_parameter: Option<bool>,
18265    /// Unknown attributes captured for roundtrip fidelity.
18266    #[cfg(feature = "extra-attrs")]
18267    #[serde(skip)]
18268    #[cfg(feature = "extra-attrs")]
18269    #[serde(default)]
18270    #[cfg(feature = "extra-attrs")]
18271    pub extra_attrs: std::collections::HashMap<String, String>,
18272    /// Unknown child elements captured for roundtrip fidelity.
18273    #[cfg(feature = "extra-children")]
18274    #[serde(skip)]
18275    #[cfg(feature = "extra-children")]
18276    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18277}
18278
18279#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18280pub struct ExternalReferences {
18281    #[serde(rename = "externalReference")]
18282    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18283    pub external_reference: Vec<ExternalReference>,
18284    /// Unknown child elements captured for roundtrip fidelity.
18285    #[cfg(feature = "extra-children")]
18286    #[serde(skip)]
18287    #[cfg(feature = "extra-children")]
18288    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18289}
18290
18291#[derive(Debug, Clone, Serialize, Deserialize)]
18292pub struct ExternalReference {
18293    #[serde(rename = "@r:id")]
18294    pub id: STRelationshipId,
18295    /// Unknown attributes captured for roundtrip fidelity.
18296    #[cfg(feature = "extra-attrs")]
18297    #[serde(skip)]
18298    #[cfg(feature = "extra-attrs")]
18299    #[serde(default)]
18300    #[cfg(feature = "extra-attrs")]
18301    pub extra_attrs: std::collections::HashMap<String, String>,
18302}
18303
18304#[derive(Debug, Clone, Serialize, Deserialize)]
18305pub struct SheetBackgroundPicture {
18306    #[serde(rename = "@r:id")]
18307    pub id: STRelationshipId,
18308    /// Unknown attributes captured for roundtrip fidelity.
18309    #[cfg(feature = "extra-attrs")]
18310    #[serde(skip)]
18311    #[cfg(feature = "extra-attrs")]
18312    #[serde(default)]
18313    #[cfg(feature = "extra-attrs")]
18314    pub extra_attrs: std::collections::HashMap<String, String>,
18315}
18316
18317#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18318pub struct PivotCaches {
18319    #[serde(rename = "pivotCache")]
18320    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18321    pub pivot_cache: Vec<CTPivotCache>,
18322    /// Unknown child elements captured for roundtrip fidelity.
18323    #[cfg(feature = "extra-children")]
18324    #[serde(skip)]
18325    #[cfg(feature = "extra-children")]
18326    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18327}
18328
18329#[derive(Debug, Clone, Serialize, Deserialize)]
18330pub struct CTPivotCache {
18331    #[serde(rename = "@cacheId")]
18332    pub cache_id: u32,
18333    #[serde(rename = "@r:id")]
18334    pub id: STRelationshipId,
18335    /// Unknown attributes captured for roundtrip fidelity.
18336    #[cfg(feature = "extra-attrs")]
18337    #[serde(skip)]
18338    #[cfg(feature = "extra-attrs")]
18339    #[serde(default)]
18340    #[cfg(feature = "extra-attrs")]
18341    pub extra_attrs: std::collections::HashMap<String, String>,
18342}
18343
18344#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18345pub struct FileSharing {
18346    #[serde(rename = "@readOnlyRecommended")]
18347    #[serde(
18348        default,
18349        skip_serializing_if = "Option::is_none",
18350        with = "ooxml_xml::ooxml_bool"
18351    )]
18352    pub read_only_recommended: Option<bool>,
18353    #[serde(rename = "@userName")]
18354    #[serde(default, skip_serializing_if = "Option::is_none")]
18355    pub user_name: Option<XmlString>,
18356    #[serde(rename = "@reservationPassword")]
18357    #[serde(default, skip_serializing_if = "Option::is_none")]
18358    pub reservation_password: Option<STUnsignedShortHex>,
18359    #[serde(rename = "@algorithmName")]
18360    #[serde(default, skip_serializing_if = "Option::is_none")]
18361    pub algorithm_name: Option<XmlString>,
18362    #[serde(rename = "@hashValue")]
18363    #[serde(default, skip_serializing_if = "Option::is_none")]
18364    pub hash_value: Option<Vec<u8>>,
18365    #[serde(rename = "@saltValue")]
18366    #[serde(default, skip_serializing_if = "Option::is_none")]
18367    pub salt_value: Option<Vec<u8>>,
18368    #[serde(rename = "@spinCount")]
18369    #[serde(default, skip_serializing_if = "Option::is_none")]
18370    pub spin_count: Option<u32>,
18371    /// Unknown attributes captured for roundtrip fidelity.
18372    #[cfg(feature = "extra-attrs")]
18373    #[serde(skip)]
18374    #[cfg(feature = "extra-attrs")]
18375    #[serde(default)]
18376    #[cfg(feature = "extra-attrs")]
18377    pub extra_attrs: std::collections::HashMap<String, String>,
18378}
18379
18380#[derive(Debug, Clone, Serialize, Deserialize)]
18381pub struct CTOleSize {
18382    #[serde(rename = "@ref")]
18383    pub reference: Reference,
18384    /// Unknown attributes captured for roundtrip fidelity.
18385    #[cfg(feature = "extra-attrs")]
18386    #[serde(skip)]
18387    #[cfg(feature = "extra-attrs")]
18388    #[serde(default)]
18389    #[cfg(feature = "extra-attrs")]
18390    pub extra_attrs: std::collections::HashMap<String, String>,
18391}
18392
18393#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18394#[serde(rename = "workbookProtection")]
18395pub struct WorkbookProtection {
18396    #[serde(rename = "@workbookPassword")]
18397    #[serde(default, skip_serializing_if = "Option::is_none")]
18398    pub workbook_password: Option<STUnsignedShortHex>,
18399    #[serde(rename = "@workbookPasswordCharacterSet")]
18400    #[serde(default, skip_serializing_if = "Option::is_none")]
18401    pub workbook_password_character_set: Option<String>,
18402    #[serde(rename = "@revisionsPassword")]
18403    #[serde(default, skip_serializing_if = "Option::is_none")]
18404    pub revisions_password: Option<STUnsignedShortHex>,
18405    #[serde(rename = "@revisionsPasswordCharacterSet")]
18406    #[serde(default, skip_serializing_if = "Option::is_none")]
18407    pub revisions_password_character_set: Option<String>,
18408    #[serde(rename = "@lockStructure")]
18409    #[serde(
18410        default,
18411        skip_serializing_if = "Option::is_none",
18412        with = "ooxml_xml::ooxml_bool"
18413    )]
18414    pub lock_structure: Option<bool>,
18415    #[serde(rename = "@lockWindows")]
18416    #[serde(
18417        default,
18418        skip_serializing_if = "Option::is_none",
18419        with = "ooxml_xml::ooxml_bool"
18420    )]
18421    pub lock_windows: Option<bool>,
18422    #[serde(rename = "@lockRevision")]
18423    #[serde(
18424        default,
18425        skip_serializing_if = "Option::is_none",
18426        with = "ooxml_xml::ooxml_bool"
18427    )]
18428    pub lock_revision: Option<bool>,
18429    #[serde(rename = "@revisionsAlgorithmName")]
18430    #[serde(default, skip_serializing_if = "Option::is_none")]
18431    pub revisions_algorithm_name: Option<XmlString>,
18432    #[serde(rename = "@revisionsHashValue")]
18433    #[serde(default, skip_serializing_if = "Option::is_none")]
18434    pub revisions_hash_value: Option<Vec<u8>>,
18435    #[serde(rename = "@revisionsSaltValue")]
18436    #[serde(default, skip_serializing_if = "Option::is_none")]
18437    pub revisions_salt_value: Option<Vec<u8>>,
18438    #[serde(rename = "@revisionsSpinCount")]
18439    #[serde(default, skip_serializing_if = "Option::is_none")]
18440    pub revisions_spin_count: Option<u32>,
18441    #[serde(rename = "@workbookAlgorithmName")]
18442    #[serde(default, skip_serializing_if = "Option::is_none")]
18443    pub workbook_algorithm_name: Option<XmlString>,
18444    #[serde(rename = "@workbookHashValue")]
18445    #[serde(default, skip_serializing_if = "Option::is_none")]
18446    pub workbook_hash_value: Option<Vec<u8>>,
18447    #[serde(rename = "@workbookSaltValue")]
18448    #[serde(default, skip_serializing_if = "Option::is_none")]
18449    pub workbook_salt_value: Option<Vec<u8>>,
18450    #[serde(rename = "@workbookSpinCount")]
18451    #[serde(default, skip_serializing_if = "Option::is_none")]
18452    pub workbook_spin_count: Option<u32>,
18453    /// Unknown attributes captured for roundtrip fidelity.
18454    #[cfg(feature = "extra-attrs")]
18455    #[serde(skip)]
18456    #[cfg(feature = "extra-attrs")]
18457    #[serde(default)]
18458    #[cfg(feature = "extra-attrs")]
18459    pub extra_attrs: std::collections::HashMap<String, String>,
18460}
18461
18462#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18463pub struct WebPublishing {
18464    #[serde(rename = "@css")]
18465    #[serde(
18466        default,
18467        skip_serializing_if = "Option::is_none",
18468        with = "ooxml_xml::ooxml_bool"
18469    )]
18470    pub css: Option<bool>,
18471    #[serde(rename = "@thicket")]
18472    #[serde(
18473        default,
18474        skip_serializing_if = "Option::is_none",
18475        with = "ooxml_xml::ooxml_bool"
18476    )]
18477    pub thicket: Option<bool>,
18478    #[serde(rename = "@longFileNames")]
18479    #[serde(
18480        default,
18481        skip_serializing_if = "Option::is_none",
18482        with = "ooxml_xml::ooxml_bool"
18483    )]
18484    pub long_file_names: Option<bool>,
18485    #[serde(rename = "@vml")]
18486    #[serde(
18487        default,
18488        skip_serializing_if = "Option::is_none",
18489        with = "ooxml_xml::ooxml_bool"
18490    )]
18491    pub vml: Option<bool>,
18492    #[serde(rename = "@allowPng")]
18493    #[serde(
18494        default,
18495        skip_serializing_if = "Option::is_none",
18496        with = "ooxml_xml::ooxml_bool"
18497    )]
18498    pub allow_png: Option<bool>,
18499    #[serde(rename = "@targetScreenSize")]
18500    #[serde(default, skip_serializing_if = "Option::is_none")]
18501    pub target_screen_size: Option<STTargetScreenSize>,
18502    #[serde(rename = "@dpi")]
18503    #[serde(default, skip_serializing_if = "Option::is_none")]
18504    pub dpi: Option<u32>,
18505    #[serde(rename = "@codePage")]
18506    #[serde(default, skip_serializing_if = "Option::is_none")]
18507    pub code_page: Option<u32>,
18508    #[serde(rename = "@characterSet")]
18509    #[serde(default, skip_serializing_if = "Option::is_none")]
18510    pub character_set: Option<String>,
18511    /// Unknown attributes captured for roundtrip fidelity.
18512    #[cfg(feature = "extra-attrs")]
18513    #[serde(skip)]
18514    #[cfg(feature = "extra-attrs")]
18515    #[serde(default)]
18516    #[cfg(feature = "extra-attrs")]
18517    pub extra_attrs: std::collections::HashMap<String, String>,
18518}
18519
18520#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18521pub struct CTFunctionGroups {
18522    #[serde(rename = "@builtInGroupCount")]
18523    #[serde(default, skip_serializing_if = "Option::is_none")]
18524    pub built_in_group_count: Option<u32>,
18525    #[serde(rename = "functionGroup")]
18526    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18527    pub function_group: Vec<CTFunctionGroup>,
18528    /// Unknown attributes captured for roundtrip fidelity.
18529    #[cfg(feature = "extra-attrs")]
18530    #[serde(skip)]
18531    #[cfg(feature = "extra-attrs")]
18532    #[serde(default)]
18533    #[cfg(feature = "extra-attrs")]
18534    pub extra_attrs: std::collections::HashMap<String, String>,
18535    /// Unknown child elements captured for roundtrip fidelity.
18536    #[cfg(feature = "extra-children")]
18537    #[serde(skip)]
18538    #[cfg(feature = "extra-children")]
18539    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18540}
18541
18542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18543pub struct CTFunctionGroup {
18544    #[serde(rename = "@name")]
18545    #[serde(default, skip_serializing_if = "Option::is_none")]
18546    pub name: Option<XmlString>,
18547    /// Unknown attributes captured for roundtrip fidelity.
18548    #[cfg(feature = "extra-attrs")]
18549    #[serde(skip)]
18550    #[cfg(feature = "extra-attrs")]
18551    #[serde(default)]
18552    #[cfg(feature = "extra-attrs")]
18553    pub extra_attrs: std::collections::HashMap<String, String>,
18554}
18555
18556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18557pub struct CTWebPublishObjects {
18558    #[serde(rename = "@count")]
18559    #[serde(default, skip_serializing_if = "Option::is_none")]
18560    pub count: Option<u32>,
18561    #[serde(rename = "webPublishObject")]
18562    #[serde(default, skip_serializing_if = "Vec::is_empty")]
18563    pub web_publish_object: Vec<CTWebPublishObject>,
18564    /// Unknown attributes captured for roundtrip fidelity.
18565    #[cfg(feature = "extra-attrs")]
18566    #[serde(skip)]
18567    #[cfg(feature = "extra-attrs")]
18568    #[serde(default)]
18569    #[cfg(feature = "extra-attrs")]
18570    pub extra_attrs: std::collections::HashMap<String, String>,
18571    /// Unknown child elements captured for roundtrip fidelity.
18572    #[cfg(feature = "extra-children")]
18573    #[serde(skip)]
18574    #[cfg(feature = "extra-children")]
18575    pub extra_children: Vec<ooxml_xml::PositionedNode>,
18576}
18577
18578#[derive(Debug, Clone, Serialize, Deserialize)]
18579pub struct CTWebPublishObject {
18580    #[serde(rename = "@id")]
18581    pub id: u32,
18582    #[serde(rename = "@divId")]
18583    pub div_id: XmlString,
18584    #[serde(rename = "@sourceObject")]
18585    #[serde(default, skip_serializing_if = "Option::is_none")]
18586    pub source_object: Option<XmlString>,
18587    #[serde(rename = "@destinationFile")]
18588    pub destination_file: XmlString,
18589    #[serde(rename = "@title")]
18590    #[serde(default, skip_serializing_if = "Option::is_none")]
18591    pub title: Option<XmlString>,
18592    #[serde(rename = "@autoRepublish")]
18593    #[serde(
18594        default,
18595        skip_serializing_if = "Option::is_none",
18596        with = "ooxml_xml::ooxml_bool"
18597    )]
18598    pub auto_republish: Option<bool>,
18599    /// Unknown attributes captured for roundtrip fidelity.
18600    #[cfg(feature = "extra-attrs")]
18601    #[serde(skip)]
18602    #[cfg(feature = "extra-attrs")]
18603    #[serde(default)]
18604    #[cfg(feature = "extra-attrs")]
18605    pub extra_attrs: std::collections::HashMap<String, String>,
18606}