首页 后端开发 C#.Net教程 C#.net编程创建Access文件和Excel文件的方法详解

C#.net编程创建Access文件和Excel文件的方法详解

Jan 13, 2017 pm 05:01 PM

本文实例讲述了C#.net编程创建Access文件和Excel文件的方法。分享给大家供大家参考,具体如下:

一些系统可能需求把数据导出到Access或者Excel文件格式,以方便的传递数据、打印等。

Excel 文件或者 Access这两种需要导出的文件可能并不是事先就存在的,这就需要我们自己编程生成他们,下面整理一下生成这两个文件的一些方法,只罗列最常用的。并不全。

一、首先生成Excel文件。

方案一、如果用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文件的创建。这点如果没接触过的人,可能会不知道的。

至于对其中的增加、修改操作, 跟普通数据库没啥两样,就不描述了。

方案二、直接生成一个使用间隔符号隔开每一项数据的纯文本文件,但是文件的后缀是 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;
登录后复制

方案三、你要创建的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,如果想深入学习的话可以参考本站的相关文章。

二、生成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#程序设计有所帮助。

更多C#.net编程创建Access文件和Excel文件的方法详解相关文章请关注PHP中文网!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C语言中NULL的替代方案有哪些 C语言中NULL的替代方案有哪些 Mar 03, 2025 pm 05:37 PM

本文探讨了C中的无指针启用的挑战。它认为问题本身不是零,而是滥用。 本文详细介绍了预防退出的最佳实践,包括提出前检查,指针pitiberi

c语言编译器怎么加下一格 c语言编译器怎么加下一格 Mar 03, 2025 pm 05:44 PM

本文解释了如何使用printf中的\ n逃脱序列在C中创建新线字符并列出函数。 它详细介绍了功能并提供了代码示例,以说明其用于输出中的线路断裂。

c语言编译器哪个好? c语言编译器哪个好? Mar 03, 2025 pm 05:39 PM

本文指导初学者选择C编译器。 它认为,海湾合作委员会由于其易用性,广泛的可用性和广泛的资源,最适合初学者。 但是,它也比较了海湾室,Clang,MSVC和TCC,突出了它们的差异

C语言中NULL在现代编程中还重要吗 C语言中NULL在现代编程中还重要吗 Mar 03, 2025 pm 05:35 PM

本文强调了NULL在现代C编程中的持续重要性。 尽管取得了进步,但NULL对于明确的指针管理仍然至关重要,从而通过标记没有有效的内存地址来防止细分故障。 最好的prac

c语言编译器网页版有哪些? c语言编译器网页版有哪些? Mar 03, 2025 pm 05:42 PM

本文回顾了初学者的在线C编译器,重点是易用性和调试功能。 在线GDB和REPL。 其他选项,例如Programiz和Compil

c语言在线编程网站 c语言编译器官方网站汇总 c语言在线编程网站 c语言编译器官方网站汇总 Mar 03, 2025 pm 05:41 PM

本文比较在线C编程平台,突出了诸如调试工具,IDE功能,标准合规性和内存/执行限制等功能的差异。 它认为“最佳”平台取决于用户需求

c语言编译器复制代码方法 c语言编译器复制代码方法 Mar 03, 2025 pm 05:43 PM

本文讨论了C IDE中的有效代码复制。 它强调,复制是IDE功能,而不是编译器功能,并且详细提高了效率的策略,包括使用IDE选择工具,代码折叠,搜索/替换,Templa

c语言编译器不弹出输出窗口怎么解决 c语言编译器不弹出输出窗口怎么解决 Mar 03, 2025 pm 05:40 PM

本文在C程序编译中对缺少输出窗口进行故障排除。 它研究了诸如无法运行可执行文件,程序错误,错误编译器设置,背景过程和快速程序终止之类的原因。解决方案涉及ch

See all articles