Ms word Word/Office Automation-如何从下拉表单字段检索选定值
我正在尝试使用c#通过office automation检索word文档中所有字段的值。代码如下所示,但是如果字段是下拉列表,则范围文本的值始终为空,即使我知道它已填充。如果它是一个简单的文本字段,那么我可以看到范围文本。如何获取选定的下拉项?我觉得一定有很简单的事情我做错了Ms word Word/Office Automation-如何从下拉表单字段检索选定值,ms-word,office-interop,Ms Word,Office Interop,我正在尝试使用c#通过office automation检索word文档中所有字段的值。代码如下所示,但是如果字段是下拉列表,则范围文本的值始终为空,即使我知道它已填充。如果它是一个简单的文本字段,那么我可以看到范围文本。如何获取选定的下拉项?我觉得一定有很简单的事情我做错了 private void OpenWordDoc(string filename) { Microsoft.Office.Interop.Word.Application app = new Microsoft.Off
private void OpenWordDoc(string filename) {
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Open(filename, ReadOnly: true, Visible: false);
foreach (Field f in doc.Fields) {
string bookmarkName = "??";
if (f.Code.Bookmarks.Count > 0) {
bookmarkName = f.Code.Bookmarks[1].Name; // have to start at 1 because it is vb style!
}
Debug.WriteLine(bookmarkName);
Debug.WriteLine(f.Result.Text); // This is empty when it is a drop down field
}
doc.Close();
app.Quit();
}
啊哈-如果我扫描表单字段而不是字段,那么一切都很好
foreach (FormField f in doc.FormFields) {
string bookmarkName = "??";
if (ff.Range.Bookmarks.Count > 0) {
bookmarkName = ff.Range.Bookmarks[1].Name; // have to start at 1 because it is vb style!
}
Debug.WriteLine(bookmarkName);
Debug.WriteLine(ff.Result); // This is empty when it is a drop down field
}
问题解决了。呸。啊哈-如果我扫描表单字段而不是字段,那么一切都很好
foreach (FormField f in doc.FormFields) {
string bookmarkName = "??";
if (ff.Range.Bookmarks.Count > 0) {
bookmarkName = ff.Range.Bookmarks[1].Name; // have to start at 1 because it is vb style!
}
Debug.WriteLine(bookmarkName);
Debug.WriteLine(ff.Result); // This is empty when it is a drop down field
}
问题解决了。呸。foreach中的变量名应该是
ff
而不是f
foreach中的变量名应该是ff
而不是f