创建一个新的excel vs附加到现有的excel

时间:2013-10-07 20:07:46

标签: c# excel

我想在D驱动器中运行测试的每一天创建一个excel文件。

但是,如果文件已经存在 - 就像我已经在那天运行测试一样 - 我希望它附加到文件中。

这是我到目前为止所得到的,但我觉得它看起来不对。

任何帮助都会很棒,非常感谢。

 Excel.Application excelApp = new Excel.Application();
 string date = DateTime.Now.ToString("MMM dd-yy");
 string myPath = @"D:\" + date + ".xls";
 int rowIndex = 1; int colIndex = 1;
 Excel._Workbook oWB;
 try
 {
            oWB = (Excel._Workbook)(excelApp.Workbooks.Open(myPath));

            excelApp.Visible = false;
            excelApp.Cells[rowIndex, colIndex] = "IN TRY METHOD";
            oWB.Save();
            oWB.Close();

  }
  catch (Exception e) 
  {
            oWB = (Excel._Workbook)(excelApp.Workbooks.Add(System.Reflection.Missing.Value));
            excelApp.Visible = false;
            excelApp.Cells[rowIndex, colIndex] = "IN CATCH METHOD";
            oWB.SaveAs(myPath);
            oWB.Close();
    }

我还注意到,当我打开文件时,它说:

  

您尝试打开的文件格式与其他格式不同   由文件扩展名指定。之前验证它来自可靠来源   打开文件。你想现在开门吗?

它有效,但它手头有这条消息。

所以请告诉我我做错了什么,以及如何使这段代码更清洁。

2 个答案:

答案 0 :(得分:2)

检查文件是否在磁盘上,然后采取适当的措施,而不是滥用try{}catch{}

if(File.Exists(myPath))
{
    ModifyExcel();
}
else
{
    CreateExcel();
}

private void ModifyExcel()
{
    oWB = (Excel._Workbook)(excelApp.Workbooks.Open(myPath));
    excelApp.Visible = false;
    excelApp.Cells[rowIndex, colIndex] = "MODIFY";
    oWB.Save();
    oWB.Close();
}

private void CreateExcel()
{
    oWB = (Excel._Workbook)(excelApp.Workbooks.Add(System.Reflection.Missing.Value));
    excelApp.Visible = false;
    excelApp.Cells[rowIndex, colIndex] = "CREATE";
    oWB.SaveAs(myPath);
    oWB.Close();
}

答案 1 :(得分:0)

不要以这种方式使用try .. catch,而应首​​先测试文件是否存在。如果是,请执行附加代码。如果没有,则执行工作簿创建代码。

您收到该消息的原因是您使用较新的Excel COM对象来创建该文件。不要将.xls作为扩展名发送.xlsx