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();
}
}