0

我想为我在 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();
    }

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

您尝试打开的文件与文件扩展名指定的格式不同。在打开文件之前验证它来自受信任的来源。你想现在打开吗?

它有效,但它事先有此消息。

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

4

2 回答 2

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();
}
于 2013-10-07T20:12:20.240 回答
0

而不是使用try .. catch这种方式,您应该首先测试文件是否存在。如果是这样,那么做你的附加代码。如果没有,则执行工作簿创建代码。

您收到该消息的原因是您正在使用较新的 Excel COM 对象来创建文件。.xls而不是作为扩展尝试发出.xlsx

于 2013-10-07T20:12:43.417 回答