您的位置:首頁技術文章
文章詳情頁

用ACCESS的視圖導數據到EXCEL

瀏覽:152日期:2022-08-13 17:11:12

從ACCESS中導數據到EXCEL高效的方法,借鑒了網上的一種導表的方法,嘗試了下用視圖也是可以的:

但這種方法有缺陷的地方是可能彈出兩個對話框,一個是在access有密碼的情況下,彈出讓輸入密碼的對話框。另一個是安全對話框,這個要改變access的宏安全級別到低才不彈出。

改變宏安全級別可以在access中手工設置,用程序設置的要修改注冊表

感覺都不是很好解決辦法,但偶也沒有想出更好的辦法。

在假設已經設置了宏安全級別的情況下,導出實現修正如下:

view plaincopy to clipboardprint?Access.ApplicationClass oAccess = new Access.ApplicationClass();oAccess.Visible = false;// 沒有密碼,可以設置成空string sDBPassword = "MyPassword"//database passwordDAO._DBEngine oDBEngine = oAccess.DBEngine;DAO.Database oDB = oDBEngine.OpenDatabase("c:mydb.mdb",false, false, ";PWD=" + sDBPassword);oAccess.OpenCurrentDatabase("d:test.mdb",false,"");oDB.Close();System.Runtime.InteropServices.Marshal.ReleaseComObject(oDB);oDB = null;System.Runtime.InteropServices.Marshal.ReleaseComObject(oDBEngine);oDBEngine = null;oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Access.AcSpreadSheetType.acSpreadsheetTypeExcel9,"testview", "d:testexport.xls", true, null, null)Access.ApplicationClass oAccess = new Access.ApplicationClass();oAccess.Visible = false;// 沒有密碼,可以設置成空string sDBPassword = "MyPassword"//database passwordDAO._DBEngine oDBEngine = oAccess.DBEngine;DAO.Database oDB = oDBEngine.OpenDatabase("c:mydb.mdb",false, false, ";PWD=" + sDBPassword);oAccess.OpenCurrentDatabase("d:test.mdb",false,"");oDB.Close();System.Runtime.InteropServices.Marshal.ReleaseComObject(oDB);oDB = null;System.Runtime.InteropServices.Marshal.ReleaseComObject(oDBEngine);oDBEngine = null;oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Access.AcSpreadSheetType.acSpreadsheetTypeExcel9,"testview", "d:testexport.xls", true, null, null);

當然,要用access組件,要把access的COM組件引用到工程里,

我一般習慣的做法是先把COM引用添加上去,編譯一下,引用的程序集包容器就出現在bin下了,

然后把這個dll文件備份一下,工程里可以把COM引用去掉,直接引用這幾個dll就行了,

這樣整個工程文件可以任意拷貝到其他機器上。

這種方法導access效率的確是比較快的,畢竟是交給window OS來做的

但應用局限性還是比較明顯的,我推薦用OLEDB 連接access查詢,在結合

http://blog.csdn.net/linaren/archive/2009/10/28/4736637.aspx

這個上面的方法,是不錯的選擇,效率稍顯慢些,但靈活性比較大。

標簽: excel
相關文章:
国产综合久久一区二区三区