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