使用OLEDB操作Excel
关于OLEDB介绍参考
http://www.cnblogs.com/moss_tan_jun/archive/2012/07/28/2612889.html
连接字符串(fileName表示文件名)
"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; //旧版本.xls
"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""; //新版本.xlsx
操作代码如下:
static void Main(string[] args) { string fileName = @".\..\..\装备信息.xls"; //选择解析文档格式相匹配的字符串 string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; OleDbConnection connection = new OleDbConnection(connectString); connection.Open();//创建OleDbConnection对象进行连接数据源并打开连接 string sqlCommand = "select * from [Sheet1$]";//定义查询命令 OleDbDataAdapter adapter = new OleDbDataAdapter(sqlCommand,connection);//使用OleDbDataAdapter识别器对象进行查询 DataSet dataset = new DataSet();//定义DataSet对象用来存放表数据,可以存放多个表 adapter.Fill(dataset);//使用OleDbDataAdapter.Fill()把查询的结果填充到DataSet对象中 connection.Close();//查询完毕后关闭连接 DataTableCollection dataTables = dataset.Tables;//存放所有表的集合 //因为当前xls中只有一个表需要进行操作,直接使用索引获得即可 DataTable dataTable = dataTables[0];//直接使用[index]索引取得我们要的表,存放在DataTable对象中 DataRowCollection dataRows = dataTable.Rows;//使用DataRowCollection对象存放所有行的集合 //遍历DataRowCollection对象集合,取得每个行DataRow对象,通过索引取得某行中某列的值 foreach (DataRow row in dataRows) { for (int i = 0; i < row.ItemArray.Length; i++) { Console.Write(row[i]+" "); } Console.WriteLine(); } Console.ReadKey(); }
Excel文件的内容:
运行结果如下: