OLEDB查询以获取除少数特殊列之外的所有列

时间:2017-12-14 09:31:43

标签: excel vb.net oledb

我试图将Excel数据读入数据表对象。但是,excel中的某些列的数据已损坏,具体类型为 DATE

excel:

我使用VB代码用

读取数据
  1. OLEDB连接

    dtData = objExcelReader.ReadWorksheet(strFilePath.ToString, "select * from sheet1$", True)
    
  2. 使用此代码,我得到不合法的OleAut日期'错误。

    1. 使用ExcelReader,

      objExcelReader = New ExcelIO.ExcelReader
      objExcelReader.UseHeaders = True
      objExcelReader.AllowSpacesInColumnName = blnAllowSpacesInColumnName
      objExcelReader.ReadFormatting = True
      objExcelReader.TrimStrings = True
      objExcelReader.ClearColumnDatatypes()    
      objExcelReader.DefaultStartRow = intStartRow
      dtData = objExcelReader.Read(strFilePath.ToString, thisApplication, strInputSheetName)
      
    2. 我得到例外 - ' 超出现有范围。 (HRESULT异常:0x8002000A(DISP_E_OVERFLOW))'

      1. 在查询中使用范围,我能够获取记录。在这种情况下,我需要包含多个范围。

        dtData = objExcelReader.ReadWorksheet(strFilePath.ToString, "select * from sheet1$O:AK", True)
        
      2. 有人可以帮助我在这里包含多个范围,例如 A:K& ○:AK

        或者修复上述任何问题并忽略这些特殊列。

1 个答案:

答案 0 :(得分:0)

  1. 尽量不要将包含日期的列放在表的第一列中。
  2. 以这种方式对数据进行排序 数据列在第一行中具有数据(具有适当的数据格式)。
  3. 在此处查看有关损坏数据格式的更多信息: https://dutchgemini.wordpress.com/2011/04/21/two-serious-flaws-with-excels-copyfromrecordset-method/
  4. 查看我如何克服开放记录集中的损坏格式。 https://stackoverflow.com/a/33807584/1903793