c#复制Excel表格插入到Word

发布时间:2020-09-09 11:30:36.72编辑:admin阅读(660)

原本是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;
                }
            }
        }


  关键字:c#复制Excel表格插入到Word


鼓掌

0

正能量

0

0

呵呵

0


评论区