C# WORD操作实现代码

2019-12-26 11:14:30刘景俊

在Table的操作中,添加新行: 
object beforeRow = doc.Tables[1].Rows[2];//此行是先获取到第二行 
doc.Tables[1].Rows.Add(ref beforeRow);//效果类似于在WORD中此表格的第二行上进行【插入行】操作,插入的新行将会插入到当前行的上一行中,格式也是和此行一致的。 
//合并单元格:感觉在此处合并单元格挺傻瓜的,你只需要指定你要合并的起始单元格和结束单元格,然后通过Merge操作就行了 
Cell cell = doc.Tables[1].Cell(iRow, 2);//列合并 
cell.Merge(doc.Tables[1].Cell(iRow, 6)); 
Cell cell1 = doc.Tables[1].Cell(iRow - 1, 1);//行合并 
cell1.Merge(doc.Tables[1].Cell(iRow + 1, 1)); 
上述操作就是在此程序中用到的一些知识点,还有好多的东西需要去熟悉、理解。 
另外,在程序的测试过程中发现,当执行一次文档生成后,在资源管理器中始终有winword.exe进程杀不掉,目前的解决办法是:直接杀进程,代码如下: 
复制代码
protected void killAllProcess() // 杀掉所有winword.exe进程 

System.Diagnostics.Process[] myPs; 
myPs = System.Diagnostics.Process.GetProcesses(); 
foreach (System.Diagnostics.Process p in myPs) 

if (p.Id != 0) 

string myS = "WINWORD.EXE" + p.ProcessName + " ID:" + p.Id.ToString(); 
try 

if (p.Modules != null) 
if (p.Modules.Count > 0) 

System.Diagnostics.ProcessModule pm = p.Modules[0]; 
myS += "n Modules[0].FileName:" + pm.FileName; 
myS += "n Modules[0].ModuleName:" + pm.ModuleName; 
myS += "n Modules[0].FileVersionInfo:n" + pm.FileVersionInfo.ToString(); 
if (pm.ModuleName.ToLower() == "winword.exe") 
p.Kill(); 


catch 
{ } 
finally 






目前为止,一个WORD文档就生成了。上述为我在这个程序开发中遇到的问题和解决方法,可能有好多地方都是考虑不全的,如果在程序开发中对WORD的操作有新的认识的话,欢迎和我沟通交流,彼此提高! 
下边是在网上一些比较好的摘抄: 
创建新Word 
复制代码
object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing);