- ///#region 打开Word文档,并且返回对象wDoc,wDoc
- ///
- /// 打开Word文档,并且返回对象wDoc,wDoc
- ///
- /// 完整Word文件路径+名称
- /// 返回的Word.Document wDoc对象
- /// 返回的Word.Application对象
- public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp)
- {
- if(FileName == "") return;
- Word.Document thisDocument = null;
- Word.FormFields formFields = null;
- Word.Application thisApplication = new Word.ApplicationClass();
- thisApplication.Visible = true;
- thisApplication.Caption = "";
- thisApplication.Options.CheckSpellingAsYouType = false;
- thisApplication.Options.CheckGrammarAsYouType = false;
- Object filename = FileName;
- Object ConfirmConversions = false;
- Object ReadOnly = true;
- Object AddToRecentFiles = false;
- Object PasswordDocument = System.Type.Missing;
- Object PasswordTemplate = System.Type.Missing;
- Object Revert = System.Type.Missing;
- Object WritePasswordDocument = System.Type.Missing;
- Object WritePasswordTemplate = System.Type.Missing;
- Object Format = System.Type.Missing;
- Object Encoding = System.Type.Missing;
- Object Visible = System.Type.Missing;
- Object OpenAndRepair = System.Type.Missing;
- Object DocumentDirection = System.Type.Missing;
- Object NoEncodingDialog = System.Type.Missing;
- Object XMLTransform = System.Type.Missing;
- try
- {
- Word.Document wordDoc =
- thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
- ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
- ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
- ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
- ref NoEncodingDialog, ref XMLTransform );
- thisDocument = wordDoc;
- wDoc = wordDoc;
- WApp = thisApplication;
- formFields = wordDoc.FormFields;
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- #endregion
- 调用上面静态方法,打开目标文件并且把DataGrid中数据填充到对应Word标签中去
- ///#region Word填充数据(For Example)
- ///
- /// Word填充数据
- ///
- private void WordLoadData()
- {
- Word.Document wDoc=null;
- Word.Application wApp=null;
- sysFun.CreateWordDocument("E://监测报告(new).dot",ref wDoc,ref wApp);
- //对标签"C"进行填充
- object bkmC="C";
- if(wApp.ActiveDocument.Bookmarks.Exists("C") == true)
- {
- wApp.ActiveDocument.Bookmarks.get_Item
- (ref bkmC).Select();
- }
- wApp.Selection.TypeText(this.txt1.Text);
- object bkmG = "TWaterTable3";
- object unit;
- object count; //移动数
- object extend;
- extend = Word.WdMovementType.wdExtend;
- unit = Word.WdUnits.wdCell;
- //把DataGrid中数据填充到标签TWaterTable3上
- if(wApp.ActiveDocument.Bookmarks.Exists("TWaterTable3") == true)
- {
- wApp.ActiveDocument.Bookmarks.get_Item
- (ref bkmG).Select();
- for(int i=0;i {
- if(i==0)
- {
- count=1;
- }
- else
- {
- count=0;
- }
- //需填充5列数据
- wApp.Selection.Move(ref unit,ref count);
- wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[0].Text);
- count=1;
- wApp.Selection.Move(ref unit,ref count);
- wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[1].Text);
- wApp.Selection.Move(ref unit,ref count);
- wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[2].Text);
- wApp.Selection.Move(ref unit,ref count);
- wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[3].Text);
- wApp.Selection.Move(ref unit,ref count);
- wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[4].Text);
- //换行
- wApp.Selection.MoveRight(ref unit,ref count,ref extend);
- }
- }
- }
- #endregion
实现方法:首先需要引用VBA组建,我用的是Office2003 Professional,Dll版本号为Microsoft Word11.0
另外当然还需要引用Interop.Word.Dll.
代码如下:
然后就OK了,在对标签表控制要注意列循环和换行.