程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#.net編程創立Access文件和Excel文件的辦法詳解

C#.net編程創立Access文件和Excel文件的辦法詳解

編輯:C#入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved