2012-02-06 63 views
3

我写此方法更新一个excel细胞:OLEDB与更新的excel细胞

public void update(string fileName, string sheetName) 
{ 
    string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileName) + ";Extended Properties=Excel 12.0"; 

try 
{ 
    OleDbConnection oledbConn = new OleDbConnection(connString); 

    oledbConn.Open(); 

    OleDbCommand cmd = new OleDbCommand("UPDATE ["+sheetName+"$B5:B5] SET F1=17", oledbConn); 

    cmd.ExecuteNonQuery(); 

    oledbConn.Close(); 
} 
catch(Exception ex) 
{ 
    Debug.Write("Error: " + ex.Message); 
} 
} 

我称它是这样的:

update("test.xls", "test"); 

的B5细胞是在“测试”片可用的,但该值永远不会更新。

我甚至尝试这一个:

UPDATE ["+sheetName+"$B5:B5] SET F1='17' 

,我总是有这样的例外:没有为一个或多个必需的参数给定值。

有什么想法?

在此先感谢。

回答

5

编辑我注意到你错过了HDR =没有。

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + 
";Extended Properties=""Excel 12.0;HDR=No""" 

编辑 在C#快递

要么测试:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 12.0 xml;HDR=No'" 

注意XML

或者

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 8.0;HDR=No'" 

有关的* .xls

+0

仍然是一样的错误。顺便说一句,默认ReadOnly = False – olidev 2012-02-06 13:29:53

+0

你是对的只读,它将工作没有,但HDR =没有必要。 – Fionnuala 2012-02-06 13:36:12

+0

添加HDR =否,我得到另一个错误:{“找不到可安装的ISAM。”} – olidev 2012-02-06 13:37:40