C#如何利用Oledb进行Excel表格的读取

 string fileName = "数据.xlsx";
 string connnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";

首先定义一个字符串存储excelbiaoge的路径信息;
接着再定义一个字符串 这个字符串用来连接你的excel表格信息的 如果是.xlsx格式就用上面这个,如果是.xls格式的就使用下面的

"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
```注意  这个连接字符串不能写错,空格都不能少,分号也是都要一字一字完整没错漏。


接着需要引入两个命名空间
using System.Data.OleDb;
using System.Data;

           接着写下面代码
          //新建一个连接
            OleDbConnection connection = new OleDbConnection(connnectionString);
            //打开连接
            connection.Open();

接着

            //sql 查询语句
            string sql = "select* from [sheet1$]";
            OleDbDataAdapter adapater = new OleDbDataAdapter(sql,connection);
            DataSet dataset = new DataSet();//用来存放数据 用来存放DataTable
            adapater.Fill(dataset);//把查询到的结果放到dataset里面
            connection.Close();

sql是查询语句,可以查询excel中的哪一张表 sheet1 或者 sheet2,记得后面要加$符号
adapater是适配器 可以把查询到的结果通过 adapater.fill 方法将数据存到dataset当中去
dataset是用来放数据的类,可以放很多张表格

以上步骤就是用来连接excel并解析数据的。

下面就是真正的读取数据了

            DataTableCollection tablecollection = dataset.Tables;
            DataTable datatable = tablecollection[0];
            DataRowCollection datarowcollection = datatable.Rows;
            foreach (DataRow item in datarowcollection)
            {
                for (int t = 0; t < 3; t++)
                {
                    Console.Write(item[t] +"   ");
                }
                Console.WriteLine("\n");
            }
            Console.ReadKey();

dataset.Tables 方法可以获取dataset中的所有表格信息
通过索引值 tablecollection[0] 可以获取到第一张表,接着通过datatable.Rows可以获取表中的所有行的信息,最后遍历就可以获取到所有数据啦。
注意:这里是获取不到表格的第一行数据的。会被默认当作是表头而不进行读取。想要获得表头可以用datatable.Columns[1].ColumnName

完整代码

        static void Main(string[] args)
        {
            string fileName = "装备1.xlsx";
            string connnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
            OleDbConnection connection = new OleDbConnection(connnectionString);
            //打开连接
            connection.Open();
            //sql 查询语句
            string sql = "select* from [sheet1$]";
            //适配器 需要两个参数 一个是sql语句 一个是连接字符串
            OleDbDataAdapter adapater = new OleDbDataAdapter(sql,connection);
            DataSet dataset = new DataSet();//用来存放数据 用来存放DataTable
            adapater.Fill(dataset);//把查询到的结果放到dataset里面
            //关闭连接
            connection.Close();
            //取得数据
            //获取所有的查询到的表格信息的集合
            DataTableCollection tablecollection = dataset.Tables;
            //获取一张表
            DataTable datatable = tablecollection[0];
            //获取表的所有行
            DataRowCollection datarowcollection = datatable.Rows;
            foreach (DataRow item in datarowcollection)
            {
                for (int t = 0; t < 3; t++)
                {
                    Console.Write(item[t] +"   ");
                }
                Console.WriteLine("\n");
            }
            Console.ReadKey();
        }
    }

猜你喜欢

转载自blog.csdn.net/LCHUIHUI/article/details/85281868