2013-10-07 3 views
0

Я хочу создать файл excel для каждого дня, когда я запускаю Test, в 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(); 
    } 

Кроме того, я заметил, что когда я открываю файл, он говорит:

Файл, который вы пытаетесь открыть в другом формате, чем указанного расширения файла. Убедитесь, что это из надежного источника до , открывающего файл. Вы хотите открыть сейчас?

Это работает, но у него есть это сообщение перед началом работы.

Так что, пожалуйста, скажите мне, что я делаю неправильно, а также как сделать этот код намного чище.

+1

Вы не должны использовать try {} catch {}. Вы действительно должны поймать исключение и сделать что-то с пойманным исключением в блоке catch. –

+0

Ну, что он делает, когда вы его запускаете? Вы говорите «это не выглядит правильно», но что он делает? Просто прыгайте прямо в ваш блок catch после первой строки в вашей Try? И, как сказал @SamLeach, вы должны попытаться поймать конкретное исключение и сделать что-то о нем вместо того, чтобы это сделать. – sab669

+0

Да, это то, что я подразумевал под «не выглядит правильно». Большое спасибо, ребята. – lynx

ответ

0

Вместо того, чтобы использовать try .. catch таким образом, вы должны сначала тест, чтобы увидеть, если файл существует , Если да, то сделайте свой код добавления. Если это не делает, то создайте код создания книги.

Причина, по которой вы получаете это сообщение, заключается в том, что вы используете новые COM-объекты Excel для создания файла. Вместо того, чтобы испускать .xls в качестве расширения. .xlsx

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

Право, когда я собираюсь опубликовать, что я должен использовать File.Exists, вы меня избили. lol Спасибо большое! – lynx

+1

+1: лучший ответ, чем мой (вы действительно включили код). Просто добавьте часть о xlsx и вашем золоте. – NotMe

Смежные вопросы