OpenXml SDK学习笔记(5):最后的调试

上一篇笔记结束的时候,我对比了一下两个文档。那已经是基本一模一样了。然后,我通过电脑微信发给客户。客户收到后很惊讶,居然是空白?然后,我也用手机微信打开了这个文件,一看居然真的是空白,非常头痛。于是,我拿电脑打开这个文件,再另存为一下,再发到手机,发现居然神奇的可以看了。也就是说,肯定是我哪里的代码出了问题,对比一下我生成的代码和手机可以看的代码(本来想截图的,无奈被我删了),就可以发现原来可以用的代码<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;
}

就这么简单,然后就可以正常使用啦!客户收到文件,非常满意,这个功能变更就此完成。

 

posted @ 2021-11-10 21:56  bluesky234  阅读(217)  评论(0编辑  收藏  举报