2012-08-02 23 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

相关问题