2012-02-06 96 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