我有一个 word 文档,其中包含用“[[]]”表示的标签,例如 [[sqlscript1]]。我想扫描文档并在文本框中显示 sqlscript1。我只能阅读包含 [[]] 的单词吗?
问问题
751 次
3 回答
1
正如millimoose 所说,OpenXML SDK 正是您所寻找的。我们在动态PowerPoint幻灯片的文档生成中做了类似的事情。SDK 使您能够对相关文档的对象模型进行编程处理,并根据需要对其进行更改/搜索/操作。
于 2012-12-26T23:02:23.473 回答
1
首先,将 Word 文档的内容加载到内存中。其次,使用正则表达式查找由双方括号表示的标签(必需的模式:)"\[\[(?<tag>[^\]]*)\]\]"
。
于 2012-12-26T23:04:07.803 回答
1
您需要使用 Interop-DLL 从 Word 文档中提取文本。看看这个: http: //msdn.microsoft.com/en-US/library/ms173188 (v=vs.80).aspx
然后使用以下内容读取文件:
object file = Path.GetDirectoryName(Application.ExecutablePath) + @"\Answer.doc";
Word.Application wordObject = new Word.ApplicationClass();
wordObject.Visible = false;
object nullobject = Missing.Value;
Word.Document docs = wordObject.Documents.Open
(ref file, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject,
ref nullobject, ref nullobject, ref nullobject, ref nullobject);
String strLine;
bool bolEOF = false;
docs.Characters[1].Select();
int index = 0;
do
{
object unit = Word.WdUnits.wdLine;
object count = 1;
wordObject.Selection.MoveEnd(ref unit, ref count);
strLine = wordObject.Selection.Text;
richTextBox1.Text += ++index + " - " + strLine + "\r\n"; //for our understanding
object direction = Word.WdCollapseDirection.wdCollapseEnd;
wordObject.Selection.Collapse(ref direction);
if (wordObject.Selection.Bookmarks.Exists(@"\EndOfDoc"))
bolEOF = true;
} while (!bolEOF);
docs.Close(ref nullobject, ref nullobject, ref nullobject);
wordObject.Quit(ref nullobject, ref nullobject, ref nullobject);
docs = null;
wordObject = null;
现在将每一行复制到一个变量中并使用这个正则表达式命令来检查你的模式:
Regex.Match(MYTEXT, @"\[[([^)]*)\]]").Groups[1].Value
于 2012-12-26T23:05:56.257 回答