umya_spreadsheet/structs/
chart.rs1use crate::drawing::charts::NumericValue;
2use crate::drawing::charts::RichText;
3use crate::office2010::drawing::charts::Style;
4use crate::structs::drawing::charts::Area3DChart;
5use crate::structs::drawing::charts::AreaChart;
6use crate::structs::drawing::charts::AreaChartSeries;
7use crate::structs::drawing::charts::AreaChartSeriesList;
8use crate::structs::drawing::charts::AxisId;
9use crate::structs::drawing::charts::AxisPositionValues;
10use crate::structs::drawing::charts::Bar3DChart;
11use crate::structs::drawing::charts::BarChart;
12use crate::structs::drawing::charts::BarDirectionValues;
13use crate::structs::drawing::charts::Bubble3D;
14use crate::structs::drawing::charts::BubbleChart;
15use crate::structs::drawing::charts::BubbleSize;
16use crate::structs::drawing::charts::CategoryAxis;
17use crate::structs::drawing::charts::CategoryAxisData;
18use crate::structs::drawing::charts::ChartSpace;
19use crate::structs::drawing::charts::ChartText;
20use crate::structs::drawing::charts::CrossBetweenValues;
21use crate::structs::drawing::charts::DisplayBlanksAsValues;
22use crate::structs::drawing::charts::DoughnutChart;
23use crate::structs::drawing::charts::GroupingValues;
24use crate::structs::drawing::charts::InvertIfNegative;
25use crate::structs::drawing::charts::Layout;
26use crate::structs::drawing::charts::LegendPositionValues;
27use crate::structs::drawing::charts::Line3DChart;
28use crate::structs::drawing::charts::LineChart;
29use crate::structs::drawing::charts::MajorGridlines;
30use crate::structs::drawing::charts::OfPieChart;
31use crate::structs::drawing::charts::OfPieValues;
32use crate::structs::drawing::charts::OrientationValues;
33use crate::structs::drawing::charts::Pie3DChart;
34use crate::structs::drawing::charts::PieChart;
35use crate::structs::drawing::charts::PlotArea;
36use crate::structs::drawing::charts::PrintSettings;
37use crate::structs::drawing::charts::RadarChart;
38use crate::structs::drawing::charts::RightAngleAxes;
39use crate::structs::drawing::charts::RotateX;
40use crate::structs::drawing::charts::RotateY;
41use crate::structs::drawing::charts::ScatterChart;
42use crate::structs::drawing::charts::SeriesText;
43use crate::structs::drawing::charts::ShapeValues;
44use crate::structs::drawing::charts::ShowLeaderLines;
45use crate::structs::drawing::charts::Smooth;
46use crate::structs::drawing::charts::StringLiteral;
47use crate::structs::drawing::charts::StringPoint;
48use crate::structs::drawing::charts::StringReference;
49use crate::structs::drawing::charts::TextProperties;
50use crate::structs::drawing::charts::TickLabelPositionValues;
51use crate::structs::drawing::charts::TickMarkValues;
52use crate::structs::drawing::charts::Title;
53use crate::structs::drawing::charts::ValueAxis;
54use crate::structs::drawing::charts::Values;
55use crate::structs::drawing::charts::View3D;
56use crate::structs::drawing::charts::XValues;
57use crate::structs::drawing::charts::YValues;
58use crate::structs::drawing::spreadsheet::GraphicFrame;
59use crate::structs::drawing::spreadsheet::MarkerType;
60use crate::structs::drawing::spreadsheet::TwoCellAnchor;
61use crate::structs::drawing::Paragraph;
62use crate::structs::drawing::Run;
63use crate::structs::drawing::RunProperties;
64use crate::structs::rich_text;
65use crate::structs::ChartType;
66use crate::traits::AdjustmentCoordinate;
67use crate::traits::AdjustmentCoordinateWithSheet;
68
69#[derive(Clone, Debug)]
138pub struct Chart {
139 two_cell_anchor: Box<TwoCellAnchor>,
140 default_language: String,
141}
142
143impl Default for Chart {
144 #[inline]
145 fn default() -> Self {
146 Self {
147 two_cell_anchor: Box::new(TwoCellAnchor::default()),
148 default_language: "en-GB".into(),
149 }
150 }
151}
152impl Chart {
153 #[inline]
154 pub fn set_title<S: Into<String>>(&mut self, value: S) -> &mut Self {
155 let title = self.make_title(value);
156 self.get_chart_space_mut().get_chart_mut().set_title(title);
157 self
158 }
159
160 #[inline]
161 pub fn set_grouping(&mut self, value: GroupingValues) -> &mut Self {
162 self.get_plot_area_mut().set_grouping(value);
163 self
164 }
165
166 pub fn set_vertical_title<S: Into<String>>(&mut self, value: S) -> &mut Self {
167 let title = self.make_title(value);
168 let plot_area = self.get_plot_area_mut();
169 match plot_area.get_value_axis_mut().len() {
170 1 => {
171 if let Some(v) = plot_area.get_value_axis_mut().get_mut(0) {
172 v.set_title(title);
173 }
174 }
175 2 => {
176 if let Some(v) = plot_area.get_value_axis_mut().get_mut(1) {
177 v.set_title(title);
178 }
179 }
180 _ => {}
181 }
182 self
183 }
184
185 pub fn set_horizontal_title<S: Into<String>>(&mut self, value: S) -> &mut Self {
186 let title = self.make_title(value);
187 let plot_area = self.get_plot_area_mut();
188 match plot_area.get_value_axis_mut().len() {
189 1 => {
190 if let Some(v) = plot_area.get_category_axis_mut().get_mut(0) {
191 v.set_title(title);
192 }
193 }
194 2 => {
195 if let Some(v) = plot_area.get_value_axis_mut().get_mut(0) {
196 v.set_title(title);
197 }
198 }
199 _ => {}
200 }
201 self
202 }
203
204 pub fn set_series_title<S: Into<String>>(&mut self, value: Vec<S>) -> &mut Self {
205 let mut value_iter = value.into_iter().map(Into::into);
206 for series in self
207 .get_area_chart_series_list_mut()
208 .get_area_chart_series_mut()
209 {
210 let value_raw = value_iter.next();
211 if let Some(v) = value_raw {
212 let mut chart_text = ChartText::default();
213 let mut numeric_value = NumericValue::default();
214 numeric_value.set_text(v);
215 chart_text.set_numeric_value(numeric_value);
216 series.set_chart_text(chart_text);
217 }
218 }
219 self
220 }
221
222 pub fn set_series_point_title<S: Into<String>>(&mut self, value: Vec<S>) -> &mut Self {
223 let mut string_literal = StringLiteral::default();
224 for v in value {
225 let mut string_point = StringPoint::default();
226 string_point.get_numeric_value_mut().set_text(v);
227 string_literal.add_string_point_list(string_point);
228 }
229 for series in self
230 .get_area_chart_series_list_mut()
231 .get_area_chart_series_mut()
232 {
233 match series.get_category_axis_data_mut() {
234 Some(v) => {
235 v.remove_string_reference();
236 v.set_string_literal(string_literal.clone());
237 }
238 None => {
239 let mut obj = CategoryAxisData::default();
240 obj.set_string_literal(string_literal.clone());
241 series.set_category_axis_data(obj);
242 }
243 }
244 }
245 self
246 }
247
248 #[inline]
249 pub fn get_plot_area_mut(&mut self) -> &mut PlotArea {
250 self.get_chart_space_mut()
251 .get_chart_mut()
252 .get_plot_area_mut()
253 }
254
255 #[inline]
256 pub fn get_area_chart_series_list_mut(&mut self) -> &mut AreaChartSeriesList {
257 self.get_chart_space_mut()
258 .get_chart_mut()
259 .get_plot_area_mut()
260 .get_area_chart_series_list_mut()
261 }
262
263 #[inline]
264 pub fn get_two_cell_anchor(&self) -> &TwoCellAnchor {
265 &self.two_cell_anchor
266 }
267
268 #[inline]
269 pub fn get_two_cell_anchor_mut(&mut self) -> &mut TwoCellAnchor {
270 &mut self.two_cell_anchor
271 }
272
273 #[inline]
274 pub fn set_two_cell_anchor(&mut self, value: TwoCellAnchor) -> &mut Self {
275 self.two_cell_anchor = Box::new(value);
276 self
277 }
278
279 #[inline]
280 pub fn set_default_language<S: Into<String>>(&mut self, value: S) -> &mut Self {
281 self.default_language = value.into();
282 self
283 }
284
285 pub fn get_chart_space(&self) -> &ChartSpace {
286 self.two_cell_anchor
287 .get_graphic_frame()
288 .expect("Non-ChartSpace.")
289 .get_graphic()
290 .get_graphic_data()
291 .get_chart_space()
292 }
293
294 pub fn get_chart_space_mut(&mut self) -> &mut ChartSpace {
295 self.two_cell_anchor
296 .get_graphic_frame_mut()
297 .expect("Non-ChartSpace.")
298 .get_graphic_mut()
299 .get_graphic_data_mut()
300 .get_chart_space_mut()
301 }
302
303 pub fn new_chart(
304 &mut self,
305 chart_type: ChartType,
306 from_marker: MarkerType,
307 to_marker: MarkerType,
308 area_chart_series_list: Vec<&str>,
309 ) -> &mut Self {
310 self.two_cell_anchor.set_from_marker(from_marker);
311 self.two_cell_anchor.set_to_marker(to_marker);
312
313 match chart_type {
314 ChartType::LineChart => {
315 self.new_chart_line_chart(area_chart_series_list);
316 }
317 ChartType::Line3DChart => {
318 self.new_chart_line_3d_chart(area_chart_series_list);
319 }
320 ChartType::PieChart => {
321 self.new_chart_pie_chart(area_chart_series_list);
322 }
323 ChartType::Pie3DChart => {
324 self.new_chart_pie_3d_chart(area_chart_series_list);
325 }
326 ChartType::DoughnutChart => {
327 self.new_chart_doughnut_chart(area_chart_series_list);
328 }
329 ChartType::AreaChart => {
330 self.new_chart_area_chart(area_chart_series_list);
331 }
332 ChartType::Area3DChart => {
333 self.new_chart_area_3d_chart(area_chart_series_list);
334 }
335 ChartType::BarChart => {
336 self.new_chart_bar_chart(area_chart_series_list);
337 }
338 ChartType::Bar3DChart => {
339 self.new_chart_bar_3d_chart(area_chart_series_list);
340 }
341 ChartType::OfPieChart => {
342 self.new_chart_of_pie_chart(area_chart_series_list);
343 }
344 ChartType::BubbleChart => {
345 self.new_chart_bubble_chart(area_chart_series_list);
346 }
347 ChartType::RadarChart => {
348 self.new_chart_radar_chart(area_chart_series_list);
349 }
350 ChartType::ScatterChart => {
351 self.new_chart_scatter_chart(area_chart_series_list);
352 }
353 }
354
355 self
356 }
357
358 #[inline]
359 pub fn get_coordinate(&self) -> String {
360 self.two_cell_anchor.get_from_marker().get_coordinate()
361 }
362
363 #[inline]
364 pub(crate) fn get_col(&self) -> &u32 {
365 self.two_cell_anchor.get_from_marker().get_col()
366 }
367
368 #[inline]
369 pub(crate) fn get_row(&self) -> &u32 {
370 self.two_cell_anchor.get_from_marker().get_row()
371 }
372
373 fn convert_series(
374 &self,
375 area_chart_series_list: Vec<&str>,
376 smooth: bool,
377 ) -> AreaChartSeriesList {
378 let mut acsl_obj = AreaChartSeriesList::default();
379 area_chart_series_list
380 .into_iter()
381 .enumerate()
382 .for_each(|(idx, area_chart_series)| {
383 let mut values = Values::default();
384 values
385 .get_number_reference_mut()
386 .get_formula_mut()
387 .set_address_str(area_chart_series);
388 values
389 .get_number_reference_mut()
390 .get_numbering_cache_mut()
391 .get_format_code_mut()
392 .set_text("General");
393
394 let mut acs_obj = AreaChartSeries::default();
395 acs_obj.get_index_mut().set_val(idx as u32);
396 acs_obj.get_order_mut().set_val(idx as u32);
397 acs_obj.set_values(values);
398 if smooth {
399 acs_obj.set_smooth(Smooth::default());
400 } else {
401 let mut invert_if_negative = InvertIfNegative::default();
402 invert_if_negative.set_val(0f64);
403 acs_obj.set_invert_if_negative(invert_if_negative);
404 }
405 acsl_obj.add_area_chart_series(acs_obj);
406 });
407 acsl_obj
408 }
409
410 pub(crate) fn new_chart_line_chart(&mut self, area_chart_series_list: Vec<&str>) {
411 let acsl_obj = self.convert_series(area_chart_series_list, true);
412
413 let mut axis_id1 = AxisId::default();
414 axis_id1.set_val(213468160);
415
416 let mut axis_id2 = AxisId::default();
417 axis_id2.set_val(169590080);
418
419 let mut line_chart = LineChart::default();
420 line_chart
421 .get_grouping_mut()
422 .set_val(GroupingValues::Stacked);
423 line_chart.set_area_chart_series_list(acsl_obj);
424 line_chart.get_show_marker_mut().set_val(true);
425 line_chart.add_axis_id(axis_id1);
426 line_chart.add_axis_id(axis_id2);
427
428 let mut category_axis = CategoryAxis::default();
429 category_axis.get_axis_id_mut().set_val(213468160);
430 category_axis
431 .get_scaling_mut()
432 .get_orientation_mut()
433 .set_val(OrientationValues::MinMax);
434 category_axis
435 .get_major_tick_mark_mut()
436 .set_val(TickMarkValues::None);
437 category_axis
438 .get_minor_tick_mark_mut()
439 .set_val(TickMarkValues::None);
440 category_axis
441 .get_tick_label_position_mut()
442 .set_val(TickLabelPositionValues::NextTo);
443 category_axis
444 .get_tick_crossing_axis_mut()
445 .set_val(169590080);
446 category_axis.get_auto_labeled_mut().set_val(true);
447 category_axis.get_label_offset_mut().set_val(100);
448
449 let major_gridlines = MajorGridlines::default();
450
451 let mut value_axis = ValueAxis::default();
452 value_axis.get_axis_id_mut().set_val(169590080);
453 value_axis
454 .get_scaling_mut()
455 .get_orientation_mut()
456 .set_val(OrientationValues::MinMax);
457 value_axis
458 .get_axis_position_mut()
459 .set_val(AxisPositionValues::Left);
460 value_axis.set_major_gridlines(major_gridlines);
461 value_axis
462 .get_numbering_format_mut()
463 .set_format_code("General");
464 value_axis
465 .get_numbering_format_mut()
466 .set_source_linked(true);
467 value_axis
468 .get_major_tick_mark_mut()
469 .set_val(TickMarkValues::None);
470 value_axis
471 .get_minor_tick_mark_mut()
472 .set_val(TickMarkValues::None);
473 value_axis
474 .get_tick_label_position_mut()
475 .set_val(TickLabelPositionValues::NextTo);
476 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
477
478 let layout = Layout::default();
479 let mut style = Style::default();
480 style.set_val('2');
481
482 let mut graphic_frame = GraphicFrame::default();
483 graphic_frame
484 .get_graphic_mut()
485 .get_graphic_data_mut()
486 .get_chart_space_mut()
487 .get_editing_language_mut()
488 .set_val(&self.default_language);
489 graphic_frame
490 .get_graphic_mut()
491 .get_graphic_data_mut()
492 .get_chart_space_mut()
493 .get_chart_mut()
494 .get_plot_area_mut()
495 .set_line_chart(line_chart);
496 graphic_frame
497 .get_graphic_mut()
498 .get_graphic_data_mut()
499 .get_chart_space_mut()
500 .get_chart_mut()
501 .get_plot_area_mut()
502 .add_category_axis(category_axis);
503 graphic_frame
504 .get_graphic_mut()
505 .get_graphic_data_mut()
506 .get_chart_space_mut()
507 .get_chart_mut()
508 .get_plot_area_mut()
509 .add_value_axis(value_axis);
510 graphic_frame
511 .get_graphic_mut()
512 .get_graphic_data_mut()
513 .get_chart_space_mut()
514 .get_chart_mut()
515 .get_legend_mut()
516 .get_legend_position_mut()
517 .set_val(LegendPositionValues::Right);
518 graphic_frame
519 .get_graphic_mut()
520 .get_graphic_data_mut()
521 .get_chart_space_mut()
522 .get_chart_mut()
523 .get_legend_mut()
524 .set_layout(layout);
525 graphic_frame
526 .get_graphic_mut()
527 .get_graphic_data_mut()
528 .get_chart_space_mut()
529 .get_chart_mut()
530 .get_plot_visible_only_mut()
531 .set_val(true);
532 graphic_frame
533 .get_graphic_mut()
534 .get_graphic_data_mut()
535 .get_chart_space_mut()
536 .get_chart_mut()
537 .get_display_blanks_as_mut()
538 .set_val(DisplayBlanksAsValues::Zero);
539 graphic_frame
540 .get_graphic_mut()
541 .get_graphic_data_mut()
542 .get_chart_space_mut()
543 .set_print_settings(self.make_print_settings());
544 graphic_frame
545 .get_graphic_mut()
546 .get_graphic_data_mut()
547 .get_chart_space_mut()
548 .set_style(style);
549 self.two_cell_anchor.set_graphic_frame(graphic_frame);
550 }
551
552 pub(crate) fn new_chart_line_3d_chart(&mut self, area_chart_series_list: Vec<&str>) {
553 let mut rotate_x = RotateX::default();
554 let mut rotate_y = RotateY::default();
555 let mut right_angle_axes = RightAngleAxes::default();
556 rotate_x.set_val(15);
557 rotate_y.set_val(10);
558 right_angle_axes.set_val(true);
559 let mut view_3d = View3D::default();
560 view_3d.set_rotate_x(rotate_x);
561 view_3d.set_rotate_y(rotate_y);
562 view_3d.set_right_angle_axes(right_angle_axes);
563
564 let acsl_obj = self.convert_series(area_chart_series_list, true);
565
566 let mut axis_id1 = AxisId::default();
567 axis_id1.set_val(213468160);
568
569 let mut axis_id2 = AxisId::default();
570 axis_id2.set_val(169590080);
571
572 let mut line_3d_chart = Line3DChart::default();
573 line_3d_chart
574 .get_grouping_mut()
575 .set_val(GroupingValues::Stacked);
576 line_3d_chart.set_area_chart_series_list(acsl_obj);
577 line_3d_chart.add_axis_id(axis_id1);
578 line_3d_chart.add_axis_id(axis_id2);
579
580 let mut category_axis = CategoryAxis::default();
581 category_axis.get_axis_id_mut().set_val(213468160);
582 category_axis
583 .get_scaling_mut()
584 .get_orientation_mut()
585 .set_val(OrientationValues::MinMax);
586 category_axis
587 .get_major_tick_mark_mut()
588 .set_val(TickMarkValues::None);
589 category_axis
590 .get_minor_tick_mark_mut()
591 .set_val(TickMarkValues::None);
592 category_axis
593 .get_tick_label_position_mut()
594 .set_val(TickLabelPositionValues::NextTo);
595 category_axis
596 .get_tick_crossing_axis_mut()
597 .set_val(169590080);
598 category_axis.get_auto_labeled_mut().set_val(true);
599 category_axis.get_label_offset_mut().set_val(100);
600
601 let major_gridlines = MajorGridlines::default();
602
603 let mut value_axis = ValueAxis::default();
604 value_axis.get_axis_id_mut().set_val(169590080);
605 value_axis
606 .get_scaling_mut()
607 .get_orientation_mut()
608 .set_val(OrientationValues::MinMax);
609 value_axis
610 .get_axis_position_mut()
611 .set_val(AxisPositionValues::Left);
612 value_axis.set_major_gridlines(major_gridlines);
613 value_axis
614 .get_numbering_format_mut()
615 .set_format_code("General");
616 value_axis
617 .get_numbering_format_mut()
618 .set_source_linked(true);
619 value_axis
620 .get_major_tick_mark_mut()
621 .set_val(TickMarkValues::None);
622 value_axis
623 .get_minor_tick_mark_mut()
624 .set_val(TickMarkValues::None);
625 value_axis
626 .get_tick_label_position_mut()
627 .set_val(TickLabelPositionValues::NextTo);
628 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
629
630 let layout = Layout::default();
631 let mut style = Style::default();
632 style.set_val('2');
633
634 let mut graphic_frame = GraphicFrame::default();
635 graphic_frame
636 .get_graphic_mut()
637 .get_graphic_data_mut()
638 .get_chart_space_mut()
639 .get_editing_language_mut()
640 .set_val(&self.default_language);
641 graphic_frame
642 .get_graphic_mut()
643 .get_graphic_data_mut()
644 .get_chart_space_mut()
645 .get_chart_mut()
646 .set_view_3d(view_3d);
647 graphic_frame
648 .get_graphic_mut()
649 .get_graphic_data_mut()
650 .get_chart_space_mut()
651 .get_chart_mut()
652 .get_plot_area_mut()
653 .set_line_3d_chart(line_3d_chart);
654 graphic_frame
655 .get_graphic_mut()
656 .get_graphic_data_mut()
657 .get_chart_space_mut()
658 .get_chart_mut()
659 .get_plot_area_mut()
660 .add_category_axis(category_axis);
661 graphic_frame
662 .get_graphic_mut()
663 .get_graphic_data_mut()
664 .get_chart_space_mut()
665 .get_chart_mut()
666 .get_plot_area_mut()
667 .add_value_axis(value_axis);
668 graphic_frame
669 .get_graphic_mut()
670 .get_graphic_data_mut()
671 .get_chart_space_mut()
672 .get_chart_mut()
673 .get_legend_mut()
674 .get_legend_position_mut()
675 .set_val(LegendPositionValues::Right);
676 graphic_frame
677 .get_graphic_mut()
678 .get_graphic_data_mut()
679 .get_chart_space_mut()
680 .get_chart_mut()
681 .get_legend_mut()
682 .set_layout(layout);
683 graphic_frame
684 .get_graphic_mut()
685 .get_graphic_data_mut()
686 .get_chart_space_mut()
687 .get_chart_mut()
688 .get_plot_visible_only_mut()
689 .set_val(true);
690 graphic_frame
691 .get_graphic_mut()
692 .get_graphic_data_mut()
693 .get_chart_space_mut()
694 .get_chart_mut()
695 .get_display_blanks_as_mut()
696 .set_val(DisplayBlanksAsValues::Zero);
697 graphic_frame
698 .get_graphic_mut()
699 .get_graphic_data_mut()
700 .get_chart_space_mut()
701 .set_print_settings(self.make_print_settings());
702 graphic_frame
703 .get_graphic_mut()
704 .get_graphic_data_mut()
705 .get_chart_space_mut()
706 .set_style(style);
707 self.two_cell_anchor.set_graphic_frame(graphic_frame);
708 }
709
710 pub(crate) fn new_chart_pie_chart(&mut self, area_chart_series_list: Vec<&str>) {
711 let acsl_obj = self.convert_series(area_chart_series_list, true);
712
713 let mut show_leader_lines = ShowLeaderLines::default();
714 show_leader_lines.set_val(true);
715
716 let mut pie_chart = PieChart::default();
717 pie_chart.get_vary_colors_mut().set_val(true);
718 pie_chart.set_area_chart_series_list(acsl_obj);
719 pie_chart
720 .get_data_labels_mut()
721 .set_show_leader_lines(show_leader_lines);
722
723 let layout = Layout::default();
724 let mut style = Style::default();
725 style.set_val('2');
726
727 let default_run_properties = RunProperties::default();
728 let mut end_paragraph_run_properties = RunProperties::default();
729 end_paragraph_run_properties.set_language(&self.default_language);
730 let mut paragraph = Paragraph::default();
731 paragraph
732 .get_paragraph_properties_mut()
733 .set_right_to_left("0");
734 paragraph
735 .get_paragraph_properties_mut()
736 .set_default_run_properties(default_run_properties);
737 paragraph.set_end_para_run_properties(end_paragraph_run_properties);
738
739 let mut text_properties = TextProperties::default();
740 text_properties.add_paragraph(paragraph);
741
742 let mut graphic_frame = GraphicFrame::default();
743 graphic_frame
744 .get_graphic_mut()
745 .get_graphic_data_mut()
746 .get_chart_space_mut()
747 .get_editing_language_mut()
748 .set_val(&self.default_language);
749 graphic_frame
750 .get_graphic_mut()
751 .get_graphic_data_mut()
752 .get_chart_space_mut()
753 .get_chart_mut()
754 .get_plot_area_mut()
755 .set_pie_chart(pie_chart);
756 graphic_frame
757 .get_graphic_mut()
758 .get_graphic_data_mut()
759 .get_chart_space_mut()
760 .get_chart_mut()
761 .get_legend_mut()
762 .get_legend_position_mut()
763 .set_val(LegendPositionValues::Right);
764 graphic_frame
765 .get_graphic_mut()
766 .get_graphic_data_mut()
767 .get_chart_space_mut()
768 .get_chart_mut()
769 .get_legend_mut()
770 .set_layout(layout);
771 graphic_frame
772 .get_graphic_mut()
773 .get_graphic_data_mut()
774 .get_chart_space_mut()
775 .get_chart_mut()
776 .get_legend_mut()
777 .set_text_properties(text_properties);
778 graphic_frame
779 .get_graphic_mut()
780 .get_graphic_data_mut()
781 .get_chart_space_mut()
782 .get_chart_mut()
783 .get_plot_visible_only_mut()
784 .set_val(true);
785 graphic_frame
786 .get_graphic_mut()
787 .get_graphic_data_mut()
788 .get_chart_space_mut()
789 .get_chart_mut()
790 .get_display_blanks_as_mut()
791 .set_val(DisplayBlanksAsValues::Gap);
792 graphic_frame
793 .get_graphic_mut()
794 .get_graphic_data_mut()
795 .get_chart_space_mut()
796 .set_print_settings(self.make_print_settings());
797 graphic_frame
798 .get_graphic_mut()
799 .get_graphic_data_mut()
800 .get_chart_space_mut()
801 .set_style(style);
802 self.two_cell_anchor.set_graphic_frame(graphic_frame);
803 }
804
805 pub(crate) fn new_chart_pie_3d_chart(&mut self, area_chart_series_list: Vec<&str>) {
806 let mut rotate_x = RotateX::default();
807 let mut rotate_y = RotateY::default();
808 let mut right_angle_axes = RightAngleAxes::default();
809 rotate_x.set_val(15);
810 rotate_y.set_val(10);
811 right_angle_axes.set_val(true);
812 let mut view_3d = View3D::default();
813 view_3d.set_rotate_x(rotate_x);
814 view_3d.set_rotate_y(rotate_y);
815 view_3d.set_right_angle_axes(right_angle_axes);
816
817 let acsl_obj = self.convert_series(area_chart_series_list, true);
818
819 let mut show_leader_lines = ShowLeaderLines::default();
820 show_leader_lines.set_val(true);
821
822 let mut pie_3d_chart = Pie3DChart::default();
823 pie_3d_chart.get_vary_colors_mut().set_val(true);
824 pie_3d_chart.set_area_chart_series_list(acsl_obj);
825 pie_3d_chart
826 .get_data_labels_mut()
827 .set_show_leader_lines(show_leader_lines);
828
829 let layout = Layout::default();
830 let mut style = Style::default();
831 style.set_val('2');
832
833 let default_run_properties = RunProperties::default();
834 let mut end_paragraph_run_properties = RunProperties::default();
835 end_paragraph_run_properties.set_language(&self.default_language);
836 let mut paragraph = Paragraph::default();
837 paragraph
838 .get_paragraph_properties_mut()
839 .set_right_to_left("0");
840 paragraph
841 .get_paragraph_properties_mut()
842 .set_default_run_properties(default_run_properties);
843 paragraph.set_end_para_run_properties(end_paragraph_run_properties);
844
845 let mut text_properties = TextProperties::default();
846 text_properties.add_paragraph(paragraph);
847
848 let mut graphic_frame = GraphicFrame::default();
849 graphic_frame
850 .get_graphic_mut()
851 .get_graphic_data_mut()
852 .get_chart_space_mut()
853 .get_editing_language_mut()
854 .set_val(&self.default_language);
855 graphic_frame
856 .get_graphic_mut()
857 .get_graphic_data_mut()
858 .get_chart_space_mut()
859 .get_chart_mut()
860 .set_view_3d(view_3d);
861 graphic_frame
862 .get_graphic_mut()
863 .get_graphic_data_mut()
864 .get_chart_space_mut()
865 .get_chart_mut()
866 .get_plot_area_mut()
867 .set_pie_3d_chart(pie_3d_chart);
868 graphic_frame
869 .get_graphic_mut()
870 .get_graphic_data_mut()
871 .get_chart_space_mut()
872 .get_chart_mut()
873 .get_legend_mut()
874 .get_legend_position_mut()
875 .set_val(LegendPositionValues::Right);
876 graphic_frame
877 .get_graphic_mut()
878 .get_graphic_data_mut()
879 .get_chart_space_mut()
880 .get_chart_mut()
881 .get_legend_mut()
882 .set_layout(layout);
883 graphic_frame
884 .get_graphic_mut()
885 .get_graphic_data_mut()
886 .get_chart_space_mut()
887 .get_chart_mut()
888 .get_legend_mut()
889 .set_text_properties(text_properties);
890 graphic_frame
891 .get_graphic_mut()
892 .get_graphic_data_mut()
893 .get_chart_space_mut()
894 .get_chart_mut()
895 .get_plot_visible_only_mut()
896 .set_val(true);
897 graphic_frame
898 .get_graphic_mut()
899 .get_graphic_data_mut()
900 .get_chart_space_mut()
901 .get_chart_mut()
902 .get_display_blanks_as_mut()
903 .set_val(DisplayBlanksAsValues::Gap);
904 graphic_frame
905 .get_graphic_mut()
906 .get_graphic_data_mut()
907 .get_chart_space_mut()
908 .set_print_settings(self.make_print_settings());
909 graphic_frame
910 .get_graphic_mut()
911 .get_graphic_data_mut()
912 .get_chart_space_mut()
913 .set_style(style);
914 self.two_cell_anchor.set_graphic_frame(graphic_frame);
915 }
916
917 pub(crate) fn new_chart_doughnut_chart(&mut self, area_chart_series_list: Vec<&str>) {
918 let mut acsl_obj = AreaChartSeriesList::default();
919 let mut acs_obj = AreaChartSeries::default();
920 let mut idx = 0;
921 let mut ptn = 0;
922 for area_chart_series in area_chart_series_list {
923 if ptn == 0 {
924 let mut string_reference = StringReference::default();
925 string_reference
926 .get_formula_mut()
927 .set_address_str(area_chart_series);
928
929 let mut category_axis_data = CategoryAxisData::default();
930 category_axis_data.set_string_reference(string_reference);
931 acs_obj.set_category_axis_data(category_axis_data);
932
933 ptn += 1;
934 } else if ptn == 1 {
935 let mut values = Values::default();
936 values
937 .get_number_reference_mut()
938 .get_formula_mut()
939 .set_address_str(area_chart_series);
940 values
941 .get_number_reference_mut()
942 .get_numbering_cache_mut()
943 .get_format_code_mut()
944 .set_text("General");
945 acs_obj.set_values(values);
946
947 acs_obj.get_index_mut().set_val(idx);
948 acs_obj.get_order_mut().set_val(idx);
949 acsl_obj.add_area_chart_series(acs_obj);
950
951 acs_obj = AreaChartSeries::default();
952 idx += 1;
953 ptn = 0;
954 }
955 }
956
957 let mut show_leader_lines = ShowLeaderLines::default();
958 show_leader_lines.set_val(true);
959
960 let mut doughnut_chart = DoughnutChart::default();
961 doughnut_chart.get_vary_colors_mut().set_val(true);
962 doughnut_chart.set_area_chart_series_list(acsl_obj);
963 doughnut_chart
964 .get_data_labels_mut()
965 .set_show_leader_lines(show_leader_lines);
966 doughnut_chart.get_hole_size_mut().set_val(50);
967
968 let layout = Layout::default();
969 let mut style = Style::default();
970 style.set_val('2');
971
972 let mut graphic_frame = GraphicFrame::default();
973 graphic_frame
974 .get_graphic_mut()
975 .get_graphic_data_mut()
976 .get_chart_space_mut()
977 .get_editing_language_mut()
978 .set_val(&self.default_language);
979 graphic_frame
980 .get_graphic_mut()
981 .get_graphic_data_mut()
982 .get_chart_space_mut()
983 .get_chart_mut()
984 .get_plot_area_mut()
985 .set_doughnut_chart(doughnut_chart);
986 graphic_frame
987 .get_graphic_mut()
988 .get_graphic_data_mut()
989 .get_chart_space_mut()
990 .get_chart_mut()
991 .get_legend_mut()
992 .get_legend_position_mut()
993 .set_val(LegendPositionValues::Right);
994 graphic_frame
995 .get_graphic_mut()
996 .get_graphic_data_mut()
997 .get_chart_space_mut()
998 .get_chart_mut()
999 .get_legend_mut()
1000 .set_layout(layout);
1001 graphic_frame
1002 .get_graphic_mut()
1003 .get_graphic_data_mut()
1004 .get_chart_space_mut()
1005 .get_chart_mut()
1006 .get_plot_visible_only_mut()
1007 .set_val(true);
1008 graphic_frame
1009 .get_graphic_mut()
1010 .get_graphic_data_mut()
1011 .get_chart_space_mut()
1012 .get_chart_mut()
1013 .get_display_blanks_as_mut()
1014 .set_val(DisplayBlanksAsValues::Gap);
1015 graphic_frame
1016 .get_graphic_mut()
1017 .get_graphic_data_mut()
1018 .get_chart_space_mut()
1019 .set_print_settings(self.make_print_settings());
1020 graphic_frame
1021 .get_graphic_mut()
1022 .get_graphic_data_mut()
1023 .get_chart_space_mut()
1024 .set_style(style);
1025 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1026 }
1027
1028 pub(crate) fn new_chart_area_chart(&mut self, area_chart_series_list: Vec<&str>) {
1029 let acsl_obj = self.convert_series(area_chart_series_list, true);
1030
1031 let mut axis_id1 = AxisId::default();
1032 axis_id1.set_val(213468160);
1033
1034 let mut axis_id2 = AxisId::default();
1035 axis_id2.set_val(169590080);
1036
1037 let mut area_chart = AreaChart::default();
1038 area_chart
1039 .get_grouping_mut()
1040 .set_val(GroupingValues::Standard);
1041 area_chart.set_area_chart_series_list(acsl_obj);
1042 area_chart.add_axis_id(axis_id1);
1043 area_chart.add_axis_id(axis_id2);
1044
1045 let mut category_axis = CategoryAxis::default();
1046 category_axis.get_axis_id_mut().set_val(213468160);
1047 category_axis
1048 .get_scaling_mut()
1049 .get_orientation_mut()
1050 .set_val(OrientationValues::MinMax);
1051 category_axis
1052 .get_major_tick_mark_mut()
1053 .set_val(TickMarkValues::Outside);
1054 category_axis
1055 .get_minor_tick_mark_mut()
1056 .set_val(TickMarkValues::None);
1057 category_axis
1058 .get_tick_label_position_mut()
1059 .set_val(TickLabelPositionValues::NextTo);
1060 category_axis
1061 .get_tick_crossing_axis_mut()
1062 .set_val(169590080);
1063 category_axis.get_auto_labeled_mut().set_val(true);
1064 category_axis.get_label_offset_mut().set_val(100);
1065
1066 let major_gridlines = MajorGridlines::default();
1067
1068 let mut value_axis = ValueAxis::default();
1069 value_axis.get_axis_id_mut().set_val(169590080);
1070 value_axis
1071 .get_scaling_mut()
1072 .get_orientation_mut()
1073 .set_val(OrientationValues::MinMax);
1074 value_axis
1075 .get_axis_position_mut()
1076 .set_val(AxisPositionValues::Left);
1077 value_axis.set_major_gridlines(major_gridlines);
1078 value_axis
1079 .get_numbering_format_mut()
1080 .set_format_code("General");
1081 value_axis
1082 .get_numbering_format_mut()
1083 .set_source_linked(true);
1084 value_axis
1085 .get_major_tick_mark_mut()
1086 .set_val(TickMarkValues::Outside);
1087 value_axis
1088 .get_minor_tick_mark_mut()
1089 .set_val(TickMarkValues::None);
1090 value_axis
1091 .get_tick_label_position_mut()
1092 .set_val(TickLabelPositionValues::NextTo);
1093 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
1094 value_axis
1095 .get_cross_between_mut()
1096 .set_val(CrossBetweenValues::MidpointCategory);
1097
1098 let mut style = Style::default();
1099 style.set_val('2');
1100
1101 let mut graphic_frame = GraphicFrame::default();
1102 graphic_frame
1103 .get_graphic_mut()
1104 .get_graphic_data_mut()
1105 .get_chart_space_mut()
1106 .get_editing_language_mut()
1107 .set_val(&self.default_language);
1108 graphic_frame
1109 .get_graphic_mut()
1110 .get_graphic_data_mut()
1111 .get_chart_space_mut()
1112 .get_chart_mut()
1113 .get_plot_area_mut()
1114 .set_area_chart(area_chart);
1115 graphic_frame
1116 .get_graphic_mut()
1117 .get_graphic_data_mut()
1118 .get_chart_space_mut()
1119 .get_chart_mut()
1120 .get_plot_area_mut()
1121 .add_category_axis(category_axis);
1122 graphic_frame
1123 .get_graphic_mut()
1124 .get_graphic_data_mut()
1125 .get_chart_space_mut()
1126 .get_chart_mut()
1127 .get_plot_area_mut()
1128 .add_value_axis(value_axis);
1129 graphic_frame
1130 .get_graphic_mut()
1131 .get_graphic_data_mut()
1132 .get_chart_space_mut()
1133 .get_chart_mut()
1134 .get_legend_mut()
1135 .get_legend_position_mut()
1136 .set_val(LegendPositionValues::Right);
1137 graphic_frame
1138 .get_graphic_mut()
1139 .get_graphic_data_mut()
1140 .get_chart_space_mut()
1141 .get_chart_mut()
1142 .get_plot_visible_only_mut()
1143 .set_val(true);
1144 graphic_frame
1145 .get_graphic_mut()
1146 .get_graphic_data_mut()
1147 .get_chart_space_mut()
1148 .get_chart_mut()
1149 .get_display_blanks_as_mut()
1150 .set_val(DisplayBlanksAsValues::Zero);
1151 graphic_frame
1152 .get_graphic_mut()
1153 .get_graphic_data_mut()
1154 .get_chart_space_mut()
1155 .set_print_settings(self.make_print_settings());
1156 graphic_frame
1157 .get_graphic_mut()
1158 .get_graphic_data_mut()
1159 .get_chart_space_mut()
1160 .set_style(style);
1161 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1162 }
1163
1164 pub(crate) fn new_chart_area_3d_chart(&mut self, area_chart_series_list: Vec<&str>) {
1165 let mut rotate_x = RotateX::default();
1166 let mut rotate_y = RotateY::default();
1167 let mut right_angle_axes = RightAngleAxes::default();
1168 rotate_x.set_val(15);
1169 rotate_y.set_val(10);
1170 right_angle_axes.set_val(true);
1171 let mut view_3d = View3D::default();
1172 view_3d.set_rotate_x(rotate_x);
1173 view_3d.set_rotate_y(rotate_y);
1174 view_3d.set_right_angle_axes(right_angle_axes);
1175
1176 let acsl_obj = self.convert_series(area_chart_series_list, true);
1177
1178 let mut axis_id1 = AxisId::default();
1179 axis_id1.set_val(213468160);
1180
1181 let mut axis_id2 = AxisId::default();
1182 axis_id2.set_val(169590080);
1183
1184 let mut area_3d_chart = Area3DChart::default();
1185 area_3d_chart
1186 .get_grouping_mut()
1187 .set_val(GroupingValues::Standard);
1188 area_3d_chart.set_area_chart_series_list(acsl_obj);
1189 area_3d_chart.add_axis_id(axis_id1);
1190 area_3d_chart.add_axis_id(axis_id2);
1191
1192 let mut category_axis = CategoryAxis::default();
1193 category_axis.get_axis_id_mut().set_val(213468160);
1194 category_axis
1195 .get_scaling_mut()
1196 .get_orientation_mut()
1197 .set_val(OrientationValues::MinMax);
1198 category_axis
1199 .get_major_tick_mark_mut()
1200 .set_val(TickMarkValues::Outside);
1201 category_axis
1202 .get_minor_tick_mark_mut()
1203 .set_val(TickMarkValues::None);
1204 category_axis
1205 .get_tick_label_position_mut()
1206 .set_val(TickLabelPositionValues::NextTo);
1207 category_axis
1208 .get_tick_crossing_axis_mut()
1209 .set_val(169590080);
1210 category_axis.get_auto_labeled_mut().set_val(true);
1211 category_axis.get_label_offset_mut().set_val(100);
1212
1213 let major_gridlines = MajorGridlines::default();
1214
1215 let mut value_axis = ValueAxis::default();
1216 value_axis.get_axis_id_mut().set_val(169590080);
1217 value_axis
1218 .get_scaling_mut()
1219 .get_orientation_mut()
1220 .set_val(OrientationValues::MinMax);
1221 value_axis
1222 .get_axis_position_mut()
1223 .set_val(AxisPositionValues::Left);
1224 value_axis.set_major_gridlines(major_gridlines);
1225 value_axis
1226 .get_numbering_format_mut()
1227 .set_format_code("General");
1228 value_axis
1229 .get_numbering_format_mut()
1230 .set_source_linked(true);
1231 value_axis
1232 .get_major_tick_mark_mut()
1233 .set_val(TickMarkValues::Outside);
1234 value_axis
1235 .get_minor_tick_mark_mut()
1236 .set_val(TickMarkValues::None);
1237 value_axis
1238 .get_tick_label_position_mut()
1239 .set_val(TickLabelPositionValues::NextTo);
1240 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
1241 value_axis
1242 .get_cross_between_mut()
1243 .set_val(CrossBetweenValues::MidpointCategory);
1244
1245 let mut style = Style::default();
1246 style.set_val('2');
1247
1248 let mut graphic_frame = GraphicFrame::default();
1249 graphic_frame
1250 .get_graphic_mut()
1251 .get_graphic_data_mut()
1252 .get_chart_space_mut()
1253 .get_editing_language_mut()
1254 .set_val(&self.default_language);
1255 graphic_frame
1256 .get_graphic_mut()
1257 .get_graphic_data_mut()
1258 .get_chart_space_mut()
1259 .get_chart_mut()
1260 .set_view_3d(view_3d);
1261 graphic_frame
1262 .get_graphic_mut()
1263 .get_graphic_data_mut()
1264 .get_chart_space_mut()
1265 .get_chart_mut()
1266 .get_plot_area_mut()
1267 .set_area_3d_chart(area_3d_chart);
1268 graphic_frame
1269 .get_graphic_mut()
1270 .get_graphic_data_mut()
1271 .get_chart_space_mut()
1272 .get_chart_mut()
1273 .get_plot_area_mut()
1274 .add_category_axis(category_axis);
1275 graphic_frame
1276 .get_graphic_mut()
1277 .get_graphic_data_mut()
1278 .get_chart_space_mut()
1279 .get_chart_mut()
1280 .get_plot_area_mut()
1281 .add_value_axis(value_axis);
1282 graphic_frame
1283 .get_graphic_mut()
1284 .get_graphic_data_mut()
1285 .get_chart_space_mut()
1286 .get_chart_mut()
1287 .get_legend_mut()
1288 .get_legend_position_mut()
1289 .set_val(LegendPositionValues::Right);
1290 graphic_frame
1291 .get_graphic_mut()
1292 .get_graphic_data_mut()
1293 .get_chart_space_mut()
1294 .get_chart_mut()
1295 .get_plot_visible_only_mut()
1296 .set_val(true);
1297 graphic_frame
1298 .get_graphic_mut()
1299 .get_graphic_data_mut()
1300 .get_chart_space_mut()
1301 .get_chart_mut()
1302 .get_display_blanks_as_mut()
1303 .set_val(DisplayBlanksAsValues::Zero);
1304 graphic_frame
1305 .get_graphic_mut()
1306 .get_graphic_data_mut()
1307 .get_chart_space_mut()
1308 .set_print_settings(self.make_print_settings());
1309 graphic_frame
1310 .get_graphic_mut()
1311 .get_graphic_data_mut()
1312 .get_chart_space_mut()
1313 .set_style(style);
1314 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1315 }
1316
1317 pub(crate) fn new_chart_bar_chart(&mut self, area_chart_series_list: Vec<&str>) {
1318 let acsl_obj = self.convert_series(area_chart_series_list, false);
1319
1320 let mut axis_id1 = AxisId::default();
1321 axis_id1.set_val(213468160);
1322
1323 let mut axis_id2 = AxisId::default();
1324 axis_id2.set_val(169590080);
1325
1326 let mut bar_chart = BarChart::default();
1327 bar_chart
1328 .get_bar_direction_mut()
1329 .set_val(BarDirectionValues::Column);
1330 bar_chart
1331 .get_grouping_mut()
1332 .set_val(GroupingValues::Stacked);
1333 bar_chart.set_area_chart_series_list(acsl_obj);
1334 bar_chart.get_gap_width_mut().set_val(150);
1335 bar_chart.get_overlap_mut().set_val(100);
1336 bar_chart.add_axis_id(axis_id1);
1337 bar_chart.add_axis_id(axis_id2);
1338
1339 let mut category_axis = CategoryAxis::default();
1340 category_axis.get_axis_id_mut().set_val(213468160);
1341 category_axis
1342 .get_scaling_mut()
1343 .get_orientation_mut()
1344 .set_val(OrientationValues::MinMax);
1345 category_axis
1346 .get_axis_position_mut()
1347 .set_val(AxisPositionValues::Bottom);
1348 category_axis
1349 .get_major_tick_mark_mut()
1350 .set_val(TickMarkValues::Outside);
1351 category_axis
1352 .get_minor_tick_mark_mut()
1353 .set_val(TickMarkValues::None);
1354 category_axis
1355 .get_tick_label_position_mut()
1356 .set_val(TickLabelPositionValues::NextTo);
1357 category_axis
1358 .get_tick_crossing_axis_mut()
1359 .set_val(169590080);
1360 category_axis.get_auto_labeled_mut().set_val(true);
1361 category_axis.get_label_offset_mut().set_val(100);
1362
1363 let major_gridlines = MajorGridlines::default();
1364
1365 let mut value_axis = ValueAxis::default();
1366 value_axis.get_axis_id_mut().set_val(169590080);
1367 value_axis
1368 .get_scaling_mut()
1369 .get_orientation_mut()
1370 .set_val(OrientationValues::MinMax);
1371 value_axis
1372 .get_axis_position_mut()
1373 .set_val(AxisPositionValues::Left);
1374 value_axis.set_major_gridlines(major_gridlines);
1375 value_axis
1376 .get_numbering_format_mut()
1377 .set_format_code("General");
1378 value_axis
1379 .get_numbering_format_mut()
1380 .set_source_linked(true);
1381 value_axis
1382 .get_major_tick_mark_mut()
1383 .set_val(TickMarkValues::Outside);
1384 value_axis
1385 .get_minor_tick_mark_mut()
1386 .set_val(TickMarkValues::None);
1387 value_axis
1388 .get_tick_label_position_mut()
1389 .set_val(TickLabelPositionValues::NextTo);
1390 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
1391
1392 let mut style = Style::default();
1393 style.set_val('2');
1394
1395 let mut graphic_frame = GraphicFrame::default();
1396 graphic_frame
1397 .get_graphic_mut()
1398 .get_graphic_data_mut()
1399 .get_chart_space_mut()
1400 .get_editing_language_mut()
1401 .set_val(&self.default_language);
1402 graphic_frame
1403 .get_graphic_mut()
1404 .get_graphic_data_mut()
1405 .get_chart_space_mut()
1406 .get_chart_mut()
1407 .get_plot_area_mut()
1408 .set_bar_chart(bar_chart);
1409 graphic_frame
1410 .get_graphic_mut()
1411 .get_graphic_data_mut()
1412 .get_chart_space_mut()
1413 .get_chart_mut()
1414 .get_plot_area_mut()
1415 .add_category_axis(category_axis);
1416 graphic_frame
1417 .get_graphic_mut()
1418 .get_graphic_data_mut()
1419 .get_chart_space_mut()
1420 .get_chart_mut()
1421 .get_plot_area_mut()
1422 .add_value_axis(value_axis);
1423 graphic_frame
1424 .get_graphic_mut()
1425 .get_graphic_data_mut()
1426 .get_chart_space_mut()
1427 .get_chart_mut()
1428 .get_legend_mut()
1429 .get_legend_position_mut()
1430 .set_val(LegendPositionValues::Right);
1431 graphic_frame
1432 .get_graphic_mut()
1433 .get_graphic_data_mut()
1434 .get_chart_space_mut()
1435 .get_chart_mut()
1436 .get_plot_visible_only_mut()
1437 .set_val(true);
1438 graphic_frame
1439 .get_graphic_mut()
1440 .get_graphic_data_mut()
1441 .get_chart_space_mut()
1442 .get_chart_mut()
1443 .get_display_blanks_as_mut()
1444 .set_val(DisplayBlanksAsValues::Gap);
1445 graphic_frame
1446 .get_graphic_mut()
1447 .get_graphic_data_mut()
1448 .get_chart_space_mut()
1449 .set_print_settings(self.make_print_settings());
1450 graphic_frame
1451 .get_graphic_mut()
1452 .get_graphic_data_mut()
1453 .get_chart_space_mut()
1454 .set_style(style);
1455 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1456 }
1457
1458 pub(crate) fn new_chart_bar_3d_chart(&mut self, area_chart_series_list: Vec<&str>) {
1459 let mut rotate_x = RotateX::default();
1460 let mut rotate_y = RotateY::default();
1461 let mut right_angle_axes = RightAngleAxes::default();
1462 rotate_x.set_val(15);
1463 rotate_y.set_val(10);
1464 right_angle_axes.set_val(true);
1465 let mut view_3d = View3D::default();
1466 view_3d.set_rotate_x(rotate_x);
1467 view_3d.set_rotate_y(rotate_y);
1468 view_3d.set_right_angle_axes(right_angle_axes);
1469
1470 let acsl_obj = self.convert_series(area_chart_series_list, false);
1471
1472 let mut axis_id1 = AxisId::default();
1473 axis_id1.set_val(213468160);
1474
1475 let mut axis_id2 = AxisId::default();
1476 axis_id2.set_val(169590080);
1477
1478 let mut bar_3d_chart = Bar3DChart::default();
1479 bar_3d_chart
1480 .get_bar_direction_mut()
1481 .set_val(BarDirectionValues::Column);
1482 bar_3d_chart
1483 .get_grouping_mut()
1484 .set_val(GroupingValues::Stacked);
1485 bar_3d_chart.set_area_chart_series_list(acsl_obj);
1486 bar_3d_chart.get_gap_width_mut().set_val(150);
1487 bar_3d_chart.get_shape_mut().set_val(ShapeValues::Box);
1488 bar_3d_chart.add_axis_id(axis_id1);
1489 bar_3d_chart.add_axis_id(axis_id2);
1490
1491 let mut category_axis = CategoryAxis::default();
1492 category_axis.get_axis_id_mut().set_val(213468160);
1493 category_axis
1494 .get_scaling_mut()
1495 .get_orientation_mut()
1496 .set_val(OrientationValues::MinMax);
1497 category_axis
1498 .get_axis_position_mut()
1499 .set_val(AxisPositionValues::Bottom);
1500 category_axis
1501 .get_major_tick_mark_mut()
1502 .set_val(TickMarkValues::Outside);
1503 category_axis
1504 .get_minor_tick_mark_mut()
1505 .set_val(TickMarkValues::None);
1506 category_axis
1507 .get_tick_label_position_mut()
1508 .set_val(TickLabelPositionValues::NextTo);
1509 category_axis
1510 .get_tick_crossing_axis_mut()
1511 .set_val(169590080);
1512 category_axis.get_auto_labeled_mut().set_val(true);
1513 category_axis.get_label_offset_mut().set_val(100);
1514
1515 let major_gridlines = MajorGridlines::default();
1516
1517 let mut value_axis = ValueAxis::default();
1518 value_axis.get_axis_id_mut().set_val(169590080);
1519 value_axis
1520 .get_scaling_mut()
1521 .get_orientation_mut()
1522 .set_val(OrientationValues::MinMax);
1523 value_axis
1524 .get_axis_position_mut()
1525 .set_val(AxisPositionValues::Left);
1526 value_axis.set_major_gridlines(major_gridlines);
1527 value_axis
1528 .get_numbering_format_mut()
1529 .set_format_code("General");
1530 value_axis
1531 .get_numbering_format_mut()
1532 .set_source_linked(true);
1533 value_axis
1534 .get_major_tick_mark_mut()
1535 .set_val(TickMarkValues::Outside);
1536 value_axis
1537 .get_minor_tick_mark_mut()
1538 .set_val(TickMarkValues::None);
1539 value_axis
1540 .get_tick_label_position_mut()
1541 .set_val(TickLabelPositionValues::NextTo);
1542 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
1543
1544 let mut style = Style::default();
1545 style.set_val('2');
1546
1547 let mut graphic_frame = GraphicFrame::default();
1548 graphic_frame
1549 .get_graphic_mut()
1550 .get_graphic_data_mut()
1551 .get_chart_space_mut()
1552 .get_editing_language_mut()
1553 .set_val(&self.default_language);
1554 graphic_frame
1555 .get_graphic_mut()
1556 .get_graphic_data_mut()
1557 .get_chart_space_mut()
1558 .get_chart_mut()
1559 .set_view_3d(view_3d);
1560 graphic_frame
1561 .get_graphic_mut()
1562 .get_graphic_data_mut()
1563 .get_chart_space_mut()
1564 .get_chart_mut()
1565 .get_plot_area_mut()
1566 .set_bar_3d_chart(bar_3d_chart);
1567 graphic_frame
1568 .get_graphic_mut()
1569 .get_graphic_data_mut()
1570 .get_chart_space_mut()
1571 .get_chart_mut()
1572 .get_plot_area_mut()
1573 .add_category_axis(category_axis);
1574 graphic_frame
1575 .get_graphic_mut()
1576 .get_graphic_data_mut()
1577 .get_chart_space_mut()
1578 .get_chart_mut()
1579 .get_plot_area_mut()
1580 .add_value_axis(value_axis);
1581 graphic_frame
1582 .get_graphic_mut()
1583 .get_graphic_data_mut()
1584 .get_chart_space_mut()
1585 .get_chart_mut()
1586 .get_legend_mut()
1587 .get_legend_position_mut()
1588 .set_val(LegendPositionValues::Right);
1589 graphic_frame
1590 .get_graphic_mut()
1591 .get_graphic_data_mut()
1592 .get_chart_space_mut()
1593 .get_chart_mut()
1594 .get_plot_visible_only_mut()
1595 .set_val(true);
1596 graphic_frame
1597 .get_graphic_mut()
1598 .get_graphic_data_mut()
1599 .get_chart_space_mut()
1600 .get_chart_mut()
1601 .get_display_blanks_as_mut()
1602 .set_val(DisplayBlanksAsValues::Gap);
1603 graphic_frame
1604 .get_graphic_mut()
1605 .get_graphic_data_mut()
1606 .get_chart_space_mut()
1607 .set_print_settings(self.make_print_settings());
1608 graphic_frame
1609 .get_graphic_mut()
1610 .get_graphic_data_mut()
1611 .get_chart_space_mut()
1612 .set_style(style);
1613 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1614 }
1615
1616 pub(crate) fn new_chart_of_pie_chart(&mut self, area_chart_series_list: Vec<&str>) {
1617 let acsl_obj = self.convert_series(area_chart_series_list, false);
1618
1619 let mut show_leader_lines = ShowLeaderLines::default();
1620 show_leader_lines.set_val(true);
1621
1622 let mut of_pie_chart = OfPieChart::default();
1623 of_pie_chart.get_of_pie_type_mut().set_val(OfPieValues::Bar);
1624 of_pie_chart.get_vary_colors_mut().set_val(true);
1625 of_pie_chart.set_area_chart_series_list(acsl_obj);
1626 of_pie_chart
1627 .get_data_labels_mut()
1628 .set_show_leader_lines(show_leader_lines);
1629
1630 let default_run_properties = RunProperties::default();
1631 let mut end_paragraph_run_properties = RunProperties::default();
1632 end_paragraph_run_properties.set_language(&self.default_language);
1633 let mut paragraph = Paragraph::default();
1634 paragraph
1635 .get_paragraph_properties_mut()
1636 .set_right_to_left("0");
1637 paragraph
1638 .get_paragraph_properties_mut()
1639 .set_default_run_properties(default_run_properties);
1640 paragraph.set_end_para_run_properties(end_paragraph_run_properties);
1641
1642 let mut text_properties = TextProperties::default();
1643 text_properties.add_paragraph(paragraph);
1644
1645 let mut style = Style::default();
1646 style.set_val('2');
1647
1648 let mut graphic_frame = GraphicFrame::default();
1649 graphic_frame
1650 .get_graphic_mut()
1651 .get_graphic_data_mut()
1652 .get_chart_space_mut()
1653 .get_editing_language_mut()
1654 .set_val(&self.default_language);
1655 graphic_frame
1656 .get_graphic_mut()
1657 .get_graphic_data_mut()
1658 .get_chart_space_mut()
1659 .get_chart_mut()
1660 .get_plot_area_mut()
1661 .set_of_pie_chart(of_pie_chart);
1662 graphic_frame
1663 .get_graphic_mut()
1664 .get_graphic_data_mut()
1665 .get_chart_space_mut()
1666 .get_chart_mut()
1667 .get_legend_mut()
1668 .get_legend_position_mut()
1669 .set_val(LegendPositionValues::Right);
1670 graphic_frame
1671 .get_graphic_mut()
1672 .get_graphic_data_mut()
1673 .get_chart_space_mut()
1674 .get_chart_mut()
1675 .get_legend_mut()
1676 .set_text_properties(text_properties);
1677 graphic_frame
1678 .get_graphic_mut()
1679 .get_graphic_data_mut()
1680 .get_chart_space_mut()
1681 .get_chart_mut()
1682 .get_plot_visible_only_mut()
1683 .set_val(true);
1684 graphic_frame
1685 .get_graphic_mut()
1686 .get_graphic_data_mut()
1687 .get_chart_space_mut()
1688 .get_chart_mut()
1689 .get_display_blanks_as_mut()
1690 .set_val(DisplayBlanksAsValues::Gap);
1691 graphic_frame
1692 .get_graphic_mut()
1693 .get_graphic_data_mut()
1694 .get_chart_space_mut()
1695 .set_print_settings(self.make_print_settings());
1696 graphic_frame
1697 .get_graphic_mut()
1698 .get_graphic_data_mut()
1699 .get_chart_space_mut()
1700 .set_style(style);
1701 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1702 }
1703
1704 pub(crate) fn new_chart_bubble_chart(&mut self, area_chart_series_list: Vec<&str>) {
1705 let mut acsl_obj = AreaChartSeriesList::default();
1706 let mut acs_obj = AreaChartSeries::default();
1707 let mut idx = 0;
1708 let mut ptn = 0;
1709 for area_chart_series in area_chart_series_list {
1710 if ptn == 0 {
1711 let mut x_values = XValues::default();
1712 x_values
1713 .get_number_reference_mut()
1714 .get_formula_mut()
1715 .set_address_str(area_chart_series);
1716 x_values
1717 .get_number_reference_mut()
1718 .get_numbering_cache_mut()
1719 .get_format_code_mut()
1720 .set_text("General");
1721 acs_obj.set_x_values(x_values);
1722
1723 ptn += 1;
1724 } else if ptn == 1 {
1725 let mut y_values = YValues::default();
1726 y_values
1727 .get_number_reference_mut()
1728 .get_formula_mut()
1729 .set_address_str(area_chart_series);
1730 y_values
1731 .get_number_reference_mut()
1732 .get_numbering_cache_mut()
1733 .get_format_code_mut()
1734 .set_text("General");
1735 acs_obj.set_y_values(y_values);
1736
1737 ptn += 1;
1738 } else if ptn == 2 {
1739 let mut bubble_size = BubbleSize::default();
1740 bubble_size
1741 .get_number_reference_mut()
1742 .get_formula_mut()
1743 .set_address_str(area_chart_series);
1744 bubble_size
1745 .get_number_reference_mut()
1746 .get_numbering_cache_mut()
1747 .get_format_code_mut()
1748 .set_text("General");
1749 acs_obj.set_bubble_size(bubble_size);
1750
1751 let mut invert_if_negative = InvertIfNegative::default();
1752 invert_if_negative.set_val(0f64);
1753
1754 let bubble_3d = Bubble3D::default();
1755
1756 acs_obj.get_index_mut().set_val(idx);
1757 acs_obj.get_order_mut().set_val(idx);
1758 acs_obj.set_invert_if_negative(invert_if_negative);
1759 acs_obj.set_bubble_3d(bubble_3d);
1760 acsl_obj.add_area_chart_series(acs_obj);
1761
1762 acs_obj = AreaChartSeries::default();
1763 ptn = 0;
1764 idx += 1;
1765 }
1766 }
1767
1768 let mut show_leader_lines = ShowLeaderLines::default();
1769 show_leader_lines.set_val(true);
1770
1771 let mut axis_id1 = AxisId::default();
1772 axis_id1.set_val(213468160);
1773
1774 let mut axis_id2 = AxisId::default();
1775 axis_id2.set_val(169590080);
1776
1777 let mut bubble_chart = BubbleChart::default();
1778 bubble_chart.get_vary_colors_mut().set_val(false);
1779 bubble_chart.set_area_chart_series_list(acsl_obj);
1780 bubble_chart.get_bubble_scale_mut().set_val(100);
1781 bubble_chart.add_axis_id(axis_id1);
1782 bubble_chart.add_axis_id(axis_id2);
1783 bubble_chart
1784 .get_data_labels_mut()
1785 .set_show_leader_lines(show_leader_lines);
1786
1787 let mut value_axis_1 = ValueAxis::default();
1788 value_axis_1.get_axis_id_mut().set_val(213468160);
1789 value_axis_1
1790 .get_scaling_mut()
1791 .get_orientation_mut()
1792 .set_val(OrientationValues::MinMax);
1793 value_axis_1
1794 .get_axis_position_mut()
1795 .set_val(AxisPositionValues::Bottom);
1796 value_axis_1
1797 .get_numbering_format_mut()
1798 .set_format_code("General");
1799 value_axis_1
1800 .get_numbering_format_mut()
1801 .set_source_linked(true);
1802 value_axis_1
1803 .get_major_tick_mark_mut()
1804 .set_val(TickMarkValues::Outside);
1805 value_axis_1
1806 .get_minor_tick_mark_mut()
1807 .set_val(TickMarkValues::None);
1808 value_axis_1
1809 .get_tick_label_position_mut()
1810 .set_val(TickLabelPositionValues::NextTo);
1811 value_axis_1.get_tick_crossing_axis_mut().set_val(169590080);
1812 value_axis_1
1813 .get_cross_between_mut()
1814 .set_val(CrossBetweenValues::MidpointCategory);
1815
1816 let major_gridlines = MajorGridlines::default();
1817 let mut value_axis_2 = ValueAxis::default();
1818 value_axis_2.get_axis_id_mut().set_val(169590080);
1819 value_axis_2
1820 .get_scaling_mut()
1821 .get_orientation_mut()
1822 .set_val(OrientationValues::MinMax);
1823 value_axis_2
1824 .get_axis_position_mut()
1825 .set_val(AxisPositionValues::Left);
1826 value_axis_2.set_major_gridlines(major_gridlines);
1827 value_axis_2
1828 .get_numbering_format_mut()
1829 .set_format_code("General");
1830 value_axis_2
1831 .get_numbering_format_mut()
1832 .set_source_linked(true);
1833 value_axis_2
1834 .get_major_tick_mark_mut()
1835 .set_val(TickMarkValues::Outside);
1836 value_axis_2
1837 .get_minor_tick_mark_mut()
1838 .set_val(TickMarkValues::None);
1839 value_axis_2
1840 .get_tick_label_position_mut()
1841 .set_val(TickLabelPositionValues::NextTo);
1842 value_axis_2.get_tick_crossing_axis_mut().set_val(213468160);
1843 value_axis_2
1844 .get_cross_between_mut()
1845 .set_val(CrossBetweenValues::MidpointCategory);
1846
1847 let default_run_properties = RunProperties::default();
1848 let mut end_paragraph_run_properties = RunProperties::default();
1849 end_paragraph_run_properties.set_language(&self.default_language);
1850 let mut paragraph = Paragraph::default();
1851 paragraph
1852 .get_paragraph_properties_mut()
1853 .set_right_to_left("0");
1854 paragraph
1855 .get_paragraph_properties_mut()
1856 .set_default_run_properties(default_run_properties);
1857 paragraph.set_end_para_run_properties(end_paragraph_run_properties);
1858
1859 let mut text_properties = TextProperties::default();
1860 text_properties.add_paragraph(paragraph);
1861
1862 let mut style = Style::default();
1863 style.set_val('2');
1864
1865 let mut graphic_frame = GraphicFrame::default();
1866 graphic_frame
1867 .get_graphic_mut()
1868 .get_graphic_data_mut()
1869 .get_chart_space_mut()
1870 .get_editing_language_mut()
1871 .set_val(&self.default_language);
1872 graphic_frame
1873 .get_graphic_mut()
1874 .get_graphic_data_mut()
1875 .get_chart_space_mut()
1876 .get_chart_mut()
1877 .get_plot_area_mut()
1878 .set_bubble_chart(bubble_chart);
1879 graphic_frame
1880 .get_graphic_mut()
1881 .get_graphic_data_mut()
1882 .get_chart_space_mut()
1883 .get_chart_mut()
1884 .get_plot_area_mut()
1885 .add_value_axis(value_axis_1);
1886 graphic_frame
1887 .get_graphic_mut()
1888 .get_graphic_data_mut()
1889 .get_chart_space_mut()
1890 .get_chart_mut()
1891 .get_plot_area_mut()
1892 .add_value_axis(value_axis_2);
1893 graphic_frame
1894 .get_graphic_mut()
1895 .get_graphic_data_mut()
1896 .get_chart_space_mut()
1897 .get_chart_mut()
1898 .get_legend_mut()
1899 .get_legend_position_mut()
1900 .set_val(LegendPositionValues::Right);
1901 graphic_frame
1902 .get_graphic_mut()
1903 .get_graphic_data_mut()
1904 .get_chart_space_mut()
1905 .get_chart_mut()
1906 .get_legend_mut()
1907 .set_text_properties(text_properties);
1908 graphic_frame
1909 .get_graphic_mut()
1910 .get_graphic_data_mut()
1911 .get_chart_space_mut()
1912 .get_chart_mut()
1913 .get_plot_visible_only_mut()
1914 .set_val(true);
1915 graphic_frame
1916 .get_graphic_mut()
1917 .get_graphic_data_mut()
1918 .get_chart_space_mut()
1919 .get_chart_mut()
1920 .get_display_blanks_as_mut()
1921 .set_val(DisplayBlanksAsValues::Gap);
1922 graphic_frame
1923 .get_graphic_mut()
1924 .get_graphic_data_mut()
1925 .get_chart_space_mut()
1926 .set_print_settings(self.make_print_settings());
1927 graphic_frame
1928 .get_graphic_mut()
1929 .get_graphic_data_mut()
1930 .get_chart_space_mut()
1931 .set_style(style);
1932 self.two_cell_anchor.set_graphic_frame(graphic_frame);
1933 }
1934
1935 pub(crate) fn new_chart_radar_chart(&mut self, area_chart_series_list: Vec<&str>) {
1936 let acsl_obj = self.convert_series(area_chart_series_list, true);
1937
1938 let mut axis_id1 = AxisId::default();
1939 axis_id1.set_val(213468160);
1940
1941 let mut axis_id2 = AxisId::default();
1942 axis_id2.set_val(169590080);
1943
1944 let mut radar_chart = RadarChart::default();
1945 radar_chart.set_area_chart_series_list(acsl_obj);
1946 radar_chart.add_axis_id(axis_id1);
1947 radar_chart.add_axis_id(axis_id2);
1948
1949 let mut category_axis = CategoryAxis::default();
1950 category_axis.get_axis_id_mut().set_val(213468160);
1951 category_axis
1952 .get_scaling_mut()
1953 .get_orientation_mut()
1954 .set_val(OrientationValues::MinMax);
1955 category_axis
1956 .get_major_tick_mark_mut()
1957 .set_val(TickMarkValues::None);
1958 category_axis
1959 .get_minor_tick_mark_mut()
1960 .set_val(TickMarkValues::None);
1961 category_axis
1962 .get_tick_label_position_mut()
1963 .set_val(TickLabelPositionValues::NextTo);
1964 category_axis
1965 .get_tick_crossing_axis_mut()
1966 .set_val(169590080);
1967 category_axis.get_auto_labeled_mut().set_val(true);
1968 category_axis.get_label_offset_mut().set_val(100);
1969
1970 let major_gridlines = MajorGridlines::default();
1971
1972 let mut value_axis = ValueAxis::default();
1973 value_axis.get_axis_id_mut().set_val(169590080);
1974 value_axis
1975 .get_scaling_mut()
1976 .get_orientation_mut()
1977 .set_val(OrientationValues::MinMax);
1978 value_axis
1979 .get_axis_position_mut()
1980 .set_val(AxisPositionValues::Left);
1981 value_axis.set_major_gridlines(major_gridlines);
1982 value_axis
1983 .get_numbering_format_mut()
1984 .set_format_code("General");
1985 value_axis
1986 .get_numbering_format_mut()
1987 .set_source_linked(true);
1988 value_axis
1989 .get_major_tick_mark_mut()
1990 .set_val(TickMarkValues::None);
1991 value_axis
1992 .get_minor_tick_mark_mut()
1993 .set_val(TickMarkValues::None);
1994 value_axis
1995 .get_tick_label_position_mut()
1996 .set_val(TickLabelPositionValues::NextTo);
1997 value_axis.get_tick_crossing_axis_mut().set_val(213468160);
1998
1999 let layout = Layout::default();
2000 let mut style = Style::default();
2001 style.set_val('2');
2002
2003 let mut graphic_frame = GraphicFrame::default();
2004 graphic_frame
2005 .get_graphic_mut()
2006 .get_graphic_data_mut()
2007 .get_chart_space_mut()
2008 .get_editing_language_mut()
2009 .set_val(&self.default_language);
2010 graphic_frame
2011 .get_graphic_mut()
2012 .get_graphic_data_mut()
2013 .get_chart_space_mut()
2014 .get_chart_mut()
2015 .get_plot_area_mut()
2016 .set_radar_chart(radar_chart);
2017 graphic_frame
2018 .get_graphic_mut()
2019 .get_graphic_data_mut()
2020 .get_chart_space_mut()
2021 .get_chart_mut()
2022 .get_plot_area_mut()
2023 .add_category_axis(category_axis);
2024 graphic_frame
2025 .get_graphic_mut()
2026 .get_graphic_data_mut()
2027 .get_chart_space_mut()
2028 .get_chart_mut()
2029 .get_plot_area_mut()
2030 .add_value_axis(value_axis);
2031 graphic_frame
2032 .get_graphic_mut()
2033 .get_graphic_data_mut()
2034 .get_chart_space_mut()
2035 .get_chart_mut()
2036 .get_legend_mut()
2037 .get_legend_position_mut()
2038 .set_val(LegendPositionValues::Right);
2039 graphic_frame
2040 .get_graphic_mut()
2041 .get_graphic_data_mut()
2042 .get_chart_space_mut()
2043 .get_chart_mut()
2044 .get_legend_mut()
2045 .set_layout(layout);
2046 graphic_frame
2047 .get_graphic_mut()
2048 .get_graphic_data_mut()
2049 .get_chart_space_mut()
2050 .get_chart_mut()
2051 .get_plot_visible_only_mut()
2052 .set_val(true);
2053 graphic_frame
2054 .get_graphic_mut()
2055 .get_graphic_data_mut()
2056 .get_chart_space_mut()
2057 .get_chart_mut()
2058 .get_display_blanks_as_mut()
2059 .set_val(DisplayBlanksAsValues::Zero);
2060 graphic_frame
2061 .get_graphic_mut()
2062 .get_graphic_data_mut()
2063 .get_chart_space_mut()
2064 .set_print_settings(self.make_print_settings());
2065 graphic_frame
2066 .get_graphic_mut()
2067 .get_graphic_data_mut()
2068 .get_chart_space_mut()
2069 .set_style(style);
2070 self.two_cell_anchor.set_graphic_frame(graphic_frame);
2071 }
2072
2073 pub(crate) fn new_chart_scatter_chart(&mut self, area_chart_series_list: Vec<&str>) {
2074 let mut acsl_obj = AreaChartSeriesList::default();
2075 let mut acs_obj = AreaChartSeries::default();
2076 let mut idx = 0;
2077 let mut ptn = 0;
2078 for area_chart_series in area_chart_series_list {
2079 if ptn == 0 {
2080 let mut x_values = XValues::default();
2081 x_values
2082 .get_number_reference_mut()
2083 .get_formula_mut()
2084 .set_address_str(area_chart_series);
2085 x_values
2086 .get_number_reference_mut()
2087 .get_numbering_cache_mut()
2088 .get_format_code_mut()
2089 .set_text("General");
2090 acs_obj.set_x_values(x_values);
2091
2092 ptn += 1;
2093 } else if ptn == 1 {
2094 let mut y_values = YValues::default();
2095 y_values
2096 .get_number_reference_mut()
2097 .get_formula_mut()
2098 .set_address_str(area_chart_series);
2099 y_values
2100 .get_number_reference_mut()
2101 .get_numbering_cache_mut()
2102 .get_format_code_mut()
2103 .set_text("General");
2104 acs_obj.set_y_values(y_values);
2105
2106 let mut invert_if_negative = InvertIfNegative::default();
2107 invert_if_negative.set_val(0f64);
2108
2109 acs_obj.get_index_mut().set_val(idx);
2110 acs_obj.get_order_mut().set_val(idx);
2111 acs_obj.set_invert_if_negative(invert_if_negative);
2112 acsl_obj.add_area_chart_series(acs_obj);
2113
2114 acs_obj = AreaChartSeries::default();
2115 ptn = 0;
2116 idx += 1;
2117 }
2118 }
2119
2120 let mut axis_id1 = AxisId::default();
2121 axis_id1.set_val(213468160);
2122
2123 let mut axis_id2 = AxisId::default();
2124 axis_id2.set_val(169590080);
2125
2126 let mut scatter_chart = ScatterChart::default();
2127 scatter_chart.set_area_chart_series_list(acsl_obj);
2128 scatter_chart.add_axis_id(axis_id1);
2129 scatter_chart.add_axis_id(axis_id2);
2130
2131 let mut value_axis_1 = ValueAxis::default();
2132 value_axis_1.get_axis_id_mut().set_val(213468160);
2133 value_axis_1
2134 .get_scaling_mut()
2135 .get_orientation_mut()
2136 .set_val(OrientationValues::MinMax);
2137 value_axis_1
2138 .get_axis_position_mut()
2139 .set_val(AxisPositionValues::Bottom);
2140 value_axis_1
2141 .get_numbering_format_mut()
2142 .set_format_code("General");
2143 value_axis_1
2144 .get_numbering_format_mut()
2145 .set_source_linked(true);
2146 value_axis_1
2147 .get_major_tick_mark_mut()
2148 .set_val(TickMarkValues::Outside);
2149 value_axis_1
2150 .get_minor_tick_mark_mut()
2151 .set_val(TickMarkValues::None);
2152 value_axis_1
2153 .get_tick_label_position_mut()
2154 .set_val(TickLabelPositionValues::NextTo);
2155 value_axis_1.get_tick_crossing_axis_mut().set_val(169590080);
2156 value_axis_1
2157 .get_cross_between_mut()
2158 .set_val(CrossBetweenValues::MidpointCategory);
2159
2160 let major_gridlines = MajorGridlines::default();
2161 let mut value_axis_2 = ValueAxis::default();
2162 value_axis_2.get_axis_id_mut().set_val(169590080);
2163 value_axis_2
2164 .get_scaling_mut()
2165 .get_orientation_mut()
2166 .set_val(OrientationValues::MinMax);
2167 value_axis_2
2168 .get_axis_position_mut()
2169 .set_val(AxisPositionValues::Left);
2170 value_axis_2.set_major_gridlines(major_gridlines);
2171 value_axis_2
2172 .get_numbering_format_mut()
2173 .set_format_code("General");
2174 value_axis_2
2175 .get_numbering_format_mut()
2176 .set_source_linked(true);
2177 value_axis_2
2178 .get_major_tick_mark_mut()
2179 .set_val(TickMarkValues::Outside);
2180 value_axis_2
2181 .get_minor_tick_mark_mut()
2182 .set_val(TickMarkValues::None);
2183 value_axis_2
2184 .get_tick_label_position_mut()
2185 .set_val(TickLabelPositionValues::NextTo);
2186 value_axis_2.get_tick_crossing_axis_mut().set_val(213468160);
2187 value_axis_2
2188 .get_cross_between_mut()
2189 .set_val(CrossBetweenValues::MidpointCategory);
2190
2191 let layout = Layout::default();
2192 let mut style = Style::default();
2193 style.set_val('2');
2194
2195 let mut graphic_frame = GraphicFrame::default();
2196 graphic_frame
2197 .get_graphic_mut()
2198 .get_graphic_data_mut()
2199 .get_chart_space_mut()
2200 .get_editing_language_mut()
2201 .set_val(&self.default_language);
2202 graphic_frame
2203 .get_graphic_mut()
2204 .get_graphic_data_mut()
2205 .get_chart_space_mut()
2206 .get_chart_mut()
2207 .get_plot_area_mut()
2208 .set_scatter_chart(scatter_chart);
2209 graphic_frame
2210 .get_graphic_mut()
2211 .get_graphic_data_mut()
2212 .get_chart_space_mut()
2213 .get_chart_mut()
2214 .get_plot_area_mut()
2215 .add_value_axis(value_axis_1);
2216 graphic_frame
2217 .get_graphic_mut()
2218 .get_graphic_data_mut()
2219 .get_chart_space_mut()
2220 .get_chart_mut()
2221 .get_plot_area_mut()
2222 .add_value_axis(value_axis_2);
2223 graphic_frame
2224 .get_graphic_mut()
2225 .get_graphic_data_mut()
2226 .get_chart_space_mut()
2227 .get_chart_mut()
2228 .get_legend_mut()
2229 .get_legend_position_mut()
2230 .set_val(LegendPositionValues::Right);
2231 graphic_frame
2232 .get_graphic_mut()
2233 .get_graphic_data_mut()
2234 .get_chart_space_mut()
2235 .get_chart_mut()
2236 .get_legend_mut()
2237 .set_layout(layout);
2238 graphic_frame
2239 .get_graphic_mut()
2240 .get_graphic_data_mut()
2241 .get_chart_space_mut()
2242 .get_chart_mut()
2243 .get_plot_visible_only_mut()
2244 .set_val(true);
2245 graphic_frame
2246 .get_graphic_mut()
2247 .get_graphic_data_mut()
2248 .get_chart_space_mut()
2249 .get_chart_mut()
2250 .get_display_blanks_as_mut()
2251 .set_val(DisplayBlanksAsValues::Zero);
2252 graphic_frame
2253 .get_graphic_mut()
2254 .get_graphic_data_mut()
2255 .get_chart_space_mut()
2256 .set_print_settings(self.make_print_settings());
2257 graphic_frame
2258 .get_graphic_mut()
2259 .get_graphic_data_mut()
2260 .get_chart_space_mut()
2261 .set_style(style);
2262 self.two_cell_anchor.set_graphic_frame(graphic_frame);
2263 }
2264
2265 #[inline]
2266 pub(crate) fn make_print_settings(&self) -> PrintSettings {
2267 let mut obj = PrintSettings::default();
2268 obj.get_page_margins_mut()
2269 .set_bottom(0.75)
2270 .set_left(0.7)
2271 .set_right(0.7)
2272 .set_top(0.75)
2273 .set_header(0.3)
2274 .set_footer(0.3);
2275 obj
2276 }
2277
2278 pub(crate) fn make_title<S: Into<String>>(&self, value: S) -> Title {
2279 let mut run_properties = RunProperties::default();
2280 run_properties.set_language(&self.default_language);
2281 run_properties.set_alternative_language("en-US");
2282
2283 let mut run = Run::default();
2284 run.set_run_properties(run_properties);
2285 run.set_text(value);
2286
2287 let default_run_properties = RunProperties::default();
2288
2289 let mut paragraph = Paragraph::default();
2290 paragraph
2291 .get_paragraph_properties_mut()
2292 .set_default_run_properties(default_run_properties);
2293 paragraph.add_run(run);
2294
2295 let mut chart_text = ChartText::default();
2296 let mut rich_text = RichText::default();
2297 rich_text.add_paragraph(paragraph);
2298 chart_text.set_rich_text(rich_text);
2299
2300 let mut title = Title::default();
2301 title.set_chart_text(chart_text);
2302
2303 title
2304 }
2305}
2306impl AdjustmentCoordinate for Chart {
2307 #[inline]
2308 fn adjustment_insert_coordinate(
2309 &mut self,
2310 root_col_num: &u32,
2311 offset_col_num: &u32,
2312 root_row_num: &u32,
2313 offset_row_num: &u32,
2314 ) {
2315 self.two_cell_anchor.as_mut().adjustment_insert_coordinate(
2316 root_col_num,
2317 offset_col_num,
2318 root_row_num,
2319 offset_row_num,
2320 );
2321 }
2322
2323 #[inline]
2324 fn adjustment_remove_coordinate(
2325 &mut self,
2326 root_col_num: &u32,
2327 offset_col_num: &u32,
2328 root_row_num: &u32,
2329 offset_row_num: &u32,
2330 ) {
2331 self.two_cell_anchor.as_mut().adjustment_remove_coordinate(
2332 root_col_num,
2333 offset_col_num,
2334 root_row_num,
2335 offset_row_num,
2336 );
2337 }
2338
2339 #[inline]
2340 fn is_remove_coordinate(
2341 &self,
2342 root_col_num: &u32,
2343 offset_col_num: &u32,
2344 root_row_num: &u32,
2345 offset_row_num: &u32,
2346 ) -> bool {
2347 self.two_cell_anchor.as_ref().is_remove_coordinate(
2348 root_col_num,
2349 offset_col_num,
2350 root_row_num,
2351 offset_row_num,
2352 )
2353 }
2354}
2355impl AdjustmentCoordinateWithSheet for Chart {
2356 #[inline]
2357 fn adjustment_insert_coordinate_with_sheet(
2358 &mut self,
2359 sheet_name: &str,
2360 root_col_num: &u32,
2361 offset_col_num: &u32,
2362 root_row_num: &u32,
2363 offset_row_num: &u32,
2364 ) {
2365 self.two_cell_anchor
2366 .as_mut()
2367 .adjustment_insert_coordinate_with_sheet(
2368 sheet_name,
2369 root_col_num,
2370 offset_col_num,
2371 root_row_num,
2372 offset_row_num,
2373 );
2374 }
2375
2376 #[inline]
2377 fn adjustment_remove_coordinate_with_sheet(
2378 &mut self,
2379 sheet_name: &str,
2380 root_col_num: &u32,
2381 offset_col_num: &u32,
2382 root_row_num: &u32,
2383 offset_row_num: &u32,
2384 ) {
2385 self.two_cell_anchor
2386 .as_mut()
2387 .adjustment_insert_coordinate_with_sheet(
2388 sheet_name,
2389 root_col_num,
2390 offset_col_num,
2391 root_row_num,
2392 offset_row_num,
2393 );
2394 }
2395}