C#.net編程創立Access文件和Excel文件的辦法詳解。本站提示廣大學習愛好者:(C#.net編程創立Access文件和Excel文件的辦法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#.net編程創立Access文件和Excel文件的辦法詳解正文
本文實例講述了C#.net編程創立Access文件和Excel文件的辦法。分享給年夜家供年夜家參考,詳細以下:
一些體系能夠需求把數據導出到Access或許Excel文件格局,以便利的傳遞數據、打印等。
Excel 文件或許 Access這兩種須要導出的文件能夠其實不是事前就存在的,這就須要我們本身編程生成他們,上面整頓一下生成這兩個文件的一些辦法,只枚舉最經常使用的。其實不全。
1、起首生成Excel文件。
計劃1、假如用Excel保留的只是二維數據,也就是把他當數據庫的來用。
最簡略,你不消援用任何額定組件,只須要用 OLEDB 便可以完成創立Excel文件。 典范代碼以下。
using System.Data.OleDb; public static void CreateExcelFile2() { string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c://aa2.xls;"; OLEDBConnStr += " Extended Properties=Excel 8.0;"; string strCreateTableSQL = @" CREATE TABLE "; strCreateTableSQL += @" 測試表 "; strCreateTableSQL += @" ( "; strCreateTableSQL += @" ID INTEGER, "; strCreateTableSQL += @" UserID INTEGER, "; strCreateTableSQL += @" UserIP VARCHAR , "; strCreateTableSQL += @" PostTime DATETIME , "; strCreateTableSQL += @" FromParm VARCHAR "; strCreateTableSQL += @" ) "; OleDbConnection oConn = new OleDbConnection(); oConn.ConnectionString = OLEDBConnStr; OleDbCommand oCreateComm = new OleDbCommand(); oCreateComm.Connection = oConn; oCreateComm.CommandText = strCreateTableSQL; oConn.Open(); oCreateComm.ExecuteNonQuery(); oConn.Close(); } using System.Data.OleDb; public static void CreateExcelFile2() { string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c://aa2.xls;"; OLEDBConnStr += " Extended Properties=Excel 8.0;"; string strCreateTableSQL = @" CREATE TABLE "; strCreateTableSQL += @" 測試表 "; strCreateTableSQL += @" ( "; strCreateTableSQL += @" ID INTEGER, "; strCreateTableSQL += @" UserID INTEGER, "; strCreateTableSQL += @" UserIP VARCHAR , "; strCreateTableSQL += @" PostTime DATETIME , "; strCreateTableSQL += @" FromParm VARCHAR "; strCreateTableSQL += @" ) "; OleDbConnection oConn = new OleDbConnection(); oConn.ConnectionString = OLEDBConnStr; OleDbCommand oCreateComm = new OleDbCommand(); oCreateComm.Connection = oConn; oCreateComm.CommandText = strCreateTableSQL; oConn.Open(); oCreateComm.ExecuteNonQuery(); oConn.Close(); }
在你履行創立表的同時,體系假如發明Excel文件不存在,就主動完成了Excel文件的創立。這點假如沒接觸過的人,能夠會不曉得的。
至於對個中的增長、修正操作, 跟通俗數據庫沒啥兩樣,就不描寫了。
計劃2、直接生成一個應用距離符號離隔每項數據的純文本文件,然則文件的後綴是 XLS 。
留意:這時候候,假如你直接用Excel翻開如許的文件,沒成績,一切正常,然則假如你用ADO.net 讀取這個文件的時刻,你的鏈接引擎不該該是Excel,而是文本文件(Microsoft Text Driver)。也就是鏈接字符串不該該是
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c://aa2.xls;Extended Properties=Excel 8.0;"
而應當是上面的方法:
OLEDB的方法銜接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://11.txt;Extended Properties='text;HDR=No;FMT=TabDelimited'
ODBC的方法讀TXT字符串寫法:
Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq=C://11.txt; Extensions=asc,csv,tab,txt;
計劃3、你要創立的Excel文件,有一些Excel本身的特點須要創立,這就須要應用 Com 了,即:Microsoft Excel Object Library了
請添加 Microsoft Excel 11.0 Object Library 對它的援用,依據你裝的Office的版本,這個組件庫的版本也紛歧樣。
典范代碼:
public static void CreateExcelFile() { string FileName = "c://aa.xls"; Missing miss = Missing.Value; Excel.Application m_objExcel = new Excel.Application(); m_objExcel.Visible = false; Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks; Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(miss)); m_objBook.SaveAs(FileName, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss,miss, miss, miss); m_objBook.Close(false, miss, miss); m_objExcel.Quit(); }
我這裡只是簡略的創立了Excel文件,沒有更多的操作Excel,假如想深刻進修的話可以參考本站的相干文章。
2、生成Access 數據庫
Access 究竟是一個數據庫,所以Excel上述第一種辦法,沒法實用。
創立Access 數據庫文件可使用 ADOX,
ADOX與OleDB的差別:ADOX是 data api 只是一個接口, OLEDB 是數據供給者,API 去挪用 數據供給者。
典范代碼:
應用前,請添加援用 Microsoft ADO Ext. 2.x for DDL and Security 依據你的操作體系,能夠這裡的版本也紛歧樣。
using ADOX; using System.IO; public static void CreateAccessFile(string FileName) { if(!File.Exists(FileName)) { ADOX.CatalogClass cat = new ADOX.CatalogClass(); cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName +";"); cat = null; } }
上述代碼只是生成了Access數據庫,實用ADOX你也能夠操作數據庫,增長表等等操作。
using System; using ADOX; namespace WebPortal { /// <summary> /// CreateAccessDB 的摘要解釋。 /// 關於分歧版本的ADO,須要添加分歧的援用 /// 請添加援用Microsoft ADO Ext. 2.7 for DDL and Security /// 請添加援用Microsoft ADO Ext. 2.8 for DDL and Security /// </summary> public class CreateAccessDB : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { //為了便利測試,數據庫名字采取比擬隨機的名字,以避免添加不勝利時還須要從新啟動IIS來刪除數據庫。 string dbName = "D://NewMDB"+DateTime.Now.Millisecond.ToString()+".mdb"; ADOX.CatalogClass cat = new ADOX.CatalogClass(); cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName +";"); Response.Write("數據庫:" + dbName + "曾經創立勝利!"); ADOX.TableClass tbl = new ADOX.TableClass(); tbl.ParentCatalog = cat; tbl.Name="MyTable"; //增長一個主動增加的字段 ADOX.ColumnClass col = new ADOX.ColumnClass(); col.ParentCatalog = cat; col.Type=ADOX.DataTypeEnum.adInteger; // 必需先設置字段類型 col.Name = "id"; col.Properties["Jet OLEDB:Allow Zero Length"].Value= false; col.Properties["AutoIncrement"].Value= true; tbl.Columns.Append (col,ADOX.DataTypeEnum.adInteger,0); //增長一個文本字段 ADOX.ColumnClass col2 = new ADOX.ColumnClass(); col2.ParentCatalog = cat; col2.Name = "Description"; col2.Properties["Jet OLEDB:Allow Zero Length"].Value= false; tbl.Columns.Append (col2,ADOX.DataTypeEnum.adVarChar,25); //設置主鍵 tbl.Keys.Append("PrimaryKey",ADOX.KeyTypeEnum.adKeyPrimary,"id","",""); cat.Tables.Append (tbl); Response.Write("<br>數據庫表:" + tbl.Name + "曾經創立勝利!"); tbl=null; cat = null; } #region Web 窗體設計器生成的代碼 override protected void OnInit(EventArgs e) { // // CODEGEN: 該挪用是 ASP.NET Web 窗體設計器所必須的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 設計器支撐所需的辦法 - 不要應用代碼編纂器修正 /// 此辦法的內容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }
願望本文所述對年夜家C#法式設計有所贊助。