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#法式設計有所贊助。