关于导入Excel问题

在项目里以前一直使用写好的导入Excel函数!打开Excel遍历Excel单元格值最后转换成DataTabel这样用了好久,突然有一天要导入Excel发现如果Excel有一列日期类型(1900-1-1)导入就成了double类型,使我非常郁闷!

 今天和同事的讨论下我们使用了oled连接打开获得excel存储到DataSet中最后使用,其中发现根据Excel的版本不同连接语句也有差别;

2003以下(包括2003)版本:string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source={0};Extended   Properties=/"Excel   11.0;HDR=Yes;IMEX=1/"", 文件路径);

2007版本:string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=/"Excel 12.0;HDR=YES;/"",文件路径);

需要注意的是高版本兼容低版本,相反则报错!如果使用2003版本语句有可能会出现OleDbException,找不到可安装的 ISAM。这样大家最好使用2007版本语句就可以了(前提是要安装2007)!如果不出异常可以直接使用2003版本连接语句,本人太懒没有去处理2003版本的异常处理!直接使用了2007(我安装了2007)

-----------------下面是连接读取Excel的简单语句------------------------

string filePath = "F://****//*.xls";

int d = OfficeRigistKey.GetRigistKey(OfficeRigistKey.DocType.Excel);
string strConn = "";
if (d == 12)  //office2007
{
       strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=/"Excel 12.0;HDR=YES;/"",filePath);

}
else //office2003及以下版本
{
      strConn =string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1/"",filePath);
}

OleDbConnection conn = new OleDbConnection(strConn);

string  strExcel = "select * from [sheet2$]";

conn.Open();
OleDbDataAdapter myCommand= new OleDbDataAdapter(strExcel, strConn);
DataSet  ds = new DataSet();
myCommand.Fill(ds, "table1");
return ds;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值