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無法打開該文件。驗證文件沒有損壞。
嗨!將數據寫入Excel工作表的代碼在哪裏? –
即使這段代碼導致Excel損壞。我懷疑保存或以錯誤的方式關閉會導致這種情況。請幫忙。 – akashagrawal