你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
C#实现以Excel表格的的形式来显示数据
 

Excel表格是微软公司Office套件中专门用作电子表格处理的软件,在实际的办公中,Excel表格的用途是非常广的,由此许多办公人员喜欢以Excel表格的形式来存取数据。这就要求程序设计人员要掌握把已经得到数据集,转换成Excel表格中。那么作为.Net程序开发语言中的一个重要组成部分的C#是如何来实现这个过程的转换的,本文就来探讨一下这个问题。

一、COM组件的转换:

虽然C#可以利用.Net框架中的类库——.Net FrameWork SDK,这个内容丰富,功能强大的类库来实现很多功能。其实对于C#来说,还有一个重要的资源,那就是已经拥有的COM组件,最大可能使用这些COM组件,往往会得到问题解决的最佳路径。说到这里,可能有读者会问,编译C#所使用到的类库,都是受管代码Managed Code,而COM是非受管代码Unmanaged Code的文件,这些COM组件难道可以被C#直接使用么?这个问题问的非常好,其实这也是C#中使用COM组件的关键问题。就如问题中所讲的,编译C#文件的时候,所使用的类库必须是受管代码Managed Code)文件,所以要使用是非受管代码Unmanaged Code的文件的COM组件,必须实现从非受管代码文件到受管代码文件的转换。在.Net FrameWrok SDK中就专门为这种转换提供了一个工具“tlbimp.exe”。如果你安装.Net FrameWork SDK在“C”盘,那么你会在目录“C:\Program Files\Microsoft.NET\FrameworkSDK\Bin”中发现他。同样我们知道Excel对象的COM组件名称为“EXCEL9.OLB”,如果你在“C”盘安装了Office套件,你可以在目录“C:\Program Files\Microsoft Office\Office”中发现这个文件。在找到了上述的二个文件后,把这二个文件都拷贝到C盘的根目录下面后,只需要运行下列简单的命令就可以实现对此COM组件的转换了,具体的命令如下:

tlbimp.exe Excel9.olb

运行完此命令后,就可以在C盘的根目录下面发现多出来三个DLL文件,分别是“excel.dll”、“vbide.dll”和“office.dll”。这就是由此COM组件转换而成的类库文件。在编译下面介绍的程序的时候,将会用到此三个文件。

二、本文中介绍的程序设计及运行环境

 (1.微软视窗2000 服务器版

2..Net Framework SDK Beta 2以上版本

3.Microsoft Data Access Component 2.6以上版本(MDAC2.6

4.Office 2000套件

三、本文介绍的数据库的数据字典:

在下面程序中,采用的数据库类型是SQL Server 7.0。数据库服务器选用的是本地服务器,数据库名称为“temp”,数据表名称为“table01”,数据字典如下:

字段名称

字段类型

字段长度

姓名

varchar

10

性别

varchar

10

工作单位

varchar

50

四、C#实现从数据集到Excel表格的转变的主要步骤和实现方法:

1)连接数据库,得到数据集:

实现这个过程相对比较简单,利用下面这些代码就可以实现对数据库的连接和得到自己的数据集,在下面的代码中,都有相应的注释,具体如下:

                     try

                     {

              // 建立数据连接,此字符串的意思是打开Sql server数据库,服务器名称为本//,数据库为temp

                            string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = temp ; Data Source = Localhost " ;

                            OleDbConnection myConn    = new OleDbConnection ( strCon ) ;

                            myConn.Open ( ) ;

                            string strCom = "SELECT * FROM table01" ;

                            //创建一个 DataSet对象

              DataSet myDataSet = new DataSet ( ) ;

              OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;

                            myCommand.Fill ( myDataSet , "table01" )  ;

                            //关闭此OleDbConnection

                            myConn.Close ( ) ;

                     }

                     catch ( Exception ey )

                     {

                            MessageBox.Show ( "连接错误! " + ey.ToString ( ) , "错误" ) ;              

                     }

                     DataTable table = myDataSet.Tables[0];

                     //得到数据集

2)创建一个空的Excel电子表格文档

这就要使用到由COM组件转换成的三个DLL文件了,在这些文件中定义了一个类“Excel.Application”,C#就是通过这个类来创建Excel电子表格文档的,下面是在C#中创建Excel表格的具体实现代码:

                     Excel.Application excel = new Excel.Application ( ) ;

                     excel.Application.Workbooks.Add ( true ) ;

这样一个空的Excel表格就产生了。

3)读取数据的字段名称,并在产生的Excel表格的第一行显示出来

为了在电子表格中显示的更明了,所以在定义字段名称的时候采用了中文,在“excel”对象中有一个属性“Cells”,此属性就是特指Excel表格中的每一个小的单元,你可以通过设定此属性的二个参数来访问创建的Excel表格中的每一个单元。下面就是实现此段功能的代码:

                     int colIndex = 0 ;

                     foreach ( DataColumn col in table.Columns )

                     {

                            colIndex++ ;  

                            excel.Cells[ 1 ,colIndex ] = col.ColumnName ;                        

                     }

4.实现数据集到Excel表格的转换

Excel表格来显示数据集中的数据,所运用的知识和(3)中的基本相同,下面是实现此功能的程序代码:

                     int rowIndex = 1 ;

                     foreach ( DataRow row in table.Rows )

                     {

                            rowIndex++ ;

                            colIndex = 0 ;

                            foreach ( DataColumn col in table.Columns )

                            {

                                   colIndex++ ;

                                   excel.Cells[ rowIndex  , colIndex ] =

row[ col.ColumnName ].ToString ( ) ;

                            }

                     }

五、C#实现以Excel表格的的形式来显示数据的完整代码:

我们把C#实现以Excel表格的的形式来显示数据过程分成了四个部分,掌握了这四个部分,就可以轻松得到以下完整的源代码(excel.cs),具体如下:

using System ;

using System.Drawing ;

using System.Collections ;

using System.ComponentModel ;

using System.Windows.Forms ;

using System.Data ;

using System.Data.OleDb ;

       public class Form1 : Form

       {

              private Button button1;

              private DataSet myDataSet ;

              private System.ComponentModel.Container components = null ;

              public Form1 ( )

              {

                     InitializeComponent ( ) ;

              }

              //清除程序中所使用过的各种资源

              protected override void Dispose ( bool disposing )

              {

                     if ( disposing )

                     {

                            if ( components != null )

                            {

                                   components.Dispose ( ) ;

                            }

                     }

                     base.Dispose ( disposing ) ;

              }

 

              private void InitializeComponent ( )

              {

                     button1 = new Button ( ) ;

                     SuspendLayout ( ) ;

                     button1.Location = new Point ( 32 , 72) ;

                     button1.Name = "button1" ;

                     button1.Size = new Size ( 216 , 112 ) ;

                     button1.TabIndex = 0 ;

                     button1.Text = "C#实现从数据集到Excel表格的转变" ;

                     button1.Click += new System.EventHandler ( button1_Click ) ;

                     AutoScaleBaseSize = new Size ( 5 , 13 ) ;

                     ClientSize = new Size ( 292 , 273 ) ;

                     this.Controls.Add ( this.button1 ) ;

                     this.Name = "Form1" ;

                     this.Text = "C#实现从数据集到Excel表格的转变" ;

                     this.ResumeLayout ( false ) ;

              }

              static void Main ( )

              {

                     Application.Run ( new Form1 ( ) ) ;

              }

              private void button1_Click ( object sender , System.EventArgs e )

              {

                     //连接数据库,得到数据集

                     try

                     {

       // 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名

//称为本地 ,数据库为temp

                            string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = temp ; Data Source = Localhost " ;

                            OleDbConnection myConn    = new OleDbConnection ( strCon ) ;

                            myConn.Open ( ) ;

                            string strCom = "SELECT * FROM table01" ;

                            //创建一个 DataSet

                            myDataSet = new DataSet ( ) ;

       OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom  , myConn ) ;

                            myCommand.Fill ( myDataSet  , "table01" )  ;

                            //关闭此OleDbConnection

                            myConn.Close ( ) ;

                     }

                     catch ( Exception ey )

                     {

                MessageBox.Show ( "连接错误! " + ey.ToString ( )  , "错误" ) ;     

            }

            DataTable table = myDataSet.Tables[ 0 ] ;

            //创建一个空的Excel电子表格文档

                     Excel.Application excel= new Excel.Application ( ) ;

                     excel.Application.Workbooks.Add ( true ) ;

                     //读取数据的字段名称,并在产生的Excel表格的第一行显示出来     

                     int colIndex = 0 ;

                     foreach ( DataColumn col in table.Columns )

                     {

                            colIndex++ ;  

                            excel.Cells[ 1 , colIndex ] = col.ColumnName ;                       

                     }

                     //实现数据集到Excel表格的转换

                     int rowIndex = 1 ;

                     foreach ( DataRow row in table.Rows )

                     {

                            rowIndex++ ;

                            colIndex = 0 ;

                            foreach ( DataColumn col in table.Columns )

                            {

                                   colIndex++ ;

                                   excel.Cells[ rowIndex , colIndex ] =

row[ col.ColumnName ].ToString ( ) ;

                            }

                     }

                     excel.Visible=true ;       

              }

       }

六、编译excel.cs命令:

要成功编译此文件,还需要引用到由COM组件转换而成的三个DLL文件,具体的编译命令如下:

csc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:office.dll /r:vbide.dll /r:excel.dll excel.cs

可以得到excel.exe

至用此C#实现以Excel表格的的形式来显示数据的工作就全部完成了。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089