我想在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();
}
我还注意到,当我打开文件时,它说:
您尝试打开的文件格式与其他格式不同 由文件扩展名指定。之前验证它来自可靠来源 打开文件。你想现在开门吗?
它有效,但它手头有这条消息。
所以请告诉我我做错了什么,以及如何使这段代码更清洁。
答案 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