2017-08-01 59 views
0

我正在開發基於c#的應用程序來處理excel文件。每當我寫入excel文件時,文件會被損壞,並且在打開時沒有任何內容出現。另外,下一次當應用程序顯示異常時,我無法打開該文件。 代碼變爲如下:以c編程編寫後Excel文件損壞#

private static Microsoft.Office.Interop.Excel.Workbook mWorkBook; 
    private static Microsoft.Office.Interop.Excel.Sheets mWorkSheets; 
    private static Microsoft.Office.Interop.Excel.Worksheet mWSheet1; 
    private static Microsoft.Office.Interop.Excel.Application oXL; 

    public void WriteResultsToSheet() 
    { 
     oXL = new Excel.Application(); 
     oXL.Visible = true; 
     oXL.DisplayAlerts = false; 
     mWorkBook = oXL.Workbooks.Open(filePath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); 
     //Get all the sheets in the workbook 
     mWorkSheets = mWorkBook.Worksheets; 


     mWSheet1 = (Excel.Worksheet)mWorkBook.Sheets[sheetName.TrimEnd('$')]; 
     Excel.Range range = mWSheet1.UsedRange; 
     int colCount = range.Columns.Count; 
     int rowCount = range.Rows.Count; 


     for (int index = 1; index <= rowCount; index++) 
     { 
      try 
      { 
       Console.WriteLine(dataGridViewScript.Rows[index].Cells[4].Value.ToString()); 
      } 
      catch (NullReferenceException nre) 
      { 
       if (nre.Message == "Object reference not set to an instance of an object.") 
        break; 
      }    
      Console.WriteLine(dataGridViewScript.Rows[index].Cells[5].Value.ToString()); 
     } 


      mWorkBook.SaveAs(filePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
     mWorkBook.Close(Type.Missing, Type.Missing, Type.Missing); 

     oXL.Quit(); 
     mWSheet1 = null; 
     mWorkBook = null; 

     GC.WaitForPendingFinalizers(); 
     GC.Collect(); 
     GC.WaitForPendingFinalizers(); 
     GC.Collect(); 
     MessageBox.Show("Results exported successfully."); 

    } 

例外情況是如下: 收到COMException了未處理。 由於文件格式或文件擴展名無效,Excel無法打開該文件。驗證文件沒有損壞。

+0

嗨!將數據寫入Excel工作表的代碼在哪裏? –

+0

即使這段代碼導致Excel損壞。我懷疑保存或以錯誤的方式關閉會導致這種情況。請幫忙。 – akashagrawal

回答

0

由於文件擴展名,該文件與Excel不兼容。嘗試將文件擴展名更改爲.xls,如果它是.xlsx,反之亦然,然後嘗試再次打開它。