2012-09-05 93 views
2
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\a.xlsx" + ";Extended Properties='Excel 12.0 Xml;HDR=No'"; 
     OleDbConnection conn = new OleDbConnection(connString); 
     OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$] SET A1='15'", conn); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 

我想訪問excel中的特定單元格並更改其值。但我得到了異常OleDbException。沒有給出一個或多個所需參數的值

OleDbException。沒有爲一個或多個所需參數給出的值。解決方案是什麼?

回答

3

如果使用HDR = NO列名F1,F2 F3等......

OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$] SET F1='15'", conn); 

,但我認爲你應該指定一個WHERE子句來劃定受影響的行。
記住,使用OleDb你不應該考慮行/列,而是根據記錄。

作爲替代方案,如果你確切地知道行/列進行更新,你可以使用

OleDbCommand cmd = new OleDbCommand("Update [tablenameeee$A1:A1] SET F1='15'", conn); 
+0

我們如何直接訪問我們想要的單元格,比如A13或H43 – Yunus

+0

添加了替代語法(使用Excel 2003測試 - Jet.OleDb),但我認爲它也適用於更新的ACE提供程序 – Steve

0

也許你需要一個where子句

Update [tablenameeee$] set [F1] = 15 where [F2] = 3 

,或者如果你想訪問一個特定的細胞,並且你知道它是哪個單元格,那麼史蒂夫的解決方案就會像你的手套一樣適合你。

相關問題