葡京娱乐总站平台OLDB读取excel的数据类型不匹配的解决方案(ZT)

本文提出另外一栽采取读取CSV纯文本格式解决这个题材的道。 
  (1)在读取Excel的.xls类型的文件数据之前,先用那易为.csv格式,在Excel中直接另存为这种格式就足以高达转换的目的。CSV文件同时称为逗号分隔的文书,是同等种植纯文本文件,它以“,”分隔数据列,本文表1的数据表用CSV格式存储后之所以纯文本编辑器打开的表现形式如表3所展示。 
  表3 采用CSV格式保存的表1数据 
  需要指出的是,CSV文件也可用Ole
DB或ODBC的艺术读取,但是要是运用这些主意读博该数据以见面回到丢失数据的老路上,ISAM机制一样会发挥作用。 
  (2)采用一般的读取文本文件之主意打开文件,读取第一实行,用“,”作为分隔符获得各字段名,在DataTable中开创对应的各国字段,字段的档次可以合创造成为“String”。 
   
本文原文 
  (3)逐行读取数据行,
用“,”作为分隔符获得某行各列的多少并填写入DataTable相应的字段中。 
  实现之简化代码如下: 
  String line; 
  String [] split = null; 
  DataTable table=new DataTable(“auto”); 
  DataRow row=null; 
  StreamReader sr=new
StreamReader(“c:/auto.csv”,System.Text.Encoding.Default); 
  //创建和数据源对应之数列 
  line = sr.ReadLine(); 
  split=line.Split(‘,’); 
  foreach(String colname in split){ 
  table.Columns.Add(colname,System.Type.GetType(“System.String”));

  //将数据填数据表 
  int j=0; 
  while((line=sr.ReadLine())!=null){ 
   j=0; 
   row = table.NewRow(); 
   split=line.Split(‘,’); 
   foreach(String colname in split){ 
   row[j]=colname; 
   j++;} 
   table.Rows.Add(row);} 
   sr.Close(); 
  //显示数据 
  dataGrid1.DataSource=table.DefaultView; 
  dataGrid1.DataBind(); 
   
5
结语 
  在应用程序的宏图中,需要访问Excel数据的场面挺广阔,本文为以.NET中针对走访含有混合类型数据的Excel表格拟以的计进行探讨。当然,如果未在混合类型的数额运用Microsoft.Jet.OLEDB为比佳方案。对于非是使用.NET开发之情形,本论文的剖析及所提供的方法能够参考。

如,1999年QQ发布(聊天室、传文书),2003年QQ爆发式推出新力量(手Q上线、QQ群等颁布),2007年QQ迎来新转变(QQ会员上线);而在每次变更的后少年,2001年、2005年QQ各项机能以当时就达相对平静、成熟之状态,这时候是内容业务切入的最佳机会,腾讯分别推出的QQ邮箱、QQ空间相当延伸工作都得到那个好发展。相似规律在Facebook等国外IM软件都赢得验证。

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,即索引顺序存取方法)驱动程序的范围有关,Excel ISAM
驱动程序通过检查前几乎实施遭实际值确定一个 Excel
列的项目,然后择能够代表其样本被多数分值的数据类型[4]。也即Excel
ISAM查找某列前几乎实行(默认情况下是8行),把占大半的型作为那个拍卖项目。例如如果数字占大半,那么任何富含字母等文件的多寡项就见面置空;相反如果文本居多,纯数字的数量项就会叫置空。 
  现具体分析在第1节程序代码Extended
Properties项中之HDR和IMEX所表示的意思。HDR用来装是否将Excel表中首先执作为字段名,“YES”代表是,“NO”代表不是就为为多少内容;IMEX是用来报驱动程序使用Excel文件之模式,其值有0、1、2叔栽,分别表示导出、导入、混合模式。当我们安IMEX=1时拿挟持混合数据易为文本,但单纯这种设置并无可靠,IMEX=1一味保证在某列前8行数据至少有一个凡文件项的下才由作用,它只是将查找前8行数据中数据类型占优选择的所作所为作了略微的变更。例如某列前8行数据都呢纯数字,那么它们依然为数字型作为该列的数据类型,随后行里的蕴藏文本的多少还是变空。 
  另一个改进的点子是IMEX=1与登记表值TypeGuessRows配合以,TypeGuessRows
值决定了ISAM
驱动程序从眼前几乎漫漫数采样确定数据类型,默认为“8”。可以经过改动“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel”下的拖欠注册表值来转采样行数。但是这种改进要么无根本达化解问题,即使我们管IMEX设为“1”,
TypeGuessRows设得更特别,例如1000,假要数据表有1001推行,某列前1000推行都否纯数字,该列的第1001履行而是一个文件,ISAM驱动之这种体制或受这排的数化空。 
   
4
解决办法 
  从以上的辨析中可摸清,当某列数据中包含混合类型时,在.NET中应用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数丢失是不可逆转的,要化解这题目不得不考虑用另外数据读取方法。 
  在.NET中读取Excel文件的另外一种方式是回去用传统COM组件,这种方法以诸多技文章要舆论中还出关系,本文不作赘述。需要指出的是,使用COM组件来读取Excel文件数量的效率比较逊色,在作释放的时起或碰到不可预知的荒谬,特别开Web应用的次应该慎重使用。 

其三是内容策略,QQ通过不断扩大边界,内层作为连接器,外层扩充内容形成闭环。内层基础内容为联系为主(文字、表情、照片、语音、视频),衍生内容因应酬为主(空间、附近的人头、群租、),外层拓展生存为主(包括打、音乐、等)。

OLEDB 连接EXCEL的连字符串 IMEX的题目

       今天遇见一个题材亟需想EXCEL表中形容多少,折腾了长远才察觉凡是IMEX惹得祸,所以记录下提醒自己,也欲大家不用产生同样的吹拂。 

碰到问题:使用语句 “insert into [Sheet1$] (大类) values (‘test’)”
无法插入 。 

原因:Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=’2008-08.xls’; Extended Properties=’Excel 8.0;HDR=Yes;IMEX=1′ 

化解方法:
去丢IMEX=1 

补充: 
       向EXCEL插入数据时 数据类型是由于前8行数据中数据类型占优选择
例如:分数一列前前8行为空值 插入5为字符串格式,如果前8表现数字格式
插入5也数字格式关于IMEX的素材: 

       IMEX是故来报告驱动程序使用Excel文件的模式,其值有0、1、2叔种植,分别代表导出、导入、混合模式。当我们装IMEX=1时以劫持混合数据易为文本,但单纯这种装置并无牢靠,IMEX=1一味包以某列前8行数据至少发生一个凡是文件项的时刻才自作用,它只是将查找前8行数据遭到数据类型占优选择的行事作了不怎么的反。例如某列前8行数据全否纯数字,那么她还是因数字型作为该列的数据类型,随后行里的含有文本的数码还是变空。 

  另一个改良的方是IMEX=1与注册表值TypeGuessRows配合下,TypeGuessRows
值决定了ISAM
驱动程序从前面几乎长长的数据采样确定数据类型,默认为“8”。可以经过改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
\Jet\4.0\Engines\Excel”下的欠注册表值来改采样行数。但是这种改进要么无从来达缓解问题,即使我们将IMEX设为“1”,
TypeGuessRows设得再大,例如1000,假而数据表有1001实践,某列前1000履都呢纯数字,该列的第1001执又是一个文本,ISAM驱动的这种体制还是为这列的数据变成空。

近年听了一致庙会腾讯QQ和CDC团队作的产品经理分享会,主讲者包括腾讯IM的产品究竟监Shrek。先用相同词话总结下就会分享会:虽道与技能不同,唯业与态相通。

当即无非是QQ的道和技术,或许每家都来和好之方法论和履,也只有找准自己之申及术才方能不做互联网潮流的牺牲品。

1、单点突破、极致体验

那:不管他们现在是否年轻,他们是鹏程,也得是主流,我们无可能逆势而为。

这时,你就算该做一样宗事,回归产品之真相,到底年轻的真相是呀?而众多出品经理这时候就是东看见、西看看,看看人家做了呀,然后以好的制品达到堆放一个,硬堆起来的最终都是豆腐渣工程。

2、数据支持、优化产品

眼光同样就算是90晚、00继认为好是史无前例的“新物种”,一种是为老二潮元群体也代表的日韩系,性格内向、闷骚;还有一样种植偏成熟之欧美系,要求高、敢秀自拍。这帮助人的见同样看即是学院派的。

1、随时保持危机感、把握好切入时机

通过不同渠道的调研及开,收集到不少求,有个性化的、表达想法的、享受在之等等,但是拥有的需要还是分散的,需求该如何确认,又该怎么找到用户实际的要求吗?

Shrek工作了10+年,本身为算是一款款老产品了,可以称之为老前辈、老资格、资深出品经理。这里顺便吐槽下产品界的均等栽次风气:那些刚刚本科毕业或者刚工作不至平等年即自称为产品经营的童鞋们事先转移着急着下忽悠,回去先多吃几年米,多流动几次泪。目前,绝大部分所谓的出品经理都是功能性产品经营,说白了便是肩负某一样块任务,可能名片上为进行工作的便利性加了只活经理的名,然后江湖虽各种xx产品经营,xx高级产品经理的名称跟风四起,现在之食指怎么还如此浮躁,别当做个app就是在创业,其实你仅仅是浪潮中之敢死队。

QQ对于年轻化的整体规划策略就是是‘个性’、‘社交’和‘内容’,三者相辅相成。腾讯的做法尽管是于QQ动态一棚,设置好友动态、附近和兴趣部落的二级入口,满足的凡弟子当熟人、陌生人和感兴趣社交三只维度的泛社交需求。在‘个性’策略及,腾讯的做法就是从活的框架入手,收于个人tab,确定信息、联系人、动态三好重点。其次,QQ以层级递进式的拓路径开展‘社交‘业务,以熟人为基本,向外扩展,从熟人扩展及邻近路人,再由旁观者扩展至兴趣部落的社群社交。打只比方QQ在举行熟人关系链的下先是考虑了QQ好友及挚友的动态,但新兴发现通讯录和QQ有于强涉嫌链,所以又把手机通讯录添加进道熟人关系链,同样于斯社交层级中,可以穿梭的拓及添加。腾讯最要命之出品政策就是是横向和纵向可动态扩展,就如打仗一样,可攻可守。

好,继续回来。

3、创新速度、快速迭代

概括起这简单种学派的说法,年轻的真相就是是青春用户等成长、生活于动互联网时代,他们重新亟待个性化、娱乐化、能发挥我的周旋平台。接下来,Shrek分享了腾讯QQ在年轻化策略及之方法论和履。

对此年轻的精神是啊的话题?腾讯也时有发生差之‘学派’(学院派与现实性使)出来舌战。

无异于 QQ产品之申(方法论)

2、找到主要矛盾和要紧路径,整体规划、前期做减法

举行产品不是说年大之老一辈就无可知开,只能是青年来举行。关键是心情和针对成品的感情,包括热情、观察、细节等,永保持一颗年轻化的心怀和看法,去错产品细节。

设是您的言语,你切莫是说公是活经理也?你见面怎么决定?不若yy答案了,这种情景下小宝宝的去采访数据吧,答案就是收藏在其中。QQ
2015年之用户分布图显示,90晚用户占了一半,而90继长80继同做的青春用户群占到了总量之80%,所以答案就是QQ产品的特质是年轻化。好了,年轻化既然是QQ的出品为主,那么年轻化的要求是别之,年轻用户之求而是啊为?抓匪停止需求等扯蛋。

数支持如何去优化产品?Shrek举了只QQ传文书打磨的例证,腾讯用后高大量的数码发现用户以就此手机和pc端之间举行文件传输的时候,很多早晚都见面失掉摘QQ邮箱。但是问题来了,原来邮箱的计划并不曾设想到用来满足作过平台的文件传输需求,而且效率与安居也无是特地高。根据数据解析结果我们拿超越平台文件传输这个力量就了QQ上来,而且经过不停的优化传输质量,花了个别年之时光打一个9提升到个别单9,现在每日来贴近5000w只文件传输,根据数据与用户反馈去优化产品绝对是好路。真心为这跨平台文件传输功能点赞。

另外一个例子就是是信一键退潮,因为用户之居多很多,有些用户就是投诉无思见到满屏的吉点,为了体验QQ也就开了一个一键可拿过多的信息清除掉。

其次 QQ产品之技术(实践措施)

快速的版本迭代去优化产品,所有的活功能只有经市场,经过用户的行使才会去印证其的高低,支撑后续的优化。QQ的迭代速度基本维持以每个月份一个本。

Shrek上台便咨询了一致词话:QQ是17年的制品了,作为一如既往缓老产品怎么去突围?这也是摆设在腾讯前面的同一道坎儿。答案只有产品年轻化。当然,腾讯内部对此QQ年轻化的战略性路径为出现过不同的龃龉。主要有以下简单栽观点。

所谓的单点突破,就是举行一个功力就如成功极致体验,比如运营商只做语音未开视频,而且语音还做得差。那QQ就来把语音及视频及大半人口之效应做成闭环,有时候女生视频聊天还索要找好角度,对好光线,为何不直接将美颜做到视频上也?也尽管说现在经过QQ视频聊天,QQ自动为你做了美颜(此处应该掌声),也就是脸部皮肤自动为
‘刷过’。另外还连电话铃声、来电动画等个性化体验。单点突破不是只要多,而是使强有力,一个一个的片去突破。

借用Shrek最后的一样词话:向年轻致敬。

见二哪怕是咱们还年轻,导致这种转移的凡时代特征,所谓年轻的原形是从未区分的,都是愿意尝新东西,追求个性之一模一样众人。这是现实性使的视角。

3、产品如果生感情和态度

在活危机感的阐释上,腾讯公开了业界的IM“4年周期定律”,意思就是是天下IM软件在4年吧一个前进周期的共性,也就是说每隔4年IM软件会迎来新的变更还是坏动作,而各个一样涂鸦变的继少年,IM会迎来成遥远和成熟期,这是延长内容以及其它事情的极品切入时间窗,也尽管是所谓的涵养随时的危机感,把握最好的切入机会。

其一:QQ要考虑回归本初,最早用QQ的那拉人,当年特发十几东,现在成长于了,QQ却抓匪停歇,
又失去培训十几寒暑的男女,这是非正常的,我们肯定要是把老用户找回来。观点一致于侧也体现了QQ在劳动存量客户及面世了脱轨问题。