2017-03-01 96 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,並注入在正確的地方上面的函數(創建圖表對象之後)它會添加圖表標題。

相關問題