Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel通过DataGridView访问导入,不显示所有日期_Excel_Vb.net_Date_Datagridview_Import - Fatal编程技术网

Excel通过DataGridView访问导入,不显示所有日期

Excel通过DataGridView访问导入,不显示所有日期,excel,vb.net,date,datagridview,import,Excel,Vb.net,Date,Datagridview,Import,我已经在我的应用程序中编写了一个Excel来访问导入过程。我用来导入的Excel电子表格都是我使用我编写的导出过程创建的文件 在DataGridView中查看数据时,有一列显示日期,即在其中3行上显示NULL值。这三行的日期相同-2017年2月15日 起初我认为这是因为电子表格中的日期是空的,但事实并非如此 在Excel中进行了一些调查之后,我注意到列中的所有其他日期都设置为“日期”类型,但这3个有问题日期的单元格都设置为“常规” 但是,在我的导出程序中,我使用此代码将此列中的单元格设置为日期,

我已经在我的应用程序中编写了一个Excel来访问导入过程。我用来导入的Excel电子表格都是我使用我编写的导出过程创建的文件

DataGridView
中查看数据时,有一列显示日期,即在其中3行上显示
NULL
值。这三行的日期相同-2017年2月15日

起初我认为这是因为电子表格中的日期是空的,但事实并非如此

在Excel中进行了一些调查之后,我注意到列中的所有其他日期都设置为“日期”类型,但这3个有问题日期的单元格都设置为“常规”

但是,在我的导出程序中,我使用此代码将此列中的单元格设置为日期,格式为dd/MM/yyyy

Dim formatRange As Excel.Range

formatRange = xlWorksheet.Range("C1", "C9999")
formatRange.NumberFormat = "dd/MM/yyyy"

formatRange = xlWorksheet.Range("D1", "D9999")
formatRange.NumberFormat = "dd/MM/yyyy"
然后,作为一个实验,我将问题单元格的类型更改为“Date”,并再次尝试导入-但它仍然显示
NULL
单元格

所以,我想我有两个问题,真的

  • 为什么导出不首先将这些单元格设置为dd/MM/yyyy日期?这与价值观有关吗
  • 那么,为什么在Excel中将类型更改为“日期”后,仍显示为
    NULL

这是一个常见的问题,还是我做错了什么?

答案正如@TnTinMn所指出的


扩展属性
设置为
扩展属性='Excel 12.0;IMEX=1;'显示问题日期,由于某种原因,这些日期显示为字符串。不清楚原因,因为格式与其他格式相同,但不匹配的数据类型问题是通过使用此小更改解决的。

将Excel单元格格式设置为
日期
类型毫无意义,因为您仍然可以键入所需的任何内容。由于没有代码可供参考,我将仔细研究excel中出现错误日期的可能性。dd/MM/yyyy可能与MM/dd/yyy混淆。只是猜测。@ Jung我确实考虑过它是否会使它与MM/DD/YYYY混淆,但是它旁边的列显示14/03/2017完美,所以那种理论认为你把格式化完全关闭了吗?这应该显示字符串,如果它为null,那么它很可能与日期无关。事实上,您得到的是null值,这让我相信您将Excel文件视为Jet数据库,并对其运行查询。这是正确的吗?理想情况下,日期应视为数字。但当输入的日期格式与Excel预期的格式不匹配时,Excel通常将用户输入作为字符串值;Excel所需的格式与应用于范围的格式无关。这就是为什么人们通常以字符串形式检索所有Excel数据,然后在进一步处理之前应用验证/类型转换。@JohnG,好的,即使在Excel中将类型设置为“常规”,DataGridVew
仍不会显示它们。你能想到其他可能的事吗?