ホームページ  >  記事  >  バックエンド開発  >  C#.netプログラミングを使ったAccessファイルとExcelファイルの作成方法を詳しく解説

C#.netプログラミングを使ったAccessファイルとExcelファイルの作成方法を詳しく解説

高洛峰
高洛峰オリジナル
2017-01-13 17:01:531457ブラウズ

この記事の例では、C#.net プログラミングを使用して Access ファイルと Excel ファイルを作成する方法を説明します。参考のためにみんなと共有してください。詳細は次のとおりです:

一部のシステムでは、データ転送や印刷などを容易にするために、データを Access または Excel ファイル形式にエクスポートする必要がある場合があります。

Excel ファイルまたは Access、エクスポートする必要がある 2 つのファイルが事前に存在していない可能性があるため、これら 2 つのファイルを生成するためのいくつかの方法を以下に示します。最も一般的に使用される方法のみです。が列挙されています。すべてではない。

1. まず Excel ファイルを生成します。

オプション 1. Excel を使用して 2 次元データのみを保存する場合は、それをデータベースとして使用します。

最も単純な方法では、追加のコンポーネントを参照する必要はなく、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 テキスト ドライバー)。つまり、リンク文字列は

"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 オブジェクト ライブラリ

Office のバージョンに応じて、Microsoft Excel 11.0 オブジェクト ライブラリへの参照を追加してください。インストールしたこのコンポーネントライブラリはバージョンも異なります。

コード例:

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 での最初の方法は適用できません。
ADOX を使用して Access データベース ファイルを作成できます。
ADOX と OleDB の違い: ADOX はデータ API であり、OLEDB は単なるデータ プロバイダーであり、API はデータ プロバイダーを呼び出します。

サンプルコード:

使用する前に、DDL とセキュリティについて Microsoft ADO Ext. 2.x への参照を追加してください。オペレーティング システムによっては、ここでのバージョンが異なる場合があります。

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# プログラミングの皆様のお役に立てれば幸いです。

C#.net プログラミングを使用して Access ファイルと Excel ファイルを作成する方法の詳細な説明については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。