Skip to main content

excelize_rs/xml/
chart_sheet.rs

1//! Chartsheet part (`chartsheets/sheet*.xml`).
2//!
3//! Ported from Go `xmlChartSheet.go`.
4
5use serde::{Deserialize, Serialize};
6
7use super::common::{XlsxColor, XlsxExtLst, XlsxInnerXml};
8
9/// Directly maps the chartsheet element of Chartsheet Parts in a
10/// SpreadsheetML document.
11#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(rename = "chartsheet")]
13pub struct XlsxChartsheet {
14    #[serde(rename = "@xmlns", default)]
15    pub xmlns: Option<String>,
16    #[serde(rename = "sheetPr", default)]
17    pub sheet_pr: Option<XlsxChartsheetPr>,
18    #[serde(rename = "sheetViews", default)]
19    pub sheet_views: Option<XlsxChartsheetViews>,
20    #[serde(rename = "sheetProtection", default)]
21    pub sheet_protection: Option<XlsxChartsheetProtection>,
22    #[serde(rename = "customSheetViews", default)]
23    pub custom_sheet_views: Option<XlsxCustomChartsheetViews>,
24    #[serde(rename = "pageMargins", default)]
25    pub page_margins: Option<XlsxPageMargins>,
26    #[serde(rename = "pageSetup", default)]
27    pub page_setup: Option<XlsxPageSetUp>,
28    #[serde(rename = "headerFooter", default)]
29    pub header_footer: Option<XlsxHeaderFooter>,
30    #[serde(rename = "drawing", default)]
31    pub drawing: Option<XlsxDrawing>,
32    #[serde(rename = "drawingHF", default)]
33    pub drawing_hf: Option<XlsxDrawingHF>,
34    #[serde(rename = "picture", default)]
35    pub picture: Option<XlsxPicture>,
36    #[serde(rename = "webPublishItems", default)]
37    pub web_publish_items: Option<XlsxInnerXml>,
38    #[serde(rename = "extLst", default)]
39    pub ext_lst: Option<XlsxExtLst>,
40}
41
42/// Specifies chart sheet properties.
43#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
44#[serde(rename = "sheetPr")]
45pub struct XlsxChartsheetPr {
46    #[serde(rename = "@published", default)]
47    pub published: Option<bool>,
48    #[serde(rename = "@codeName", default)]
49    pub code_name: Option<String>,
50    #[serde(rename = "tabColor", default)]
51    pub tab_color: Option<XlsxColor>,
52}
53
54/// Specifies chart sheet views.
55#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
56#[serde(rename = "sheetViews")]
57pub struct XlsxChartsheetViews {
58    #[serde(rename = "sheetView", default)]
59    pub sheet_view: Vec<XlsxChartsheetView>,
60    #[serde(rename = "extLst", default)]
61    pub ext_lst: Vec<XlsxExtLst>,
62}
63
64/// Defines custom view properties for chart sheets.
65#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
66#[serde(rename = "sheetView")]
67pub struct XlsxChartsheetView {
68    #[serde(rename = "@tabSelected", default)]
69    pub tab_selected: Option<bool>,
70    #[serde(rename = "@zoomScale", default)]
71    pub zoom_scale: Option<u32>,
72    #[serde(rename = "@workbookViewId")]
73    pub workbook_view_id: u32,
74    #[serde(rename = "@zoomToFit", default)]
75    pub zoom_to_fit: Option<bool>,
76    #[serde(rename = "extLst", default)]
77    pub ext_lst: Vec<XlsxExtLst>,
78}
79
80/// Expresses the chart sheet protection options to enforce when the chart
81/// sheet is protected.
82#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
83#[serde(rename = "sheetProtection")]
84pub struct XlsxChartsheetProtection {
85    #[serde(rename = "@algorithmName", default)]
86    pub algorithm_name: Option<String>,
87    #[serde(rename = "@hashValue", default)]
88    pub hash_value: Option<String>,
89    #[serde(rename = "@saltValue", default)]
90    pub salt_value: Option<String>,
91    #[serde(rename = "@spinCount", default)]
92    pub spin_count: Option<u32>,
93    #[serde(rename = "@content", default)]
94    pub content: Option<bool>,
95    #[serde(rename = "@objects", default)]
96    pub objects: Option<bool>,
97}
98
99/// Collection of custom Chart Sheet View information.
100#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
101#[serde(rename = "customSheetViews")]
102pub struct XlsxCustomChartsheetViews {
103    #[serde(rename = "customSheetView", default)]
104    pub custom_sheet_view: Vec<XlsxCustomChartsheetView>,
105}
106
107/// Defines custom view properties for chart sheets.
108#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
109#[serde(rename = "customSheetView")]
110pub struct XlsxCustomChartsheetView {
111    #[serde(rename = "@guid")]
112    pub guid: String,
113    #[serde(rename = "@scale", default)]
114    pub scale: Option<u32>,
115    #[serde(rename = "@state", default)]
116    pub state: Option<String>,
117    #[serde(rename = "@zoomToFit", default)]
118    pub zoom_to_fit: Option<bool>,
119    #[serde(rename = "pageMargins", default)]
120    pub page_margins: Vec<XlsxPageMargins>,
121    #[serde(rename = "pageSetup", default)]
122    pub page_setup: Vec<XlsxPageSetUp>,
123    #[serde(rename = "headerFooter", default)]
124    pub header_footer: Vec<XlsxHeaderFooter>,
125}
126
127/// Page margins for a sheet or a custom sheet view.
128#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
129#[serde(rename = "pageMargins")]
130pub struct XlsxPageMargins {
131    #[serde(rename = "@left")]
132    pub left: f64,
133    #[serde(rename = "@right")]
134    pub right: f64,
135    #[serde(rename = "@top")]
136    pub top: f64,
137    #[serde(rename = "@bottom")]
138    pub bottom: f64,
139    #[serde(rename = "@header")]
140    pub header: f64,
141    #[serde(rename = "@footer")]
142    pub footer: f64,
143}
144
145/// Page setup settings for the worksheet.
146#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
147#[serde(rename = "pageSetup")]
148pub struct XlsxPageSetUp {
149    #[serde(rename = "@blackAndWhite", default)]
150    pub black_and_white: Option<bool>,
151    #[serde(rename = "@cellComments", default)]
152    pub cell_comments: Option<String>,
153    #[serde(rename = "@copies", default)]
154    pub copies: Option<i64>,
155    #[serde(rename = "@draft", default)]
156    pub draft: Option<bool>,
157    #[serde(rename = "@errors", default)]
158    pub errors: Option<String>,
159    #[serde(rename = "@firstPageNumber", default)]
160    pub first_page_number: Option<String>,
161    #[serde(rename = "@fitToHeight", default)]
162    pub fit_to_height: Option<i64>,
163    #[serde(rename = "@fitToWidth", default)]
164    pub fit_to_width: Option<i64>,
165    #[serde(rename = "@horizontalDpi", default)]
166    pub horizontal_dpi: Option<String>,
167    #[serde(rename = "@r:id", default)]
168    pub r_id: Option<String>,
169    #[serde(rename = "@orientation", default)]
170    pub orientation: Option<String>,
171    #[serde(rename = "@pageOrder", default)]
172    pub page_order: Option<String>,
173    #[serde(rename = "@paperHeight", default)]
174    pub paper_height: Option<String>,
175    #[serde(rename = "@paperSize", default)]
176    pub paper_size: Option<i64>,
177    #[serde(rename = "@paperWidth", default)]
178    pub paper_width: Option<String>,
179    #[serde(rename = "@scale", default)]
180    pub scale: Option<i64>,
181    #[serde(rename = "@useFirstPageNumber", default)]
182    pub use_first_page_number: Option<bool>,
183    #[serde(rename = "@usePrinterDefaults", default)]
184    pub use_printer_defaults: Option<bool>,
185    #[serde(rename = "@verticalDpi", default)]
186    pub vertical_dpi: Option<String>,
187}
188
189/// When printed or viewed in page layout view, each page of a worksheet can
190/// have a page header, a page footer, or both.
191#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
192#[serde(rename = "headerFooter")]
193pub struct XlsxHeaderFooter {
194    #[serde(rename = "@differentOddEven", default)]
195    pub different_odd_even: Option<bool>,
196    #[serde(rename = "@differentFirst", default)]
197    pub different_first: Option<bool>,
198    #[serde(rename = "@scaleWithDoc", default)]
199    pub scale_with_doc: Option<bool>,
200    #[serde(rename = "@alignWithMargins", default)]
201    pub align_with_margins: Option<bool>,
202    #[serde(rename = "oddHeader", default)]
203    pub odd_header: Option<String>,
204    #[serde(rename = "oddFooter", default)]
205    pub odd_footer: Option<String>,
206    #[serde(rename = "evenHeader", default)]
207    pub even_header: Option<String>,
208    #[serde(rename = "evenFooter", default)]
209    pub even_footer: Option<String>,
210    #[serde(rename = "firstHeader", default)]
211    pub first_header: Option<String>,
212    #[serde(rename = "firstFooter", default)]
213    pub first_footer: Option<String>,
214}
215
216/// Drawing reference for a chartsheet.
217#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
218#[serde(rename = "drawing")]
219pub struct XlsxDrawing {
220    #[serde(rename = "@r:id", default)]
221    pub r_id: Option<String>,
222}
223
224/// Drawing reference in header/footer.
225#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
226#[serde(rename = "drawingHF")]
227pub struct XlsxDrawingHF {
228    #[serde(flatten, default)]
229    pub inner: XlsxInnerXml,
230}
231
232/// Picture reference for a chartsheet.
233#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
234#[serde(rename = "picture")]
235pub struct XlsxPicture {
236    #[serde(rename = "@r:id", default)]
237    pub r_id: Option<String>,
238}