操作Excel和数据库的方法类似。
//建立与Excel的连接并打开(Excel 8.0且不包含标题行)
OleDbConnection xlsConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + xlsFilePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"");
//这里的连接字符串通常保存在Setting.settings文件中,使用时用global:EucGlo(解决方案名称)(这两部分可省略).Properties.Settings.Default.EucGloConnectionString(文件中定义的名字)获得。
//注意字符串中包含有引号,像在这里自己定义和使用时需要转义
//对于Excel 8.0,网上查到的语句也有很多是5.0,可能是操作早期Excel版本的语句吧。
//语句 HDR=Yes;IMEX=1 可不加,但还是加的好,因为不知道默认值是多少。其中HDR表示是否包含Excel标题行(第一行)。IMEX=1在网上查到说是表示将Excel中所有数据视为文本,但我觉得明显不是。我这样子连接后,后面可以用xlsReader.GetDouble()方法获取Excel中的数字(包括整型和浮点型),得到数字后在强制转化为需要的数字类型即可。
xlsConn.Open();
//建立对Excel的SQL操作,注意使用的表的方法
string sqlXls = "select * from [Sheet1$]";
OleDbCommand xlsComm = new OleDbCommand(sqlXls, xlsConn);//这一句并不执行SQL语句
//OleDbCommand的一些方法单独介绍
//执行SQL语句并从Excel中获得数据放入xlsReader
OleDbDataReader xlsReader = xlsComm.ExecuteReader(CommandBehavior.Default);
//循环读取Excel文件中的记录直到最后一行
while (xlsReader.Read())
{
xlsReader.GetString(O);
//获取这一行中第一列的字符串,如果为空则会产生异常,因此需要try,catch
//其他处理语句;
}
xlsReader.Close();
xlsReader.Dispose();
xlsComm.Dispose();
xlsConn.Close();
xlsConn.Dispose();
阅读(1644) | 评论(0) | 转发(0) |