最近在改公司的订单系统,遇到了一个奇怪的问题。C#程序需要从Excel文件中将数据全部读取到DataTable,其中Excel文件的第一列是日期格式yyyy/MM/dd,而这一列中大部分的单元格都是按设定的yyyy/MM/dd来写,有一小部分(大概不到20%)是以yyyy.MM.dd格式来写的。程序读取Excel工作表的步骤没啥好说的,使用的是OleDB,以连接字符串建立Connection后,借助OleDbDataAdapter将数据填充到DataTable,C#代码如下:

        System.Data.DataTable dt;
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Code\\Study\\TestXls.xls;Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon);
try
{
myConn.Open(); System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter("Select * from [Sheet1$]", myConn);
dt = new System.Data.DataTable();
myCommand.Fill(dt);
myConn.Close();
myCommand.Dispose();
}
catch (Exception)
{
dt = null;
}
dataGridView1.DataSource = dt;

问题是,那些以yyyy.MM.dd格式来写的单元格在读过来以后居然成了空的字符串,这令我十分诧异。初步判断是OleDB不能识别点分隔的日期,于是我把所有的日期单元格都写成点格式,居然可以正常读取。神奇了,继续研究。。。经过一番折腾和测试,终于发现Excel在满足以下条件时,将出现我遇到的问题:1.从第一行开始以标准的yyyy/MM/dd格式达到连续8行及以上;2.其后面的行按yyyy.MM.dd格式来写(无论多少行)。

总结:不知为什么,Excel中以yyyy.MM.dd格式填写的日期并不会被强制转换成文本格式,而在导出到DataTable时,以这种格式填写的日期会出现上述的奇怪现象。为了规避这个奇怪问题,如果仍然希望使用yyyy.MM.dd格式,可以让第一行或全部的单元格写成yyyy.MM.dd格式,或直接把整列设成文本格式。

以上是我的个人研究心得,可能实际的情况并非如我测试所得,如高手们有异议,还望不吝赐教!

Excel日期格式单元格写成yyyy.MM.dd格式将无法读取到DataTable的更多相关文章

  1. NPOI读取Excel日期类型单元格返回一串数字问题

    public string getCellStringNEW(int row, int column) { try { ICell cell = xlSheet.GetRow(row).Cells[c ...

  2. 数据库中取出YYYY-mm-dd H:i:s的数据怎么将其转化成YYYY/mm/dd格式,另外,怎么将一个数据表中的数据插入另一个数据表

    sql语句是select  left(replace(rq,'-','/'),10) as rq from 表名 tp5.1中的写法 $res = Db::table('表名') ->field ...

  3. 如何把Excel中的单元格等对象保存成图片

    对于Excel中的很多对象,比如单元格(Cell),图形(shape),图表(chart)等等,有时需要将它们保存成一张图片.就像截图一样. 最近做一个Excel相关的项目,项目中遇到一个很变态的需求 ...

  4. .net读取Excel转datatable、.net读取的Excel存在合并单元格并且转成datatable

    项目中经常会遇到Excel导入数据,Excel的模板会可能是存在合并单元格的,模板如下图所示 读取时需要填充合并单元格的值,转成datatable单元格值时,填充合并单元格的值,如下图所示: 合并单元 ...

  5. 让用户输入一个日期字符串,将其转换成日期格式, 格式是(yyyy/MM/dd,yyyyMMdd,yyyy-MM-dd)中的一种, 任何一种转换成功都可以; 如果所有的都无法转换,输出日期格式非法。

    第三种方法 while(true) {             Date d;        System.out.println("正在进行第一次匹配,请稍后~—~");     ...

  6. [从产品角度学excel 04]-单元格的“衣服”

    忘记发这里了..补发一下 这是<从产品角度学EXCEL>系列——单元格篇. 前言请看: 0 为什么要关注EXCEL的本质 1 excel是怎样运作的 2 EXCEL里的树形结构 3 单元格 ...

  7. Excel阅读模式/单元格行列指示/聚光灯开发 技术要点再分享

    1. 引言 文题中所谓技术要点再分享,本意是想在大神Charltsing Liu的博文“简单介绍Excel单元格行列指示的实现原理(俗称聚光灯功能)”的基础上写一点个人开发体会.写本文的初衷有三点,一 ...

  8. Excel 锁定特定单元格 不允许更改

    1.首先,excel默认所有单元格都是被"锁定"的--当"锁定单元格"按钮被激活时. 因此,第一步,选择所有单元格,设置单元格格式,取消"保护&quo ...

  9. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

随机推荐

  1. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

  2. Android EditText载入HTML内容(内容包括网络图片)

    android中的Html.fromHtml能够用来载入HTML的内容.fromHtml有三个參数须要设置,第一个是要显示的html内容,第二个就是要说的重点,ImageGetter,用来处理图片载入 ...

  3. Codeforces Round #333 (Div. 2) B. Approximating a Constant Range st 二分

    B. Approximating a Constant Range Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...

  4. Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没 ...

  5. as 中的反射 describeType

    describeType函数在adobe官方在线文档上的定义如下:生成描述ActionScript对象(命令为方法的参数)的XML对象,此方法实现ActionScript语言的反射编程概念. 这个方法 ...

  6. c语言字符串_续

    第一篇文章 http://www.cnblogs.com/bluewelkin/p/4063265.html 续篇如下 例一:统计字母的个数(忽略大小写,有空格也可继续统计字母,直到\n结束,但空格未 ...

  7. syntax error: missing ';' before identifier 'IWebBrowser'

    遇到这个错误. google的结果是 去掉 WIN32_LEAN_AND_MEAN 宏定义 然而由于项目中使用了很多第三方库, 如果去掉这个宏, 会导致其他项目编译错了. 关于这个宏有什么用, 可以百 ...

  8. 导入GPUImage,实时滤镜相机,GUPImage遇到的问题解决,_OBJC_METACLASS_$_GBGPUImageView in GBGPUImageView.o

    导入方法转自:http://www.cnblogs.com/S2-huai/p/3881349.html.. (原文:http://www.cnblogs.com/YouXianMing/p/3709 ...

  9. 小白日记35:kali渗透测试之Web渗透-手动漏洞挖掘(一)-默认安装引发的漏洞

    手动漏洞挖掘 即扫描后,如何对发现的漏洞告警进行验证. #默认安装 流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格 ...

  10. Spreadsheet Tracking

     Spreadsheet Tracking  Data in spreadsheets are stored in cells, which are organized in rows (r) and ...