2017-03-09 88 views
0

我有一個問題,我有一個Excel表格,我想使用Microsoft.Interop.Word將它插入到Word文檔中。如何使用Microsoft.Interop.Word在Excel文檔中嵌入Excel文件?

我已經嘗試過這一個:

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的表格是這樣的:

Image

我怎樣才能插入表,以便它會直接顯示,而不是在某個圖標?
我需要一個Excel表格沒有鏈接到Word表格的解決方案,這樣如果我編輯Excel表格後,單詞中的一個不應該受到影響。

+0

據我所知,如果你想插入Excel表格中沒有提及它,你需要像對象一樣添加它;)。 –

回答

2

您可以簡單地使用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; 
+0

Range.PastExcelTable如何知道我要插入的Excel表格? – Snaylor

+0

您可以預先指定要插入的「表格」。 – Xiaoy312

+0

'var table =(Excel.Range)worksheet.Range [「__ RANGE __」];' 我應該在這裏插入「範圍」? 對不起,我提出了一些愚蠢的問題,但我仍然在努力... – Snaylor