C#读取Excel表格中的数据
发布日期:2021-10-03 22:21:32 浏览次数:15 分类:技术文章

本文共 3145 字,大约阅读时间需要 10 分钟。

1读取数据

读取Excel表格中的数据和读取数据库中的数据是非常类似的,在某种程度上Excel表格可以看成是一张一张的数据表。二者的主要区别在于所使用的数据引擎不一样。可通过下列代码实现读取Excel表格数据:

        //创建一个数据链接

     string strCon = "Provider=Microsoft.Jet.Oledb.4.0;Data Source= c:\\sample.xls;;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

        OleDbConnection myConn = new OleDbConnection ( strCon ) ;

        string strCom = " SELECT * FROM [Sheet1$] " ;
        myConn.Open ( ) ;
        file://打开数据链接,得到一个数据集
        OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
        file://创建一个 DataSet对象
        myDataSet = new DataSet ( ) ;
        file://得到自己的DataSet对象
        myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
        file://关闭此数据链接
        myConn.Close ( ) ;
   读取Excel表格中的数据其实和读取数据库中的数据没有什么实质上的区别。
   注释:这里读取的是C盘根目录下的"Sample.xls"文件。
2用DataGrid来显示得到的数据集:
   在得到DataSet对象后,只需要通过下列二行代码,就可以把数据集用DataGrid显示出来了:

DataGrid1.DataMember= "[Sheet1$]" ;

          DataGrid1.DataSource = myDataSet ;

3用 C#读取Excel表格,并用DataGrid显示出来的程序代码(Read.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 System.Data.DataSet myDataSet ;
private DataGrid DataGrid1 ;
private System.ComponentModel.Container components = null ;

public Form1 ( )

{
file://初始化窗体中的各个组件
InitializeComponent ( ) ;
file://打开数据链接,得到数据集
GetConnect ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}

private void GetConnect ( )

{
file://创建一个数据链接
string strCon = "Provider=Microsoft.Jet.Oledb.4.0;Data Source= c:\\sample.xls;;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
file://打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://创建一个 DataSet对象
myDataSet = new DataSet ( ) ;
file://得到自己的DataSet对象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
file://关闭此数据链接
myConn.Close ( ) ;
}
private void InitializeComponent ( )
{
DataGrid1 = new DataGrid ( ) ;
button1 = new Button ( ) ;
SuspendLayout ( ) ;
DataGrid1.Name = "DataGrid1";
DataGrid1.Size = new System.Drawing.Size ( 400 , 200 ) ;

button1.Location = new System.Drawing.Point ( 124 , 240 ) ;

button1.Name = "button1" ;
button1.TabIndex = 1 ;
button1.Text = "读取数据" ;
button1.Size = new System.Drawing.Size (84 , 24 ) ;
button1.Click += new System.EventHandler ( this.button1_Click ) ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;

this.ClientSize = new System.Drawing.Size ( 400 , 280 ) ;
this.Controls.Add ( button1 ) ;
this.Controls.Add ( DataGrid1 ) ;
this.Name = "Form1" ;
this.Text = "读取Excle表格中的数据,并用DataGrid显示出来!" ;
this.ResumeLayout ( false ) ;

}

private void button1_Click ( object sender , System.EventArgs e )
{
DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;

}

static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}

4总结:

  以上只是读取了Excel表格中"Sheet1"中的数据,对于其他"Sheet"中的内容,可以参照读取"Sheet1"中的程序,只作一点修改就可以了,譬如要读取"Sheet2"中的内容,只需要把"Read.cs"程序中的"Sheet1$"改成"Sheet2$"就可以了。

转载地址:https://blog.csdn.net/lc547913923/article/details/17733305 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用Paint事件重画GroupBox来修改边框颜色
下一篇:CIF、DCIF、D1分辨率是多少?

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月20日 22时41分43秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Redis - Redis health check failed:Unable to connect to localhost:6379 2019-04-27
JavaWeb - 工作窃取算法 Work-Stealing 2019-04-27
程序人生 - 祝贺登榜《数据结构与算法领域内容榜》NO.29 2019-04-27
LeetCode(数据库)- 只出现一次的最大数字 2019-04-27
Linux - JAR 打包上传 Linux 服务器常用命令 2019-04-27
LeetCode(数据库)- 统计各专业学生人数 2019-04-27
HDU - 2018杭电ACM集训队单人排位赛 - 2 - Problem D. Team Name 2019-04-27
HDU - 2018杭电ACM集训队单人排位赛 - 3 - Problem E. Sequence 2019-04-27
HDU - 2018杭电ACM集训队单人排位赛 - 3 - Problem F. Four-tuples 2019-04-27
HDU - 2018杭电ACM集训队单人排位赛 - 3 - Problem H. Dominoes 2019-04-27
ZCMU - 2065: 打印十字图 2019-04-27
ZCMU - 1978: 调酒壶里的酸奶 2019-04-27
HDU - 2018杭电ACM集训队单人排位赛 - 4 - Problem C. Sequence 2019-04-27
【Makefile由浅入深完全学习记录5】预定义变量的使用 2019-04-28
【C++深度剖析教程32】new/malloc区别 delete/free区别 2019-04-28
【Linux进程、线程、任务调度】四多核下负载均衡 中断负载均衡,RPS软中断负载均衡 cgroups与CPU资源分群分配 Linux为什么不是硬实时 preempt-rt对Linux实时性的改造 2019-04-28
IMX6移植Linux3.0.35内核时需要添加的矩阵按键的平台设备信息 2019-04-28
IMX6移植Linux4.1.15内核时需要添加矩阵按键的设备树信息 2019-04-28
I.MX6开发板移植Linux4.1.15内核之TSC2007触摸屏设备树信息的添加 2019-04-28
【剑指offer - C++/Java】1、二维数组中的查找 2019-04-28