2015-10-19 3 views
0

У меня есть функция для экспорта моих GridViews в Excel как .xlsx. Однако я столкнулся с проблемой с файлом Excel, который был открыт/сохранен с помощью диалога сохранения. ошибка происходит, когда я пытаюсь открыть файл Excel:Устранение ошибки в файле Excel после экспорта

Мой текущий код:

protected void EXPORT_BUTTON_Click(object sender, EventArgs e) 
     { 
      Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); 

      // creating new WorkBook within Excel application 
      Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); 
      String DATA1 = "DATA 1"; 
      String DATA2 = "DATA 2"; 
      ExportToExcel(app, workbook, DATA1 , DATA_1); 
      workbook.Worksheets["Sheet1"].Delete(); 
      workbook.Worksheets["Sheet2"].Delete(); 
      workbook.Worksheets["Sheet3"].Delete(); 
      ExportToExcel(app, workbook, DATA2 , DATA_2); 
      workbook.SaveAs(@"C:\Users\testacc\Desktop\Test\" + "Server_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
      var filename = "Report_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx"; 
      workbook.SaveAs(Server.MapPath("~/Exports/") + filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.AddHeader("content-disposition", "attachment, filename=" + filename); 
      workbook.Close(); 
      Response.TransmitFile(Server.MapPath("~/Exports/") + filename); 
      app.Quit(); 
     } 
+0

это может быть вызвано из-за отсутствия надлежащего закрытия Ехчел без сохранения изменений или внезапных отключают –

+0

в настоящее время им с помощью workbook.close() для моей Response.TransmitFile (Server.MapPath («~/Экспорт /») + имя файла); работать. Пожалуйста, совет, как я могу изменить свои коды, чтобы закрыть рабочую книгу, спасибо –

+0

ну, я не помню фактические коды, но то, что я могу предложить вам, также пытается закрыть приложение, а также –

ответ

1

Вы можете попробовать ниже код, если он работает.

protected void EXPORT_BUTTON_Click(object sender, EventArgs e) 
     { 
      using(Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application()) 
      // creating new WorkBook within Excel application 
      using(Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing)) 
      { 
       String DATA1 = "DATA 1"; 
       String DATA2 = "DATA 2"; 
       ExportToExcel(app, workbook, DATA1 , DATA_1); 
       workbook.Worksheets["Sheet1"].Delete(); 
       workbook.Worksheets["Sheet2"].Delete(); 
       workbook.Worksheets["Sheet3"].Delete(); 
       ExportToExcel(app, workbook, DATA2 , DATA_2); 
       workbook.SaveAs(@"C:\Users\testacc\Desktop\Test\" + "Server_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
       var filename = "Report_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx"; 
       workbook.SaveAs(Server.MapPath("~/Exports/") + filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
       Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       Response.AddHeader("content-disposition", "attachment, filename=" + filename); 
       workbook.Close(); 
       Response.TransmitFile(Server.MapPath("~/Exports/") + filename); 
       Response.End(); 
       app.Quit(); 
      } 
     } 
+0

Мне удалось решить эту проблему, но это тоже работает. благодаря –

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