发布时间:2020-09-09编辑:admin阅读(2565)
原本是Word表格数据插入到Word模板中,后来由于需求改变,需要在Excel中计算一些数据,再将结果导入到Word中。手动倒是很简单,复制一下Excel表格,到Word里粘贴一下就可以了。一个可以这样弄,十个可以,一百个呢?实际的需求上千个,所以手动模式很快就被排除了。网上找了很久,相关的资料很少,基本是基于Spire.XLS和Spire.Doc组件来实现。有一些参考资料,但是实现不了,Spire.XLS可以下载到,Spire.Doc就很难下载到了,官网下载要登录,而且还是收费的。中间尝试过其它一些方法,比如先把Excel数据导出图片,再将图片插入到Word中,这种方法实现了,但是效果不太好,毕竟是图片,就会有失真的问题。
后来经过不断寻找方法和测试,发现了Microsoft.Office.Interop.Word组件里有一个PasteExcelTable方法,功能是“粘贴 Microsoft Excel 表格并设置其格式”。这给了我一丝希望,既然有有粘贴Excel表格到Word的方法,应该就有复制Excel表格的方法,经过努力最后成功了。
public void InsertExcelToWord(string wordFile,string bookMark, string excelFile,string workSheet, string CellName) { Microsoft.Office.Interop.Word.Application ThisApplication = null; Microsoft.Office.Interop.Word.Document wordDoc = null; Microsoft.Office.Interop.Excel.Application ThisApplication2 = null; Microsoft.Office.Interop.Excel.Workbook ThisWorkbook2 = null; try { ThisApplication = new Microsoft.Office.Interop.Word.Application(); ThisApplication.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; ThisApplication.Visible = false; wordDoc = ThisApplication.Documents.Open(wordFile); object oStart = bookMark; Word.Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range; ThisApplication2 = new Microsoft.Office.Interop.Excel.Application(); ThisWorkbook2 = ThisApplication2.Workbooks.Open(excelFile); ThisApplication2.DisplayAlerts = false; var sheet2 = (Microsoft.Office.Interop.Excel.Worksheet)ThisWorkbook2.Worksheets[workSheet]; Microsoft.Office.Interop.Excel.Range range2 = sheet2.get_Range(CellName, Type.Missing); range2.Copy(); range.PasteExcelTable(false, false, false); wordDoc.Save(); } catch (Exception ex) { throw ex; } finally { wordDoc.Close(); ThisWorkbook2.Close(); if (ThisWorkbook2 != null) { ThisWorkbook2 = null; } if (ThisApplication != null) { ThisApplication.Quit(); ThisApplication = null; } if (ThisApplication2 != null) { ThisApplication2.Quit(); ThisApplication2 = null; } } }
上一篇:spire.xls常用操作
下一篇:EXCEL.EXE损坏的映像
0人
1人
0人
0人