使用Xceed DocX生成Docx文档返回空白文件求助
解决Xceed DocX生成空白Docx文件的问题
嘿,我找到你这个空白文档问题的根源啦!
当你调用document.Save()把内容写入MemoryStream后,流的位置指针会停在写入数据的末尾。这时候直接把这个流传给File方法,它会从当前指针位置开始读取——而末尾之后没有任何内容,自然生成的文档就是空白的。
这里是修正后的完整代码,关键步骤我标出来了:
MemoryStream stream = new MemoryStream(); Xceed.Words.NET.DocX document = Xceed.Words.NET.DocX.Create(stream); Xceed.Words.NET.Paragraph p = document.InsertParagraph(); p.Append("Hello World"); document.Save(); // 重点!把流的位置重置到起始处,这样File方法才能读到全部内容 stream.Position = 0; return File(stream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "DOCHK.docx");
小提醒
- 确认你已经正确安装了
Xceed.Words.NET的NuGet包,尽量用最新的稳定版本,避免版本兼容带来的奇怪问题。 - 以后对MemoryStream操作后,如果需要再次读取,都要记得检查并重置指针位置哦~
内容的提问来源于stack exchange,提问作者jks




