如何使用Microsoft.Interop.Word将excel文件嵌入到word文档中?

时间:2017-03-09 18:07:28

标签: c# excel ms-word office-interop

我遇到一个问题,我有一个Excel表,我想使用Microsoft.Interop.Word将其插入到Word文档中。

我已经尝试过这个:

var path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent?.FullName + @"\Documents\Businessprocess\Excel-Templates\Tabelle_zum_BP.xlsx";
var oIconLabel = "Tabelle zum BP";
var oMissing = System.Reflection.Missing.Value;
var oIconFileName = oMissing;
var oFileDesignInfo = path;
var oClassType = "Word.Document.8";

_wordDocument.Bookmarks["EPExcelFile"].Range.InlineShapes.AddOLEObject(
        oClassType, oFileDesignInfo, false, true, oIconFileName, oMissing, oIconLabel, oMissing);

我从这个网站上的另一个帖子中得到了这个解决方案。唯一的问题是它现在插入Excel表:

screenshot

如何插入表格以便直接显示,而不是通过图标? 我需要一个解决方案,其中Excel表没有链接到Word表,所以如果我之后编辑Excel表,单词中的那个不应该受到影响。

1 个答案:

答案 0 :(得分:4)

您只需使用Range.PasteExcelTable方法即可实现所需:

var path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent?.FullName + @"\Documents\Businessprocess\Excel-Templates\Tabelle_zum_BP.xlsx";
var excel = (Excel.Application)new Excel.ApplicationClass() { Visible = true };
var template = excel.Workbooks.Add(path);
var worksheet = (Excel.Worksheet)template.Worksheets["__SHEET_NAME__"];
var table = (Excel.Range)worksheet.Range["__RANGE__"];

table.Copy();
_wordDocument.Bookmarks["EPExcelFile"].Range.PasteExcelTable(false, true, false);

如果你想知道:

using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;