2017-08-01 30 views
0

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と互換性がありません。ファイル拡張子が.xlsxの場合は.xlsに変更し、その逆の場合はファイル拡張子を変更してから、もう一度開いてみてください。

関連する問題