Spire.Presentation is a professional PowerPoint® compatible library that enables developers to create, read, write, modify, convert and Print PowerPoint documents. Get free and professional technical support for Spire.Presentation for .NET, Java, Android, C++, Python.
Mon Nov 02, 2020 2:00 pm
Hi Team,
As part of our requirement, we are supposed to change the color of the data labels in stacked column chart in ppt. Could anyone help me with that?
Goal:
goal.jpg
the text here I changed manually using MS powerpoint to make it white. I need to do that from code using spire.
Login to view the files attached to this post.
-
sruthibalachandran
-
- Posts: 4
- Joined: Mon Nov 02, 2020 1:53 pm
Tue Nov 03, 2020 7:07 am
Hello,
Thanks for your feedback.
Please refer to the following code to change the color of the data labels in stacked column chart. If there are any questions, please provide your input file for further investigation.
- Code: Select all
Presentation ppt = new Presentation();
ppt.LoadFromFile(@"sample.pptx");
IChart chart = (IChart)ppt.Slides[0].Shapes[0];
foreach (ChartSeriesDataFormat chartSeries in chart.Series) {
chartSeries.DataLabels.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.SolidColor.KnownColor = KnownColors.White;
}
ppt.SaveToFile("Labels_result.pptx", FileFormat.Pptx2010);
Sincerely,
Brian
E-iceblue support team
-
Brian.Li
-
- Posts: 1271
- Joined: Mon Oct 19, 2020 3:04 am
Wed Nov 04, 2020 7:21 am
Hi Brian,
Thank you for your response.Really appreciate your quick turnaround. I tried the code you posted but unfortunately it did not work for me.
However, I found the solution for the issue.
Here is the code for formatting datalabels -
- Code: Select all
for (Int32 c = 0; c < cols.Count(); ++c)
{
chart.Series[c].Values = chart.ChartData[1, c + 1, columnlabels.Count(), c + 1];
chart.Series[c].Fill.FillType = FillFormatType.Solid;
chart.Series[c].InvertIfNegative = false;
for (Int32 r = 0; r < rows.Count(); ++r)
{
var label = chart.Series[c].DataLabels.Add();
label.LabelValueVisible = true;
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.FontHeight = 12;
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.LatinFont = new TextFont("DM Sans");
label.Position = ChartDataLabelPosition.Center;
chart.Series[c].DataLabels[r].HasDataSource = false;
chart.Series[c].DataLabels[r].NumberFormat = "##.##";
//change to white color
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.FillType = FillFormatType.Solid;
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.SolidColor.Color = Color.White;
}
}
This part of code did the trick for me -
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.FillType = FillFormatType.Solid;
label.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.SolidColor.Color = Color.White;
-
sruthibalachandran
-
- Posts: 4
- Joined: Mon Nov 02, 2020 1:53 pm
Wed Nov 04, 2020 9:53 am
Hello,
OK, thanks for your feedback.
I'm glad to hear that you finally found the solution. If you encounter any issues related to our products in the future, please feel free to contact us.
Wish you all the best!
Sincerely,
Brian
E-iceblue support team
-
Brian.Li
-
- Posts: 1271
- Joined: Mon Oct 19, 2020 3:04 am