2012-02-07 68 views
1

我寫了這個方法(在其他職位幾乎相同)依賴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;HDR=NO'"; 

    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"); 

到目前爲止,因爲當我打開它工作正常test.xls文件B5更新爲17。但是,如果有一個單元格:B1依賴於B5B1=B5*5,則不會自動更新B1。我必須手動打開Excel文件並保存警告,以便更新B1。我怎樣才能以編程方式做到這一點?

回答

4

我不認爲當您使用ACE驅動程序與Excel工作表交互時,您可以依賴Excel更新計算列。當您使用OLEDB在工作簿的工作表上進行操作時,它將工作表視爲結構等數據庫表。

我想你可能想用OpenXML來讀/寫文件。 StackOverflow上有幾個線程,更多關於使用OpenXML的信息值得一試。

post顯示瞭如何強制使用OpenXML重新計算單元格。

相關問題