2017-08-16 50 views
0

我正在處理一個項目,該項目將填充詳細信息到自定義(預定義).xlsx模板文件中,然後打開Excel應用程序以供用戶進一步輸入。請注意,打開的文件位於內存中,因此用戶在實際打開文件之前不必將其保存到本地文件中。如何用2個預定義的工作表使用C#寫入.xlsx文件?

到目前爲止,我在的地方行使用的基本代碼做的好上的文件與一個工作表:

excelApp = new Excel.Application(); 
Workbooks wbs = excelApp.Workbooks; 
Workbook wb = wbs.Add(pathOfTemplate); //<-- I'm guessing the problem is this line? 
Worksheet ws = wb.Sheets[1]; 

//Fill details 
ws.Cells[1, 1] = "Sample data"; 

//Show app 
excelApp.Visible = true; 

現在,我遇到一個多鐵皮工作簿時,我試圖修改代碼以還有一個Worksheet變量,插入上面的代碼:

Worksheet ws2 = wb.Sheets[2]; 
ws2.Cells[1, 1] = "Sample data again"; 

我得到的是兩個Excel實例打開,沒有細節正在創作的任何工作表。我試過Worksheet.Activate()方法,但無濟於事。我究竟做錯了什麼?

+0

難道打開一個空白XLSX文件? –

+0

@reds你是什麼意思?如果你說打開的'xlsx'是空白的,否;它打開了預定義的文件,沒有用C#程序編寫的任何細節。 – AwonDanag

+0

我的意思是,你正在開始一個空白的現有xlsx文件。然後填寫項目中的數據 –

回答

0

首先,不要使用互操作。創建xlsx格式的目的是允許應用程序(尤其是服務和網站)在每次需要創建工作表時都無需啓動新的Excel實例即可生成和讀取Excel文件。

您可以使用像EPPlus圖書館閱讀的紙張作爲模板,修改並使用新名稱保存:

var newFile = new FileInfo("pathToNewFile.xlsx"); 
var templateFile = new FileInfo("PathToTemplate.xlsx"); 

using(var pck = new ExcelPackage(newFile,templateFile)) 
{ 
    var ws=pck.Workbook.Worksheets[0]; 

    //Set a cell's text 
    ws.Cells["A1"].Value ="whatever"; 
    ws.Cells[2,1].Value ="whatever2"; 

    //Fill cells from a collection 
    var orders=new List<Order>(); 
    //Fill the list then ... 
    ws.Cells["A10"].LoadFromCollection(orders); 

    pck.Save(); 
} 
相關問題