最近应要求写了一段代码,读取excel数据。excel读取方法有两个,两个各有自己的优势,同时也有各自的缺点。
方法一:采用sqlCommand命令读取方法。
具体实现代码如:
//FilePath是路径
string conn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + FilePath + ";Extended Properties =Excel 8.0;";
//Sheet1 是表名
string sql = "select * from [Sheet1$] where [Rows]=" + 5;
OleDbCommand cmd = new OleDbCommand(sql, new OleDbConnection(conn));
OleDbDataAdapter ad = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
ad.Fill(ds);
dt = ds.Tables[0];
dataGridView1.DataSource = ds.Tables[0];
这个方法的最大优点就是像操作数据库一样,能快速地读取数据,将数据保存到列表中。但是正因为跟数据库相似,所以excel数据的格式要统一,不能有标题什么的。因为我做的过程中所读的表固定前五行固定是标题,所以一直报错:在第33行格式不符,气死我了…………。
第二种方式是最传统的excel操作方式:
1,在引用部分添加引用:在com组建部分添加Microsoft Office12.0 object library 和Microsoft Excel 12.0 object library 两个库。
在文件标头添加
using Microsoft.Office.Core;
using Excel;
然后读取的代码是:
Excel.ApplicationClass app = new Applicatio