【发布时间】:2016-03-08 01:45:50
【问题描述】:
我在尝试使用 Word Interop 从 Word 文档中删除数据/文本列表时遇到问题。到目前为止,我认为我可以通读文档以找到起始文本,然后找到结束文本,并将每个索引保存到它们自己的变量中。接下来,我将遍历从起始索引到结束索引的数据并删除其间的所有文本。
问题是它工作不正确并且没有提供预期的结果。我一定不明白Range 接口在document.Paragraphs[i+1].Range.Delete(); 中是如何工作的。它删除了一些行但不是全部,并且似乎超出了我想要删除的段落。我错过了什么?必须有更好的方法来做到这一点。 Interop 的文档似乎很少。
string text = " ";
int StartLocation = 0;
int EndLocation = 0;
//I roughly know the starting location
//starting at I=2248 so I don't
//through entire document
for (int i = 2248; i < 2700; i++)
{
text = document.Paragraphs[i + 1].Range.Text.ToString();
if (text.Contains("firstWordImSearchingFor"))
{
StartLocation = i;
}
if (text.Contains("lastWordImSearchingFor"))
{
EndLocation = i;
}
}
//delete everything between those paragraph locations
//(not working correctly/ skips lines)
for(int i = StartLocation; i<EndLocation-1i++)
{
document.Paragraphs[i+1].Range.Delete();
}
【问题讨论】:
-
在
how to remove text from a word doc C# Microsoft.Interop上进行谷歌搜索,同时查看此内容以获取一些可能的指针stackoverflow.com/questions/10231132/… -
如果您使用的是
.docx文件而不是.doc文件,我建议您停止使用互操作类并切换到the newer SDK Microsoft released 专门用于处理docx文件。 -
是的,我已经进行了许多谷歌搜索并查看了其他问题/答案。其他我没有找到与我的问题相关的答案,或者我遗漏了一些东西。在大多数情况下,使用 Interop 创建文档时我没有遇到太多麻烦。出于某种原因,我被困在这听起来很简单。
-
有什么理由不使用 OpenXML 来生成/修改
docx? -
目前是有原因的,但希望在不久的将来会改变。所以 .doc 是我现在必须处理的。
标签: c# ms-word office-interop