博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)利用C#读取excel
阅读量:5281 次
发布时间:2019-06-14

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

源码:

using
 System;
 

using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.SqlTypes;
using System.Data.Common;
using System.Data.Sql;
using System.Data;
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string constr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =e:\\news.xls;Extended Properties=Excel 8.0";
            string sqlcmd = "select * from [NewsData]";
            OleDbCommand oc = new OleDbCommand(sqlcmd, new OleDbConnection(constr));
            OleDbDataAdapter ap = new OleDbDataAdapter(oc);
            DataSet ds = new DataSet();
            ap.Fill(ds);
            DataTable dt =  ds.Tables[0];
            int count = 0;
            foreach (DataRow dr in dt.Rows)
            {
                //Console.Write(dc.ColumnName+"  ");
                
//Console.WriteLine(dc.DataType);
                DataColumn dc = dt.Columns[0];
                {
                    Console.WriteLine(dr[dc]);
                }
                if (count !=0 )
                    break;
                count++;
            }
            Console.ReadLine();
        }
    }
}

这个例子主要是根据OleDb的方法来讲Excel文件当做数据库来访问,具体步骤如下:

(1)首先设置连接字符串: string constr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =e:\\news.xls;Extended Properties=Excel 8.0";

其中Data Source后面应该跟着自己的文件。 

(2)然后OleDbCommend对象,这个对象就相对于命令,也就是创建你准备操作的命令。参数是命令字符串和数据库连接,对数据库操作肯定要连接到数据库上,因此命令的前一步是数据库连接,但是我们和在一个函数里写了。

(3)创建了这个命令,就会对数据库进行操作,操作的设置、进行、结果都在上面那个OleDbCommend对象中,当让我们需要从中找出来结果,这里我们利用DataAdapter,这个是个适配器,我们的操作得出的结果是一一个集,什么东东都用,适配器的作用就是对结果进行整合,给一个标准的数据集DataSet,也可以这样理解:适配器是个桥梁,A端是数据库,B端是我们要找的数据集,它起到一个适配作用,不管A端什么数据库,它都整理好提供给B端标准数据集。也有网友这么理解:而dataapater则与dataset配合,摆脱了操作数据过程中对数据库连接的依赖。一个最形象的比喻是,dataset是临时仓库,数据库是仓库,则适配器则是之间的一辆卡车,一次性从仓库中把货运到临时仓库,而不需要一件一件的来回跑。这就是其最大的好处。

(4)对于找回来的DataSet,我们首先要获得表,关系数据库都是根据表存在,DataTable,然后通过这个DataTable可以获得Columns列的集合,以及Rows的集合。然后就可以通过行列操作获得具体的元素值。

(5)对于行列操作,详见源码 

DataRow dr = dt.Rows[0];
DataColumn dc = dt.Columns[0];

Console.WriteLine(dr[dc]);

转载于:https://www.cnblogs.com/loveAnimal/archive/2012/10/29/2744360.html

你可能感兴趣的文章
usb driver编写 (转)
查看>>
usb gadge驱动设计之我是zero
查看>>
struts 标签
查看>>
Oracle个人自学笔记
查看>>
jQuery deferred对象详解(好)
查看>>
【BZOJ3205_洛谷3638】[APIO2013]机器人(动态规划)
查看>>
CSS 中蒙版相关设置二三事
查看>>
(Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
查看>>
在 WinForm 中使用 Direct2D
查看>>
docker容器时区问题
查看>>
Windows 10 PC 安装 Docker CE
查看>>
PowerDesigner最基础的使用方法入门学习
查看>>
WPF 圆形Loading
查看>>
Windows10上使用Linux子系统(WSL)
查看>>
WPF 使用 Edge 浏览器
查看>>
SQL Reverse函数
查看>>
查看数据库表的数据量和SIZE大小的脚本修正
查看>>
SQLSERVER性能监控级别步骤
查看>>
SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)...
查看>>
JS 禁止右键,禁止复制,禁止粘贴
查看>>