关于导入Excel问题
2009-04-21 14:36
197 查看
在项目里以前一直使用写好的导入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;
今天和同事的讨论下我们使用了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;
相关文章推荐
- 关于Excel导入的问题记录
- 关于Excel导入、导出的权限配置问题
- 关于Excel导入的问题记录
- IIS下发布关于Excel导入导出时遇到的问题集锦
- 关于navicat导入excel的问题
- 关于EXCEL数据导入到SQLSERVER中字段存在NULL的问题
- 关于导入excel问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- IIS下发布关于Excel导入导出时遇到的问题集锦
- 关于java poi导入导出excel的包冲突问题
- 关于EXCEL数据导入到SQLSERVER中字段存在NULL的问题
- 关于SSIS从Excel导入数据出现问题,字母加数字,变为NULL
- 关于Excel导入的问题记录
- 又是一个关于EXCEL文件导入mdb后台的问题
- 关于使用navicat向sqlserver和mysql数据库导入excel的问题
- [导入]转:两个关于.NET读取EXCEL文件的问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- 关于导入excel问题讨论