1use serde::{Deserialize, Serialize};
6
7use super::common::{AttrValInt, XlsxExtLst};
8
9#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
11#[serde(rename = "pivotCacheDefinition")]
12pub struct XlsxPivotCacheDefinition {
13 #[serde(rename = "@xmlns", default, skip_serializing_if = "Option::is_none")]
14 pub xmlns: Option<String>,
15 #[serde(rename = "@xmlns:r", default, skip_serializing_if = "Option::is_none")]
16 pub xmlns_r: Option<String>,
17 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
18 pub rid: Option<String>,
19 #[serde(rename = "@invalid", default, skip_serializing_if = "Option::is_none")]
20 pub invalid: Option<bool>,
21 #[serde(rename = "@saveData", default)]
22 pub save_data: bool,
23 #[serde(
24 rename = "@refreshOnLoad",
25 default,
26 skip_serializing_if = "Option::is_none"
27 )]
28 pub refresh_on_load: Option<bool>,
29 #[serde(
30 rename = "@optimizeMemory",
31 default,
32 skip_serializing_if = "Option::is_none"
33 )]
34 pub optimize_memory: Option<bool>,
35 #[serde(
36 rename = "@enableRefresh",
37 default,
38 skip_serializing_if = "Option::is_none"
39 )]
40 pub enable_refresh: Option<bool>,
41 #[serde(
42 rename = "@refreshedBy",
43 default,
44 skip_serializing_if = "Option::is_none"
45 )]
46 pub refreshed_by: Option<String>,
47 #[serde(
48 rename = "@refreshedDate",
49 default,
50 skip_serializing_if = "Option::is_none"
51 )]
52 pub refreshed_date: Option<f64>,
53 #[serde(
54 rename = "@refreshedDateIso",
55 default,
56 skip_serializing_if = "Option::is_none"
57 )]
58 pub refreshed_date_iso: Option<f64>,
59 #[serde(rename = "@backgroundQuery", default)]
60 pub background_query: bool,
61 #[serde(
62 rename = "@missingItemsLimit",
63 default,
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub missing_items_limit: Option<i32>,
67 #[serde(
68 rename = "@createdVersion",
69 default,
70 skip_serializing_if = "Option::is_none"
71 )]
72 pub created_version: Option<i32>,
73 #[serde(
74 rename = "@refreshedVersion",
75 default,
76 skip_serializing_if = "Option::is_none"
77 )]
78 pub refreshed_version: Option<i32>,
79 #[serde(
80 rename = "@minRefreshableVersion",
81 default,
82 skip_serializing_if = "Option::is_none"
83 )]
84 pub min_refreshable_version: Option<i32>,
85 #[serde(
86 rename = "@recordCount",
87 default,
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub record_count: Option<i32>,
91 #[serde(
92 rename = "@upgradeOnRefresh",
93 default,
94 skip_serializing_if = "Option::is_none"
95 )]
96 pub upgrade_on_refresh: Option<bool>,
97 #[serde(
98 rename = "@tupleCache",
99 default,
100 skip_serializing_if = "Option::is_none"
101 )]
102 pub tuple_cache_attr: Option<bool>,
103 #[serde(
104 rename = "@supportSubquery",
105 default,
106 skip_serializing_if = "Option::is_none"
107 )]
108 pub support_subquery: Option<bool>,
109 #[serde(
110 rename = "@supportAdvancedDrill",
111 default,
112 skip_serializing_if = "Option::is_none"
113 )]
114 pub support_advanced_drill: Option<bool>,
115 #[serde(
116 rename = "cacheSource",
117 default,
118 skip_serializing_if = "Option::is_none"
119 )]
120 pub cache_source: Option<XlsxCacheSource>,
121 #[serde(
122 rename = "cacheFields",
123 default,
124 skip_serializing_if = "Option::is_none"
125 )]
126 pub cache_fields: Option<XlsxCacheFields>,
127 #[serde(
128 rename = "cacheHierarchies",
129 default,
130 skip_serializing_if = "Option::is_none"
131 )]
132 pub cache_hierarchies: Option<XlsxCacheHierarchies>,
133 #[serde(rename = "kpis", default, skip_serializing_if = "Option::is_none")]
134 pub kpis: Option<XlsxKpis>,
135 #[serde(
136 rename = "tupleCache",
137 default,
138 skip_serializing_if = "Option::is_none"
139 )]
140 pub tuple_cache: Option<XlsxTupleCache>,
141 #[serde(
142 rename = "calculatedItems",
143 default,
144 skip_serializing_if = "Option::is_none"
145 )]
146 pub calculated_items: Option<XlsxCalculatedItems>,
147 #[serde(
148 rename = "calculatedMembers",
149 default,
150 skip_serializing_if = "Option::is_none"
151 )]
152 pub calculated_members: Option<XlsxCalculatedMembers>,
153 #[serde(
154 rename = "dimensions",
155 default,
156 skip_serializing_if = "Option::is_none"
157 )]
158 pub dimensions: Option<XlsxDimensions>,
159 #[serde(
160 rename = "measureGroups",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub measure_groups: Option<XlsxMeasureGroups>,
165 #[serde(rename = "maps", default, skip_serializing_if = "Option::is_none")]
166 pub maps: Option<XlsxMaps>,
167 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
168 pub ext_lst: Option<XlsxExtLst>,
169}
170
171#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
173pub struct XlsxCacheSource {
174 #[serde(rename = "@type", default)]
175 pub r#type: String,
176 #[serde(
177 rename = "@connectionId",
178 default,
179 skip_serializing_if = "Option::is_none"
180 )]
181 pub connection_id: Option<i32>,
182 #[serde(
183 rename = "worksheetSource",
184 default,
185 skip_serializing_if = "Option::is_none"
186 )]
187 pub worksheet_source: Option<XlsxWorksheetSource>,
188 #[serde(
189 rename = "consolidation",
190 default,
191 skip_serializing_if = "Option::is_none"
192 )]
193 pub consolidation: Option<XlsxConsolidation>,
194 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
195 pub ext_lst: Option<XlsxExtLst>,
196}
197
198#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
200pub struct XlsxWorksheetSource {
201 #[serde(rename = "@r:id", default, skip_serializing_if = "Option::is_none")]
202 pub rid: Option<String>,
203 #[serde(rename = "@ref", default, skip_serializing_if = "Option::is_none")]
204 pub r#ref: Option<String>,
205 #[serde(rename = "@name", default, skip_serializing_if = "Option::is_none")]
206 pub name: Option<String>,
207 #[serde(rename = "@sheet", default, skip_serializing_if = "Option::is_none")]
208 pub sheet: Option<String>,
209}
210
211#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
213pub struct XlsxConsolidation {}
214
215#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
217pub struct XlsxCacheFields {
218 #[serde(rename = "@count", default)]
219 pub count: i32,
220 #[serde(rename = "cacheField", default)]
221 pub cache_field: Vec<XlsxCacheField>,
222}
223
224#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
226pub struct XlsxCacheField {
227 #[serde(rename = "@name", default)]
228 pub name: String,
229 #[serde(rename = "@caption", default, skip_serializing_if = "Option::is_none")]
230 pub caption: Option<String>,
231 #[serde(
232 rename = "@propertyName",
233 default,
234 skip_serializing_if = "Option::is_none"
235 )]
236 pub property_name: Option<String>,
237 #[serde(
238 rename = "@serverField",
239 default,
240 skip_serializing_if = "Option::is_none"
241 )]
242 pub server_field: Option<bool>,
243 #[serde(
244 rename = "@uniqueList",
245 default,
246 skip_serializing_if = "Option::is_none"
247 )]
248 pub unique_list: Option<bool>,
249 #[serde(rename = "@numFmtId", default)]
250 pub num_fmt_id: i32,
251 #[serde(rename = "@formula", default, skip_serializing_if = "Option::is_none")]
252 pub formula: Option<String>,
253 #[serde(rename = "@sqlType", default, skip_serializing_if = "Option::is_none")]
254 pub sql_type: Option<i32>,
255 #[serde(
256 rename = "@hierarchy",
257 default,
258 skip_serializing_if = "Option::is_none"
259 )]
260 pub hierarchy: Option<i32>,
261 #[serde(rename = "@level", default, skip_serializing_if = "Option::is_none")]
262 pub level: Option<i32>,
263 #[serde(
264 rename = "@databaseField",
265 default,
266 skip_serializing_if = "Option::is_none"
267 )]
268 pub database_field: Option<bool>,
269 #[serde(
270 rename = "@mappingCount",
271 default,
272 skip_serializing_if = "Option::is_none"
273 )]
274 pub mapping_count: Option<i32>,
275 #[serde(
276 rename = "@memberPropertyField",
277 default,
278 skip_serializing_if = "Option::is_none"
279 )]
280 pub member_property_field: Option<bool>,
281 #[serde(
282 rename = "sharedItems",
283 default,
284 skip_serializing_if = "Option::is_none"
285 )]
286 pub shared_items: Option<XlsxSharedItems>,
287 #[serde(
288 rename = "fieldGroup",
289 default,
290 skip_serializing_if = "Option::is_none"
291 )]
292 pub field_group: Option<XlsxFieldGroup>,
293 #[serde(rename = "mpMap", default, skip_serializing_if = "Option::is_none")]
294 pub mp_map: Option<XlsxX>,
295 #[serde(rename = "extLst", default, skip_serializing_if = "Option::is_none")]
296 pub ext_lst: Option<XlsxExtLst>,
297}
298
299#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
301pub struct XlsxSharedItems {
302 #[serde(
303 rename = "@containsSemiMixedTypes",
304 default,
305 skip_serializing_if = "Option::is_none"
306 )]
307 pub contains_semi_mixed_types: Option<bool>,
308 #[serde(
309 rename = "@containsNonDate",
310 default,
311 skip_serializing_if = "Option::is_none"
312 )]
313 pub contains_non_date: Option<bool>,
314 #[serde(
315 rename = "@containsDate",
316 default,
317 skip_serializing_if = "Option::is_none"
318 )]
319 pub contains_date: Option<bool>,
320 #[serde(
321 rename = "@containsString",
322 default,
323 skip_serializing_if = "Option::is_none"
324 )]
325 pub contains_string: Option<bool>,
326 #[serde(
327 rename = "@containsBlank",
328 default,
329 skip_serializing_if = "Option::is_none"
330 )]
331 pub contains_blank: Option<bool>,
332 #[serde(
333 rename = "@containsMixedTypes",
334 default,
335 skip_serializing_if = "Option::is_none"
336 )]
337 pub contains_mixed_types: Option<bool>,
338 #[serde(
339 rename = "@containsNumber",
340 default,
341 skip_serializing_if = "Option::is_none"
342 )]
343 pub contains_number: Option<bool>,
344 #[serde(
345 rename = "@containsInteger",
346 default,
347 skip_serializing_if = "Option::is_none"
348 )]
349 pub contains_integer: Option<bool>,
350 #[serde(rename = "@minValue", default, skip_serializing_if = "Option::is_none")]
351 pub min_value: Option<f64>,
352 #[serde(rename = "@maxValue", default, skip_serializing_if = "Option::is_none")]
353 pub max_value: Option<f64>,
354 #[serde(rename = "@minDate", default, skip_serializing_if = "Option::is_none")]
355 pub min_date: Option<String>,
356 #[serde(rename = "@maxDate", default, skip_serializing_if = "Option::is_none")]
357 pub max_date: Option<String>,
358 #[serde(rename = "@count", default)]
359 pub count: i32,
360 #[serde(rename = "@longText", default, skip_serializing_if = "Option::is_none")]
361 pub long_text: Option<bool>,
362 #[serde(rename = "$value", default)]
363 pub items: Vec<XlsxSharedItem>,
364}
365
366#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
368#[serde(rename_all = "lowercase")]
369pub enum XlsxSharedItem {
370 M(XlsxSharedItemData),
371 N(XlsxSharedItemData),
372 B(XlsxSharedItemData),
373 E(XlsxSharedItemData),
374 S(XlsxSharedItemData),
375 D(XlsxSharedItemData),
376}
377
378#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
380pub struct XlsxSharedItemData {
381 #[serde(rename = "@v", default, skip_serializing_if = "Option::is_none")]
382 pub v: Option<String>,
383 #[serde(rename = "@xmlns", default, skip_serializing_if = "Option::is_none")]
384 pub xmlns: Option<String>,
385 #[serde(rename = "@u", default, skip_serializing_if = "Option::is_none")]
386 pub u: Option<bool>,
387 #[serde(rename = "@f", default, skip_serializing_if = "Option::is_none")]
388 pub f: Option<bool>,
389 #[serde(rename = "@c", default, skip_serializing_if = "Option::is_none")]
390 pub c: Option<String>,
391 #[serde(rename = "@cp", default, skip_serializing_if = "Option::is_none")]
392 pub cp: Option<i32>,
393 #[serde(rename = "@in", default, skip_serializing_if = "Option::is_none")]
394 pub r#in: Option<i32>,
395 #[serde(rename = "@bc", default, skip_serializing_if = "Option::is_none")]
396 pub bc: Option<String>,
397 #[serde(rename = "@fc", default, skip_serializing_if = "Option::is_none")]
398 pub fc: Option<String>,
399 #[serde(rename = "@i", default, skip_serializing_if = "Option::is_none")]
400 pub i: Option<bool>,
401 #[serde(rename = "@un", default, skip_serializing_if = "Option::is_none")]
402 pub un: Option<bool>,
403 #[serde(rename = "@st", default, skip_serializing_if = "Option::is_none")]
404 pub st: Option<bool>,
405 #[serde(rename = "@b", default, skip_serializing_if = "Option::is_none")]
406 pub b: Option<bool>,
407 #[serde(rename = "tpls", default, skip_serializing_if = "Option::is_none")]
408 pub tpls: Option<XlsxTuples>,
409 #[serde(rename = "x", default, skip_serializing_if = "Option::is_none")]
410 pub x: Option<AttrValInt>,
411}
412
413#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
415pub struct XlsxTuples {}
416
417#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
419pub struct XlsxFieldGroup {}
420
421#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
423pub struct XlsxCacheHierarchies {}
424
425#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
427pub struct XlsxKpis {}
428
429#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
431pub struct XlsxTupleCache {}
432
433#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
435pub struct XlsxCalculatedItems {}
436
437#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
439pub struct XlsxCalculatedMembers {}
440
441#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
443pub struct XlsxDimensions {}
444
445#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
447pub struct XlsxMeasureGroups {}
448
449#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
451pub struct XlsxMaps {}
452
453#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
455pub struct XlsxX {}
456
457#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
459#[serde(rename = "x14:pivotCacheDefinition")]
460pub struct XlsxX14PivotCacheDefinition {
461 #[serde(rename = "@xmlns", default, skip_serializing_if = "Option::is_none")]
462 pub xmlns: Option<String>,
463 #[serde(rename = "@pivotCacheId", default)]
464 pub pivot_cache_id: i32,
465}
466
467#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
469#[serde(rename = "pivotCacheDefinition")]
470pub struct DecodeX14PivotCacheDefinition {
471 #[serde(rename = "@pivotCacheId", default)]
472 pub pivot_cache_id: i32,
473}