OpenXml SDK學習筆記(5):最後的除錯
阿新 • • 發佈:2021-11-10
上一篇筆記結束的時候,我對比了一下兩個文件。那已經是基本一模一樣了。然後,我通過電腦微信發給客戶。客戶收到後很驚訝,居然是空白?然後,我也用手機微信打開了這個檔案,一看居然真的是空白,非常頭痛。於是,我拿電腦開啟這個檔案,再另存為一下,再發到手機,發現居然神奇的可以看了。也就是說,肯定是我哪裡的程式碼出了問題,對比一下我生成的程式碼和手機可以看的程式碼(本來想截圖的,無奈被我刪了),就可以發現原來可以用的程式碼<w:p>是放在<w:body>裡的。而我的程式碼就直接寫在了w:document裡。啊。。。這。。。於是,查了一下程式碼,就可以發現我的AddParagraph沒有將段落新建在Document.MainDocumentPart.Body裡。(就這個小問題,我調了至少30分鐘)
那既然找到了,就好辦了,改一下程式碼咯:
1 #region 初始化文件 2 protected void InitializeDocument() 3 { 4 var doc = InternalDocument; 5 if (doc.MainDocumentPart == null) 6 { 7 doc.AddMainDocumentPart(); 8 } 9 10 if (doc.MainDocumentPart.Document == null) 11 { 12 doc.MainDocumentPart.Document = new Document();13 } 14 15 if (doc.MainDocumentPart.Document.Body == null) 16 { 17 doc.MainDocumentPart.Document.Body = new Body(); 18 } 19 } 20 #endregion
public CompositeElementBase AppendParagraph(WordStyles style) { var body = InternalDocument.MainDocumentPart.Document.Body; Paragraph para = new Paragraph(); body.Append(para); WordParagraph wpara = new WordParagraph(para, this); wpara.SetStyle(style); return wpara; }
就這麼簡單,然後就可以正常使用啦!客戶收到檔案,非常滿意,這個功能變更就此完成。