插入数据后问题保存excel文件

我想写数据到一个现有的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是一个保存path的string

  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”variables保持相同的确切文件名保存该文件。 这是试图覆盖已打开的只读文件,因此被阻止。

我可以看到两个可能的解决scheme

  1. Workbooks.Open方法的ReadOnly参数ReadOnly false ,以便稍后使用Workbook.Save方法保存该方法。 在你的情况下,你可以通过调用appbook.Save()来保存它。

  2. 继续以只读方式打开该文件,但稍后使用Workbook.SaveAs方法时,应将其保存为不同的名称。

希望这可以帮助!

我试图使用Oledb,并与代码创build任何空的Excel文件成功:

  OleDbConnection connection= new OleDbConnection(connectionstring); string addSheet= "CREATE TABLE Mus(id nvarchar(255), name nvarchar(5))"; connection.Open(); OleDbCommand sqlcommand = new OleDbCommand(addSheet,connection); sqlcommand.ExecuteNonQuery(); connection.Close(); 

连接string是:

 string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myexcel.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 

所以我又添加了一个插入的问题,错误是:

“查询值和目标字段的数量是不一样的”

我仔细地写了我的命令,我找不到错误:(我怎样才能解决它?

谢谢 !

(重要的是我正在处理aspx,上面的代码在桌面应用程序中工作,但aspx保存的位置应该与responce.outstream不同,正如我从我的研究中了解到的)