C# 为电子表格图表 OpenXml 添加简单标题
C# add simple title for spreadsheet chart OpenXml
嗨!!
我可以将图表写入我的 XLSX 文件。但我坚持为每个图表添加一个简单的标题。 没有样式只有简单的纯文本。
我的代码是这样的:
String Dtitulo = "Hello chart";
DocumentFormat.OpenXml.Drawing.Charts.Title chartTitle = new DocumentFormat.OpenXml.Drawing.Charts.Title();
chartTitle.ChartText = new ChartText();
chartTitle.ChartText.RichText = new RichText();
DocumentFormat.OpenXml.Drawing.Paragraph parrafoTitulo = new DocumentFormat.OpenXml.Drawing.Paragraph();
DocumentFormat.OpenXml.Drawing.Run run = parrafoTitulo.AppendChild(new DocumentFormat.OpenXml.Drawing.Run());
run.AppendChild(new DocumentFormat.OpenXml.Drawing.Text(Dtitulo));
chartTitle.ChartText.RichText.AppendChild<DocumentFormat.OpenXml.Drawing.Paragraph>(parrafoTitulo);
chart.Title = chartTitle;
但是当我用 excel 打开我的文件时说“文件已损坏”或类似的东西。
有点晚了,但我面临着同样的任务,我创建了一个 excel sheet 并手动添加了一个带有图表标题的图表,然后打开 xml了解需要什么标签。过了一会儿,我开始工作了。将所有内容移动到一个小函数中,如下所示:
所以您可以向下面的函数提供您的图表 object 和您想要的标题,它会添加图表标题。
注意:我正在使用 Open XML SDK 2.0 for Microsoft Office
private void AddChartTitle(DocumentFormat.OpenXml.Drawing.Charts.Chart chart,string title)
{
var ctitle = chart.AppendChild(new Title());
var chartText = ctitle.AppendChild(new ChartText());
var richText = chartText.AppendChild(new RichText());
var bodyPr = richText.AppendChild(new BodyProperties());
var lstStyle = richText.AppendChild(new ListStyle());
var paragraph = richText.AppendChild(new Paragraph());
var apPr = paragraph.AppendChild(new ParagraphProperties());
apPr.AppendChild(new DefaultRunProperties());
var run = paragraph.AppendChild(new DocumentFormat.OpenXml.Drawing.Run());
run.AppendChild(new DocumentFormat.OpenXml.Drawing.RunProperties() { Language = "en-CA" });
run.AppendChild(new DocumentFormat.OpenXml.Drawing.Text() { Text = title });
}
如果你想要一个完整的例子,你可以查看官方的here,并在正确的地方(在创建图表后object)注入上面的函数,它会添加图表标题。
嗨!!
我可以将图表写入我的 XLSX 文件。但我坚持为每个图表添加一个简单的标题。 没有样式只有简单的纯文本。 我的代码是这样的:
String Dtitulo = "Hello chart";
DocumentFormat.OpenXml.Drawing.Charts.Title chartTitle = new DocumentFormat.OpenXml.Drawing.Charts.Title();
chartTitle.ChartText = new ChartText();
chartTitle.ChartText.RichText = new RichText();
DocumentFormat.OpenXml.Drawing.Paragraph parrafoTitulo = new DocumentFormat.OpenXml.Drawing.Paragraph();
DocumentFormat.OpenXml.Drawing.Run run = parrafoTitulo.AppendChild(new DocumentFormat.OpenXml.Drawing.Run());
run.AppendChild(new DocumentFormat.OpenXml.Drawing.Text(Dtitulo));
chartTitle.ChartText.RichText.AppendChild<DocumentFormat.OpenXml.Drawing.Paragraph>(parrafoTitulo);
chart.Title = chartTitle;
但是当我用 excel 打开我的文件时说“文件已损坏”或类似的东西。
有点晚了,但我面临着同样的任务,我创建了一个 excel sheet 并手动添加了一个带有图表标题的图表,然后打开 xml了解需要什么标签。过了一会儿,我开始工作了。将所有内容移动到一个小函数中,如下所示:
所以您可以向下面的函数提供您的图表 object 和您想要的标题,它会添加图表标题。
注意:我正在使用 Open XML SDK 2.0 for Microsoft Office
private void AddChartTitle(DocumentFormat.OpenXml.Drawing.Charts.Chart chart,string title)
{
var ctitle = chart.AppendChild(new Title());
var chartText = ctitle.AppendChild(new ChartText());
var richText = chartText.AppendChild(new RichText());
var bodyPr = richText.AppendChild(new BodyProperties());
var lstStyle = richText.AppendChild(new ListStyle());
var paragraph = richText.AppendChild(new Paragraph());
var apPr = paragraph.AppendChild(new ParagraphProperties());
apPr.AppendChild(new DefaultRunProperties());
var run = paragraph.AppendChild(new DocumentFormat.OpenXml.Drawing.Run());
run.AppendChild(new DocumentFormat.OpenXml.Drawing.RunProperties() { Language = "en-CA" });
run.AppendChild(new DocumentFormat.OpenXml.Drawing.Text() { Text = title });
}
如果你想要一个完整的例子,你可以查看官方的here,并在正确的地方(在创建图表后object)注入上面的函数,它会添加图表标题。