Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon de créer des fichiers Access et des fichiers Excel à l'aide de la programmation C#.net

Explication détaillée de la façon de créer des fichiers Access et des fichiers Excel à l'aide de la programmation C#.net

高洛峰
高洛峰original
2017-01-13 17:01:531489parcourir

L'exemple de cet article décrit comment créer des fichiers Access et Excel à l'aide de la programmation C#.net. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Certains systèmes peuvent avoir besoin d'exporter des données aux formats de fichier Access ou Excel pour faciliter le transfert de données, l'impression, etc.

Les deux fichiers à exporter, les fichiers Excel ou Access, peuvent ne pas exister à l'avance. Cela nous oblige à les programmer et à les générer nous-mêmes. Voici quelques méthodes pour générer ces deux fichiers, et seulement la plupart. ceux couramment utilisés sont répertoriés. Pas tout.

1. Générez d’abord le fichier Excel.

Option 1. Si vous utilisez Excel pour enregistrer uniquement des données bidimensionnelles, utilisez-le comme base de données.

Le plus simple, vous n'avez pas besoin de référencer de composants supplémentaires, il vous suffit d'utiliser OLEDB pour créer le fichier Excel. L’exemple de code est le suivant.

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();
}

Lorsque vous créez un tableau, si le système constate que le fichier Excel n'existe pas, il créera automatiquement le fichier Excel. Les personnes qui n’ont jamais été en contact avec cela ne le savent peut-être pas.

Quant aux opérations d'ajout et de modification, elles ne diffèrent pas des bases de données ordinaires et ne seront pas décrites.

Option 2 : Générez directement un fichier texte brut qui utilise des espaceurs pour séparer chaque élément de données, mais le suffixe du fichier est XLS.

Remarque : A ce moment, si vous ouvrez un tel fichier directement avec Excel, pas de problème, tout est normal, mais si vous utilisez ADO.net pour lire ce fichier, votre moteur de liens ne devrait pas être Excel. un fichier texte (Microsoft Text Driver). C'est-à-dire que la chaîne de connexion ne doit pas être

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c://aa2.xls;Extended Properties=Excel 8.0;"

mais doit être de la manière suivante :

chaîne de connexion façon OLEDB :

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://11.txt;Extended Properties='text;HDR=No;FMT=TabDelimited'

voie ODBC lecture de la méthode d'écriture de chaîne TXT :

Driver={Microsoft Text Driver (*.txt; *.csv)};
Dbq=C://11.txt;
Extensions=asc,csv,tab,txt;

Option 3. Le fichier Excel que vous souhaitez créer possède certaines fonctionnalités propres à Excel qui doivent être créées, vous devez donc utiliser Com, c'est-à-dire : Bibliothèque d'objets Microsoft Excel

Veuillez ajouter une référence à la bibliothèque d'objets Microsoft Excel 11.0. La version de cette bibliothèque de composants est différente selon la version d'Office que vous avez installée.

Exemple de code :

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();
}

J'ai simplement créé un fichier Excel ici, et il n'y a plus de manipulation d'Excel. Si vous souhaitez en savoir plus, vous pouvez vous référer aux articles concernés sur. ce site.

2. Générer une base de données Access

Access est une base de données après tout, donc la première méthode mentionnée ci-dessus dans Excel ne peut pas être appliquée.
Vous pouvez utiliser ADOX pour créer des fichiers de base de données Access.
La différence entre ADOX et OleDB : ADOX est l'API de données, qui n'est qu'une interface. OLEDB est le fournisseur de données, et l'API appelle le fournisseur de données.

Exemple de code :

Avant utilisation, veuillez ajouter une référence à Microsoft ADO Ext 2.x pour DDL et sécurité. Selon votre système d'exploitation, la version ici peut être différente.

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;
  }
}

Le code ci-dessus génère uniquement la base de données Access. Avec ADOX, vous pouvez également exploiter la base de données, ajouter des tables, etc.

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
 }
}

J'espère que cet article sera utile à tout le monde dans la programmation C#.

Pour des explications plus détaillées sur la façon de créer des fichiers Access et des fichiers Excel à l'aide de la programmation C#.net, veuillez prêter attention au site Web PHP chinois pour les articles connexes !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn