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がファイルを開くことができません。ファイルが破損していないことを確認します。
こんにちは! Excelシートにデータを書き込んでいるコードはどこですか? –
このコードでもExcelが壊れてしまいます。私は間違った方法で保存または閉鎖が起こると思われます。助けてください。 – akashagrawal