【发布时间】:2013-08-30 05:03:13
【问题描述】:
我正在尝试在 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);
我收到了同样的错误,上面的文件显示了修改。
谁能告诉我如何保存修改后的文件?
【问题讨论】:
-
不太清楚,只是快速思考一下……您确定可以使用与
SaveAs相同的文件路径吗?通常这会创建一个新文档。您可以使用Save()函数吗? -
不要让它可见。
-
我没有看到您释放创建的 COM 对象。请记住始终释放您创建/使用的每个 Excel 对象。如果您收到错误并且不关闭工作簿,它可能会保持打开状态,因此对于新实例是只读的... 更多:excel 未关闭(使用
excel.Quit()),因此您可以在内存中有很多 Excel 进程。 . -
@musefan 我尝试过,首先但无法保存它。即使我尝试使其不可见,但仍然出现错误“BookExcel1.xlsx”是只读的。要保存副本,请单击“确定”,然后在“另存为”对话框中为工作簿指定一个新名称。'
-
@Marco 我试了一下,还是无法保存。