我想将数据写入现有的 excel 文件(我很容易做到) 但我无法保存对 excel 文件的更改(实际上我看到了 excel 文件的更改,但它似乎打开了,毕竟它出现了一些问题,例如“文件已经以相同的名称打开等等...... )
Excel.Application app= new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook appbook= app.Workbooks.Open(appxls, 0, true, 5, "", "", false, Excel.XlPlatform.xlWindows, "\t", true, false, 0, true, Missing.Value, Missing.Value);
Excel.Sheets pages= appbook.Worksheets;
Excel.Worksheet page= (Excel.Worksheet)pages.get_Item(1);
//...我更改了 excel 文件中的一些值并想保存它们: //appxls 是一个包含路径的字符串
appbook.SaveAs(appxls, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing,false, Type.Missing, Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
appbook.Close(true, Missing.Value, Missing.Value);
app.Quit();
问题出在哪里,我该如何使用 Microsoft.interop 解决它。
最佳答案
您正在使用名为“appxls”的文件名以只读方式打开工作簿。 (Workbooks.Open
方法的ReadOnly
参数是第三个参数,你传入的是true
。)
您稍后将使用 Workbook.SaveAs
方法,但您正尝试使用您用于打开工作簿的“appxls”变量所保存的完全相同的文件名来保存文件。这是一种覆盖您已打开的只读文件的尝试,因此会被阻止。
我可以看到两种可能的解决方案:
为
Workbooks.Open
方法的ReadOnly
参数传入false
,以便稍后使用保存它>Workbook.Save
方法。在您的情况下,您可以通过调用appbook.Save()
来保存它。继续以只读方式打开文件,但是当您稍后使用
Workbook.SaveAs
方法时,您应该将其保存在不同 名称下。
希望这对您有所帮助!
关于c# - 插入数据后保存excel文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574722/