使用ADO.NET的DbProviderFactory读取或写入Excel中的表单

本文介绍了如何利用ADO.NET的DbProviderFactory来读取和写入Excel中的数据,详细展示了创建连接字符串、从Excel加载数据到DataSet以及向Excel插入数据的步骤,使得操作Excel表格如同操作数据库表一样便捷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   由于工作需要,需要将数据库中的表填充到Excel中,我本人是相当不喜欢任何类型的手动输入输出,或表格计算的导入导出,但是事情还是要做的。

通过ADO.NET的DbProviderFactory可以轻松的读取或写入Excel的Spreadsheet,和平时操作数据库表类似。


    首先是我引用了平时用的一个Excel文件 “ZYDM.xls”,这里我的第一行使用的两列名称类似于数据库的字段名称,这一行很重要,在后面你可以看到其存在的必要性;另外我并没有用

Excel默认的Sheet1,而是我重命名后的ZYDM


   

   

    其次就是确定连接字符串

     string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Projects\CSDemo1_Reading and Writing Excel\ReadingAndWriteExcel\Cities.xls;Extended Properties=""Excel 8.0;HDR=YES;""";

     “E:\Projects\CSDemo1_Reading and Writing Excel\ReadingAndWriteExcel\ZYDM.xls” 是我的Excel文件的路径,这里可以把它替换成你的文件的路径


   一旦链接字符串确定后,其余的操作于对一般的数据操作几乎没什么差别。



1.下面是DataSet存储读取到的Excel内容,并绑定到WindowsForm下的DataGridView控件中

   代码如下

         //button1-在GridView中显示Excel中的内容  

        private void button1_Click(object sender, EventArgs e)

        {

            string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Projects\CSDemo1_Reading and Writing Excel\ReadingAndWriteExcel\ZYDM.xls;Extended Properties=""Excel 8.0;HDR=YES;""";



            DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");


            DbDataAdapter adapter = factory.CreateDataAdapter();


            DbCommand selectCommand = factory.CreateCommand();

            selectCommand.CommandText = "SELECT ZYDM,ZYDMNAME FROM [ZYDM$]";


            DbConnection connection = factory.CreateConnection();

            connection.ConnectionString = connectionString;


            selectCommand.Connection = connection;


            adapter.SelectCommand = selectCommand;


            DataSet cities = new DataSet();


            adapter.Fill(ZYDM);

            gvEX1.DataSource = ZYDM.Tables[0];          

    }


效果如下:



下面是在Excel中插入所需要的一行数据


        private void 插入Excel_Click(object sender, EventArgs e)

        {

            string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Projects\CSDemo1_Reading and Writing Excel\ReadingAndWriteExcel\Cities.xls;Extended Properties=""Excel 8.0;HDR=YES;""";


            ///获取Excel其中一行

            DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");


            using (DbConnection connection = factory.CreateConnection())

            {

                connection.ConnectionString = connectionString;


                using (DbCommand command = connection.CreateCommand())

                {

                    command.CommandText = "INSERT INTO [ZYDM$] (ZYDM,ZYDMNAME) VALUES(\"00\",\"插入成功了 哈哈!\")";


                    connection.Open();


                    command.ExecuteNonQuery();


                }

            }

        }


效果如下

  


很COOL是吧,除了查询、插入,当然你还可以定义更新、删除以及更复杂的操作。。

PS:

DbProviderFactory 类

表示一组方法,这些方法用于创建提供程序对数据源类的实现的实例。

命名空间:  System.Data.Common
程序集:  System.Data(在 System.Data.dll 中)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值