[英]how to insert text from c# application into MS word document and save it as new file
[英]C# Retrieve FormFields from Word Document and Insert into Text file
我試圖弄清楚如何遍歷文檔並提取所有表單字段並將其插入新的文本文件。 我正在嘗試尋找所需功能的示例,但並沒有提供很多信息。 也許我搜索不正確。 到目前為止,這是我寫的內容。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
using System.IO;
namespace purform
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// create instance of Word
Microsoft.Office.Interop.Word.ApplicationClass oWordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
// create instance of Word document
Microsoft.Office.Interop.Word.Document oWordDoc = new Document();
object missing = System.Reflection.Missing.Value;
try
{
//declare objects
object fileName = @"C:\\path\\to\\file.doc";
object readOnly = false;
object isVisible = true;
//open word doc
oWordDoc = oWordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref readOnly,
ref missing, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing);
oWordDoc.Activate();
}
catch (Exception ex)
{
Console.WriteLine("Unable to locate and activate document file");
}
object oFormFields = fieldArray[i, 0];
oWordDoc.FormFields.get_Item(ref oFormFields).Range =
System.IO.File.WriteAllText(@"\\path\\to\\file.txt", fieldArray[]);
}
}
}
如何獲得mergefields?
我過去曾經使用過這樣的代碼。
還要注意FormFields不是mergefields
foreach(Field wdField in workDoc.Fields)
{
if (wdField.Type == WdFieldType.wdFieldMergeField)
{
wdField.Select();
string fieldText = wdField.Result.Text;
}
}
您可以使用類似這樣的東西。 您會看到我在大多數代碼中都插入了注釋,就像我僅使用“獲取書簽名稱”部分一樣。 您還可以獲取文本表單字段的格式。
foreach (Word.FormField oFormFields in oDoc.FormFields) {
//To Get Bookmark Name
if (oFormFields.Name.Contains("CompanyEntity")) {
//With Values
BMClick = BMClick + "," + oFormFields.Name;
BMType = oFormFields.Type.ToString();
BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
}
//from here: get all BM names
//if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormTextInput)
//{
// ////To Get Bookmark Name
// //if ((oFormFields.Name.ToUpper().Contains("LR_M_IssueDate")) || (oFormFields.Name.ToUpper().Contains("LR_O_ExpiryDate")))
// //{
// // BMClick = BMClick + "," + oFormFields.Name;
// //}
// //With Values
// //BMClick = BMClick + "," + oFormFields.Name;
// //BMType = oFormFields.Type.ToString();
// //BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
////To check the text field format
// switch (((Microsoft.Office.Interop.Word.WdTextFormFieldType)oFormFields.TextInput.Type))
// {
// case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdRegularText:
// {
// ////To Get Bookmark Name
// //if ((oFormFields.Name.ToUpper().Contains("LR_M_IssueDate")) || (oFormFields.Name.ToUpper().Contains("LR_O_ExpiryDate")))
// //{
// // BMClick = BMClick + "," + oFormFields.Name;
// //}
// BMClick = BMClick + "," + oFormFields.Name;
// BMType = oFormFields.Type.ToString();
// BMClick = BMClick + "," + BMType;
// BMTextType = oFormFields.TextInput.Type.ToString();
// BMClick = BMClick + "," + BMTextType + "\n";
// break;
// }
// case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdDateText:
// //if ((oFormFields.Name.ToUpper().Contains("LR_M_ISSUEDATE")) || (oFormFields.Name.ToUpper().Contains("LR_O_EXPIRYDATE")))
// //{
// // BMClick = BMClick + "," + oFormFields.Name;
// //}
// BMClick = BMClick + "," + oFormFields.Name;
// BMType = oFormFields.Type.ToString();
// BMClick = BMClick + "," + BMType;
// BMTextType = oFormFields.TextInput.Type.ToString();
// BMClick = BMClick + "," + BMTextType + "\n";
// break;
// case Microsoft.Office.Interop.Word.WdTextFormFieldType.wdNumberText:
// BMClick = BMClick + "," + oFormFields.Name;
// BMType = oFormFields.Type.ToString();
// BMClick = BMClick + "," + BMType;
// BMTextType = oFormFields.TextInput.Type.ToString();
// BMClick = BMClick + "," + BMTextType + "\n";
// break;
// default:
// //MessageBox.Show("no");
// break;
// }
//}
//else if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormCheckBox)
//{
// BMClick = BMClick + "," + oFormFields.Name;
// BMType = oFormFields.Type.ToString();
// BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
//}
////{
//// if (oFormFields.Name == "")
//// {
//// Word.Range curPageRange = new Word.Range;
//// object AtPage = @"\page";
//// curPageRange = oDoc.Bookmarks.get_Item(ref AtPage).Range;
//// //curPageRange.Select();
//// BMClick=BMClick + "," + curPageRange;
//// }
////}
//else if (oFormFields.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormDropDown)
//{
// BMClick = BMClick + "," + oFormFields.Name;
// BMType = oFormFields.Type.ToString();
// BMClick = BMClick + "," + BMType + "," + oFormFields.Result + "\n";
//}
////{
//// if (oFormFields.Name == "")
//// {
//// Word.Range curPageRange = new Word.Range;
//// object AtPage = @"\page";
//// curPageRange = oDoc.Bookmarks.get_Item(ref AtPage).Range;
//// //curPageRange.Select();
//// BMClick=BMClick + "," + curPageRange;
//// }
////}
//until here: get all BM names
ctr++;
// }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.