2012-08-02 35 views
0

突然之間,代碼已經停止輸出Excel文件。它正在將一個DataTable,dtOutput轉換成一個Excel文件:Visual Studio Express 2010中的突然代碼失敗

if (dtOutput.Rows.Count > 0) 
{ 
    DataView dv = dtOutput.DefaultView; 
    dv.Sort = "Outage Start Time"; 
    dtOutput = dv.ToTable(); 
    // Populates a column of the table 
    dtOutput = addIncidentCounts(dtOutput); 

    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]; 
    ws.Name = "Retail Network Tracking Log"; 

    int col = 1; 
    foreach (DataColumn column in dtOutput.Columns) 
    { 
     ws.Cells[1, col].Value2 = column.ColumnName; 
     col++; 
    } 

    for (int i = 0; i < dtOutput.Rows.Count; i++) 
    { 
     for (int j = 0; j < dtOutput.Columns.Count; j++) 
     { 
      ws.Cells[i + 2, j + 1].Value2 = dtOutput.Rows[i][j]; 
     } 
    } 

    foreach (Range range in ws.UsedRange.Columns) 
    { 
     range.HorizontalAlignment = XlHAlign.xlHAlignLeft; 
     range.Columns.AutoFit(); 
    } 

    Range rangeE = ws.get_Range("E:E", Type.Missing); 
    rangeE.NumberFormat = "d-mmm-yyyy hh:mm:ss"; 

    Range rangeF = ws.get_Range("F:F", Type.Missing); 
    rangeF.NumberFormat = "d-mmm-yyyy hh:mm:ss"; 

    wb.Close(false, false, Type.Missing); 
    xlApp.Quit(); 
    Marshal.ReleaseComObject(wb); 
    Marshal.ReleaseComObject(xlApp); 

    this.Close(); 
} 

它已經完美地運行了幾個星期。我沒有做任何改變。我重新啓動VS,重新啓動計算機,並最終重新安裝VS,但我仍然沒有得到任何輸出。我也通過調試器運行它,並且代碼正在執行並獲得所有正確的值。我很難過。

+0

不能幫助亞沒有關於你得到的錯誤的某種信息。這就是說,如果我不得不猜測我會說它的權限問題,或目錄結構問題,或 – 2012-08-02 20:31:26

+0

我沒有看到你關閉Excel之前保存工作簿的位置? – 2012-08-02 20:47:30

+0

...或者您正在尋找保存的工作簿的錯誤位置?你有沒有嘗試用固定的絕對路徑顯式保存它? – 2012-08-02 21:02:52

回答

1

Hans Passant是對的。致電關閉需要是:

wb.Close(true, saveDirectory + "\\" + reportName, false); 

現在真正的奧祕是這個代碼是如何工作在第一位!

+0

也許它不是? – 2012-08-03 01:13:53

相關問題