您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“OPENXML中修改統(tǒng)計(jì)圖的注意事項(xiàng)有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“OPENXML中修改統(tǒng)計(jì)圖的注意事項(xiàng)有哪些”這篇文章吧。
在word文檔中,可以通過excel表格,在文檔中,建立一個統(tǒng)計(jì)圖,在程序開發(fā)中,可以找到這個統(tǒng)計(jì)圖,修改一系列的數(shù)據(jù),從而達(dá)到更新統(tǒng)計(jì)圖的效果,使用openxml庫,可以達(dá)到修改數(shù)據(jù)的效果。
用解壓縮工具打開一個word文檔的示例,word文檔中包含統(tǒng)計(jì)圖,在結(jié)構(gòu)中發(fā)現(xiàn)word文檔中存儲了一個excel附件,在embeddings的文件夾中,所以修改統(tǒng)計(jì)圖的時候,一定要把此excel文件也要同步修改。
在文檔中要先找到統(tǒng)計(jì)圖的元素,在開發(fā)中,使用ChartParts,根據(jù)chart的個數(shù),選擇要修改的chart元素。
var _chartParts = _mainDocPart.ChartParts;
找到統(tǒng)計(jì)圖的附件文件,獲取其中的excel文件,之后就是處理excel文件中的數(shù)據(jù),修改execel中的行列數(shù)據(jù),具體方法參見C#使用 OpenXML SDK讀取Excel文檔。
var _empart = _chartParts.First().EmbeddedPackagePart;
Stream stream = _empart.GetStream();
using (SpreadsheetDocument ssDoc =SpreadsheetDocument.Open(stream, true))
需要注意的是,假如統(tǒng)計(jì)圖的橫軸是以時間為單位,需要用ToOADate(OLE 自動化日期)進(jìn)行相應(yīng)的轉(zhuǎn)換,
_dateParm.ToOADate().ToString();
修改完excel后,打開word發(fā)現(xiàn)統(tǒng)計(jì)圖的數(shù)據(jù)并沒有更新,點(diǎn)擊一下編輯,統(tǒng)計(jì)圖倒是更新了,是因?yàn)榻y(tǒng)計(jì)圖中也有數(shù)據(jù)的緩存,需要同步進(jìn)行修改。
從統(tǒng)計(jì)圖找到NumericValue的值,根據(jù)循環(huán),將其中的文本進(jìn)行修改。
LineChartSeries bs1 = _chartPart.ChartSpace.Descendants<LineChartSeries>().First();
IEnumerable<NumericValue> _numCaches = bs1.Descendants<NumericValue>();
以上是“OPENXML中修改統(tǒng)計(jì)圖的注意事項(xiàng)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。