2017-03-01 60 views
0

嗨!C#为电子表格图表添加简单标题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说“文件已损坏”或类似的东西。

+0

你可以发布你的代码,生成一个非损坏的文件?然后我们可以帮助您改变它以获得一些标题。 – Taterhead

回答

0

有点晚了,但我面临着同样的任务,我创建了一个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,并注入在正确的地方上面的函数(创建图表对象之后)它会添加图表标题。

相关问题