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