创build一个新的Excel与追加到现有的

我想创build一个Excel文件,我每天运行一个testing,在D驱动器。

但是,如果文件已经存在 – 就像我已经在当天testing过的那样 – 我想把它附加到文件中。

这是我到目前为止,但我觉得它看起来不正确。

任何帮助将是伟大的,谢谢很多家伙。

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(); } 

另外我注意到,当我打开文件时说:

您尝试打开的文件格式不同于文件扩展名指定的格式。 在打开文件之前,请validation它来自可靠来源。 你想打开吗?

它的工作原理,但它之前有这个消息。

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

而不是使用try .. catch这种方式,你应该首先testing,看看文件是否存在。 如果是这样,那么做你的追加代码。 如果没有,那么做工作簿创build代码。

您得到该消息的原因是您正在使用较新的Excel COM对象来创build该文件。 不要将.xls作为扩展名尝试.xlsx

检查文件是否在磁盘上,然后采取适当的行动,而不是滥用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(); }