您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > C#操作Word表格
向表格中添加行,有两种操作形式:一种是在WORD模板中已经存在了一个表格。一种是我们在程序中直接添加一个表格对象。第一种情况下,需要注意:在WORD模板中要操作的表格中,不能有纵向合并的单元格,不然程序无法获取到当前要操作对象导致程序报错.单元格的合并,我们可以在程序中控制。第二种情况下就需要我们通过程序去直接添加表格了。生成表格的代码具体如下:1.获取文档中已存在的表格:Microsoft.Office.Interop.Word.TablecharacterTable=doc.Tables[2];//在document对象的集合操作中,起始点是从1开始,并不是从0开始的,此处需要注意。2.在文档中直接生成表格,首先要获取插入表格的位置,然后添加表格对象:objectoEndOfDoc=\\endofdoc;//WORD中预定义的书签,还有很多,此处就不一一列举。objectoMissing=System.Reflection.Missing.Value;RangewrdRng=doc.Bookmarks.get_Item(refoEndOfDoc).Range;//获取当前文档的末尾位置。wrdRng.InsertAfter();//插入一行,此处不能用wrdRng.InsertAfter(),如果用这个,就不能换行,我也不知道为什么。[复制此代码]CODE:objectoCollapseEnd=Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd;objectoPageBreak=Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;//分页符wrdRng.Collapse(refoCollapseEnd);wrdRng.InsertBreak(refoPageBreak);//插入了一页wrdRng.Collapse(refoCollapseEnd);wrdRng.InsertAfter(图片信息);wrdRng.Font.Size=20;//指定操作对象的文字大小wrdRng.Font.Bold=1;//指定操作对象的粗体:1为粗体,0为正常wrdRng.ParagraphFormat.Alignment=WdParagraphAlignment.wdAlignParagraphCenter;//指定操作区域的文字布局:居中对齐//上述代码的意思是:找到当前的末尾位置,然后插入一个分页符,相当于跳到了一个新页,在这个新页的顶端写入文字“图片信息”,并指定文字大小为20,粗体居中显示。wrdRng=doc.Bookmarks.get_Item(refoEndOfDoc).Range;wrdRng.InsertAfter();wrdRng=doc.Bookmarks.get_Item(refoEndOfDoc).Range;wrdRng.InsertParagraphAfter();//插入一个段落,在此段落上插入一个2行一列的表格。Microsoft.Office.Interop.Word.TablenewTable=doc.Tables.Add(wrdRng,2,1,refoMissing,refoMissing);我们还可以对表格进行格式设置,此处我们就不在一一列举。3.下面我们分析一下对表格的单元格的操作:合并,拆分。这个就需要我们根据实际表格来进行操作://获取具体的某个单元格(1,1),获取第一行第一列的单元格Cellcell=doc.Tables[1].Cell(1,1);cell.Range.Text=Text;//指定当前单元格的内容为Text在Table的操作中,添加新行:objectbeforeRow=doc.Tables[1].Rows[2];//此行是先获取到第二行doc.Tables[1].Rows.Add(refbeforeRow);//效果类似于在WORD中此表格的第二行上进行【插入行】操作,插入的新行将会插入到当前行的上一行中,格式也是和此行一致的。//合并单元格:感觉在此处合并单元格挺傻瓜的,你只需要指定你要合并的起始单元格和结束单元格,然后通过Merge操作就行了Cellcell=doc.Tables[1].Cell(iRow,2);//列合并cell.Merge(doc.Tables[1].Cell(iRow,6));Cellcell1=doc.Tables[1].Cell(iRow-1,1);//行合并cell1.Merge(doc.Tables[1].Cell(iRow+1,1));上述操作就是在此程序中用到的一些知识点,还有好多的东西需要去熟悉、理解。另外,在程序的测试过程中发现,当执行一次文档生成后,在资源管理器中始终有winword.exe进程杀不掉,目前的解决办法是:直接杀进程,代码如下:[复制此代码]CODE:protectedvoidkillAllProcess()//杀掉所有winword.exe进程{System.Diagnostics.Process[]myPs;myPs=System.Diagnostics.Process.GetProcesses();foreach(System.Diagnostics.ProcesspinmyPs){if(p.Id!=0){stringmyS=WINWORD.EXE+p.ProcessName+ID:+p.Id.ToString();try{if(p.Modules!=null)if(p.Modules.Count0){System.Diagnostics.ProcessModulepm=p.Modules[0];myS+=\nModules[0].FileName:+pm.FileName;myS+=\nModules[0].ModuleName:+pm.ModuleName;myS+=\nModules[0].FileVersionInfo:\n+pm.FileVersionInfo.ToString();if(pm.ModuleName.ToLower()==winword.exe)p.Kill();}}catch{}finally{}}}}目前为止,一个WORD文档就生成了。上述为我在这个程序开发中遇到的问题和解决方法,可能有好多地方都是考虑不全的,如果在程序开发中对WORD的操作有新的认识的话,欢迎和我沟通交流,彼此提高!下边是在网上一些比较好的摘抄:创建新Word[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;oDoc=oWord.Documents.Add(refoMissing,refoMissing,refoMissing,refoMissing);打开文档:[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;objectfileName=@E:CCCXCXXTestDoc.doc;oDoc=oWord.Documents.Open(reffileName,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing,refoMissing);导入模板[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;objectfileName=@E:XXXCCXTest.doc;oDoc=oWord.Documents.Add(reffileName,refoMissing,refoMissing,refoMissing);.添加新表[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;oDoc=oWord.Documents.Add(refoMissing,refoMissing,refoMissing,refoMissing);objectstart=0;objectend=0;Word.RangetableLocation=oDoc.Range(refstart,refend);oDoc.Tables.Add(tableLocation,3,4,refoMissing,refoMissing);.表插入行[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;oDoc=oWord.Documents.Add(refoMissing,refoMissing,refoMissing,refoMissing);objectstart=0;objectend=0;Word.RangetableLocation=oDoc.Range(refstart,refend);oDoc.Tables.Add(tableLocation,3,4,refoMissing,refoMissing);Word.TablenewTable=oDoc.Tables[1];objectbeforeRow=newTable.Rows[1];newTable.Rows.Add(refbeforeRow);.单元格合并[复制此代码]CODE:objectoMissing=System.Reflection.Missing.Value;Word._ApplicationoWord;Word._DocumentoDoc;oWord=newWord.Application();oWord.Visible=true;oDoc=oWord.Documents.Add(refoMissing,refoMissing,refoMissing,refoMissing);objectstart=0;objectend=0;Word.RangetableLocation=oDoc.Range(refstart,refend);oDoc.Tables.Add(tableLocation,3,4,refoMissing,refoMissing);Word.TablenewTable=oDoc.Tables[1];objectbeforeRow=newTable.Rows[1];newTable.Rows.Add(refbeforeRow);Word.Cellcell=newTable.Cell(1,1);cell.Merge(newTable.Cell(1,2));
本文标题:C#操作Word表格
链接地址:https://www.777doc.com/doc-4245824 .html