2012-06-28 53 views
4

我在一個winform我在哪裏讀取一個excel文件,處理所述數據使用的Microsoft.Office.Interop.Excel一個小區,並且輸出新的Excel文件。但是,我無法寫入單元格 - 專門添加列標題。代碼如下:C#COM互操作:寫入在Excel工作表

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
Worksheet ws = (Worksheet)wb.Worksheets[1]; 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    for (int j = 0; j < dt.Rows.Count; j++) 
    { 
     ws.Cells[j + 1, i] = dt.Rows[j][i].ToString(); 
    } 
} 
ws.Cells[0, 0] = "Ticket Number"; 
ws.Cells[0, 1] = "Transit"; 
ws.Cells[0, 2] = "Outage Start Date"; 
ws.Cells[0, 3] = "Outage End Date"; 
ws.Cells[0, 4] = "Business Impact"; 
wb.Worksheets.Add(ws); 

其中「dt」是我的DataTable。嵌套的for循環不會拋出運行時錯誤,但它後面的代碼會執行。錯誤只是說:COM異常未處理,異常來自HRESULT:0x800A03EC。

任何建議表示讚賞。

問候。

+0

我剛剛發現,如果我註釋掉這些行的程序運行和輸出文件。但是,當我嘗試打開它時,它立即關閉,之後我無法刪除它,因爲Windows聲稱Excel正在使用它,即使我在任務管理器中找不到Excel應用程序。 – Kevin

+0

當你在任務管理器中說,你已經檢查過程選項卡以及應用程序選項卡?很容易導致備用excel.exe進程掛起。您正在關閉excel應用程序對象中的工作簿,或者至少關閉Excel應用程序對象? – Rup

+0

我只在App選項卡中查找。 – Kevin

回答

8

Cells[]是基於1的,而不是基於零的。

+0

+ 1 Nice Catch! –

+0

救了我。謝謝。 – ZygoteInit