[英]Unable to Save Excel File Using C#
我正在嘗試修改和保存Excel中的數據。 使用下面的代碼,我正在訪問工作表,執行修改,然后保存文件。 我無法保存文件。 這是我的代碼:
Application excel = new Application();
excel.Visible=true;
Workbook wb = (Workbook)excel.Workbooks.Open(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx");
Worksheet ws = (Worksheet)wb.Worksheets[1];
ws.Cells[1, 1] = "sagar";
ws.Cells[2, 1] = "sagar";
ws.Cells[3, 1] = "sagar";
wb.Save();
wb.close();
我收到此錯誤:“名為'BookExcel1.xlsx'的文件已存在於此位置。您要替換它嗎?”
所以我將代碼更改為:
Workbook wb = (Workbook)excel.Workbooks.Open(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx",0, false, 5, "", "",
false, XlPlatform.xlWindows, "", true, false,
0, true, false, false););
然后錯誤是:“BookExcel1.xlsx被user_name.open修改為只讀”。 如果我單擊“取消”按鈕,我會收到上面的例外“HRESULT異常:0x800A03EC”
我也嘗試過:
wb.SaveAs(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx");
wb.Close(true,null,null);
從那里我收到相同的錯誤,上面的文件顯示修改。
任何人都可以告訴我如何保存文件並進行修改?
檢查您是否已經運行Excel.exe進程。 此外,您應該打開工作簿,以便它是可編輯的。
此代碼有效:
string txtLocation = Path.GetFullPath(InputFile);
object _missingValue = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook theWorkbook = excel.Workbooks.Open(txtLocation,
_missingValue,
false,
_missingValue,
_missingValue,
_missingValue,
true,
_missingValue,
_missingValue,
true,
_missingValue,
_missingValue,
_missingValue);
//refresh and calculate to modify
theWorkbook.RefreshAll();
excel.Calculate();
theWorkbook.Save();
theWorkbook.Close(true);
excel.Quit();
發生這種情況是因為我嘗試打開的文件已在excel應用程序中打開。 在我的代碼中,我沒有關閉某些條件的excel應用程序。 這就是它以只讀權限打開它的原因。 所以我在更新后無法保存該文件。 要使用讀寫打開它,您必須先關閉該文件。 之后,您可以打開它並輕松地對文件執行讀寫操作。
您可以使用以下代碼關閉並查看已打開的所有Excel應用程序:
Application excel = (Application)Marshal.GetActiveObject("Excel.Application");
Workbooks wbs = excel.Workbooks;
foreach (Workbook wb in wbs)
{
Console.WriteLine(wb.Name); // print the name of excel files that are open
wb.Save();
wb.Close();
}
excel.Quit();
在頂部,添加以下代碼並引用Microsoft.Office.Interop.Excel
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
此問題適用於向后兼容的工作表(.xls)而不是.xlsx。
要允許在Office 2007版本中打開工作表,它不能包含超過65k行。 您可以使用ctrl + arrowdown檢查工作表中的行數,直到您觸及底部。 如果您嘗試獲得大於該行數的范圍,則會產生錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.