C#为电子表格图表OpenXml添加简单标题

标签 c# excel 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 表并手动添加了一个带有图表标题的图表,然后打开了 xml 以了解需要哪些标签。过了一会儿,我让它工作了。将所有内容移动到一个小函数中,如下所示:

因此,您可以向以下函数提供您想要的图表对象和标题,它将添加图表标题。

注意:我使用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 ,并在正确的位置注入(inject)上述函数(在创建图表对象之后),它将添加图表标题。

关于C#为电子表格图表OpenXml添加简单标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521752/

相关文章:

c# - 将运算符存储在变量中

C# WPF 工具包 : How can I make a cell from a datagrid be editable?

vba - 将多个文本文件导入到工作簿中,其中工作表名称与文本文件名匹配

java - 如何使用java应用程序打印word和excel文档?

c# - 如何在 C# 中创建 Word 文档?

c# - 具有复杂属性的 IEnumerable OrderBy by String

vba - 如何在 Excel 中使用 VBA 获取 3 列的所有不同唯一组合?

data-binding - OpenXML:使用绑定(bind)创建可重用的内容控件

c# - 使用 OpenXML 和 C# 处理 word 文档

c# - 为什么这些随机事件遵循特定的模式?