原文:http://blog.sina.com.cn/s/blog_5cef6d430100dfye.html
1、在解决方案窗口的“引用” 里,引用“COM”,选择Microsoft Word 12 Object Library
2、新建word模板文件
插入书签(打印时,模板文件格式会破坏,建议采用窗体域)
方法:插入-->书签
插入窗体域
方法:视图-->工具栏-->窗体
文本窗体域可以设置长度,不过一个字符或一个汉字长度都为1.
3、编写代码
//创建Word.Application对象
Word.Application appWord = null;
//创建Word.Document对象
Word.Document doc = null;
string fileDirectory = "";
try
{
//实例化Word.ApplicationClass对象
appWord = new Microsoft.Office.Interop.Word.ApplicationClass();
//不打开界面
//appWord.Visible = false;
object objTrue = true;
object objFalse = false;
//获取应用程序的当前工作目录
fileDirectory = System.IO.Directory.GetCurrentDirectory();
//模板路径
object objTemplate = fileDirectory + "\\template.doc";
//设置文档类型
object objDocType = Microsoft.Office.Interop.Word.WdDocumentType.wdTypeDocument;
//第一步生成word文档
doc = appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue);
//定义书签变量
object obDD_Name = "Name";//姓 名
object obDD_Gender1 = "gender1";//性 别
object obDD_Gender2 = "gender2";//性 别
object obDD_Sex = "Sex";//性 别
object obDD_Birthday = "Birthday"; //出生年月
object obDD_Native = "Native"; //籍 贯
//第二步 读取数据,填充数据集
//SqlDataReader dr = null;//读取出来的数据集
//第三步 给书签赋值
//给书签赋值方法一
//------- begin -------
object missing = System.Reflection.Missing.Value;
object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref obDD_Name);
doc.ActiveWindow.Selection.TypeText("某某某");
//换行
//doc.ActiveWindow.Selection.TypeParagraph();
//------- end -------
//给书签赋值方法二
//------- begin -------
//doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = "男";
//------- end -------
//给文本型窗体域赋值方法
//CHR(13)表示段落标记(相当于Word中的Enter键,而CHR(11)表示换行符,等同于Word中的SHIFT+ENTER
doc.FormFields.get_Item(ref obDD_Birthday).Result = "1979-03-25";
//给复选框型窗体域赋值方法
doc.FormFields.get_Item(ref obDD_Gender1).CheckBox.Value = true;
//给下拉框型窗体域赋值方法
doc.FormFields.get_Item(ref obDD_Native).DropDown.Value = 4; //下拉框的序号,从1开始
//第四步 生成word文件
object filename = fileDirectory + "\\test.doc";
object miss = System.Reflection.Missing.Value;
doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object missingValue = Type.Missing;
object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Application.Quit(ref miss, ref miss, ref miss);
doc = null;
appWord = null;
}
catch (System.Exception e)
{
//捕捉异常,如果出现异常则清空实例,退出word,同时释放资源
string aa = e.ToString();
object miss = System.Reflection.Missing.Value;
object missingValue = Type.Missing;