没有合适的资源?快使用搜索试试~ 我知道了~
首页OLEDB读取Excel、csv出现字符串截断、丢失原因及其解决方案
在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,例如将Excel数据通过应用程序导入SQL Sever等数据库中以备使用。笔者在开发“汽车产业链ASP协同商务平台”中遇到了类似需求。某汽车整车生产企业需要将其车辆发车信息发布到汽车产业链平台上去,其数据为内部ERP系统生成的Excel数据表,用户首先将该数据表上传至汽车产业链平台,平台将此Excel数据读取导入到平台内部的SQL Sever数据库中,以供其它应用使用。汽车产业链平台的开发使用的开发工具为VS.NET,使用的语言是C#,在开发的过程中发现使用Microsoft.Jet.OLEDB.4.0读取数据会出现当某一字段内分别含有文本和数字的混合数据时,某一类型的数据会产生丢失。本文就对此问题产生的根源进行了分析并给出了相应的解决方法。
资源详情
资源评论
资源推荐
OLEDB 读取 Excel、csv 出现字符串截断、丢失原因及其解决方案
2012-02-24 09:59:43|分类: C# Excel |标签: |字号大中小订阅
1 引言
在应用程序的设计中,经常需要读取 Excel 数据或将 Excel 数据导入转换到其他数据载体中,例如将
Excel 数据通过应用程序导入 SQL Sever 等数据库中以备使用。笔者在开发“汽车产业链 ASP 协同商务平
台”中遇到了类似需求。某汽车整车生产企业需要将其车辆发车信息发布到汽车产业链平台上去,其数据
为内部 ERP 系统生成的 Excel 数据表,用户首先将该数据表上传至汽车产业链平台,平台将此 Excel 数据
读取导入到平台内部的 SQL Sever 数据库中,以供其它应用使用。汽车产业链平台的开发使用的开发工
具为 VS.NET,使用的语言是 C#,在开发的过程中发现使用 Microsoft.Jet.OLEDB.4.0 读取数据会出现当
某一字段内分别含有文本和数字的混合数据时,某一类型的数据会产生丢失。本文就对此问题产生的根源
进行了分析并给出了相应的解决方法。
2 问题描述
Excel 是 Microsoft 公司的电子表格处理软件,在现代办公及企业信息化的应用中使用非常广泛,正因
如此,在程序设计中我们经常要通过访问 Excel 文件来获得数据,但 Excel 文件不是标准数据库[1]。
ASP.NET 也是 Microsoft 公司的产品,作为.NET FrameWork 框架中的一个重要组成部分,其主要用
于 Web 设计。我们在.NET 中访问读取 Excel 数据时一般采用 Microsoft.Jet.OLEDB.4.0[2]。现以读取一个
Excel 文件 auto.xls 中 sheet1 工作表为例,工作表的内容如表 1 所示。
表 1 sheet1 表的数据内容
现将该表的数据内容读取并显示到到 DataGrid 中,简化的代码如下:
String ConnStr = " Provider = Microsoft.Jet.OLEDB.4.0; DataSource=c:/auto.xls;Extended
Properties='Excel 8.0;HDR=YES';";
OleDbConnection Conn=new OleDbConnection(ConnStr);
Conn.Open();
string SQL="select * from [sheet1$]";
OleDbDataAdapter da=new OleDbDataAdapter(SQL,ConnStr);
DataSet ds=new DataSet();
da.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
Conn.Close();
但是运行以上代码的结果并不是期望的,它将显示为表 2 所示的内容。可以发现第一个字段中为
“1042”的两个数据项变为空。
表 2 DataGrid1 所显示的数据内容
有程序设计人员将以上代码 OleDbConnection 连接字符串中的 Extended Properties 一项作了如下改
动,Extended Properties='Excel 8.0;HDR=NO;IMEX=1’,认为可以解决此问题。由于在开发“汽车产业链
协同商务平台”中碰到过类似问题,作了大量的测试后发现,添加 IMEX=1 后并未实质上解决此问题。表
现为:如果某字段前 8 条记录中全部为纯数字的话,那么在该字段随后的记录中含有字母或汉字的项将仍
然变为空,但是如果该字段前 8 条记录中有一条不为纯数字,将能得到预期想要的结果。
3 问题分析
产生这种问题的根源与 Excel ISAM[3](Indexed Sequential Access Method,即索引顺序存取方
fangmiya7258
- 粉丝: 13
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论9