【发布时间】:2018-09-04 10:25:16
【问题描述】:
我想将数据从文本文件复制到 word 文件。我已经尝试过使用Interop 使用string array、StringBuilder 和StreamReader 等不同的替代方案,效果很好,但需要太多时间。如果有人能给我推荐一个更好的,那将非常感激。在网上翻了很多表格,都找不到。
仅供参考:我的文本文件包含超过 1,00,000 行。
这是我尝试过的一种:
string[] lines = File.ReadAllLines(path); //path is text file path
var doc = new MSWord.Document();
foreach (string lin in lines)
{
doc.Content.Text += lin.ToString();
}
doc.Save();
嗯,这很好用,但需要很多时间,有时还会引发如下错误:
未处理的异常:System.Runtime.InteropServices.COMException:Word 遇到问题。
【问题讨论】:
-
为什么不File.ReadAllText 然后删除
foreach循环?这比在循环中连接字符串要“便宜”得多。doc.Content.Text = File.ReadAllText(path); -
您是否调查过导致异常的原因?例如 - 您尝试附加的字符串中是否有不寻常的字符? Igor 的解决方案会节省时间 - 但如果异常是由于您的文本文件的内容引起的 - 那么它仍然可能发生。
-
@lgor:是的,这实际上会做得更好,但我仍然需要超过 15 分钟的时间。
-
我建议尝试Range.ImportFragment。
-
不使用 File 方法读取文件 - 你能用 MSWord 文档打开文本文件然后另存为 word 文档吗?
标签: c# ms-word text-files winforms-interop