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

问题描述:

我想将数据写入现有的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是持有路径的字符串

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'变量。这是试图覆盖已打开的只读文件,因此被阻止。

我可以看到两个可能的解决方案:

  1. 通行证在falseWorkbooks.Open方法的ReadOnly参数,以便您可以稍后使用Workbook.Save方法保存。在你的情况下,你可以通过拨打appbook.Save()来保存。

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

希望这有助于!

+0

的感谢!这是与该问题的工作: 我去保存excel文件的位置,我打开excel文件和文件冻结:( – Cmptrb 2010-04-04 15:52:02

+0

保存也不完全工作。旧数据将被删除:( – Cmptrb 2010-04-04 16:04:09

+0

好吧,对不起,在我原来的回答中,我错过了你以只读的方式打开文件,所以实际上有两个问题需要解决,请参阅我的更新回答,上面... – 2010-04-04 16:17:37

我试着使用OLEDB,是成功的与创建任何空的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(); 

其中ConnectionString的是:

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

所以我有另一个proble与加插入和错误是:

“查询值和目标字段的数量不相同”

我仔细写了我的命令,我找不到错误:(我该如何解决它?

谢谢!

(这是我的工作ASPX重要的是,上面的代码工作在桌面应用程序,但对于ASPX保存位置应该像responce.outstream不同的,因为我从我的研究理解)

+0

不成功的操作。我解决了我的问题,对不起:(我的项目在插入命令和插入的项目是不同的。 – Cmptrb 2010-04-06 00:59:50