【问题标题】:OLEDB query to fetch all column except few exceptional columnsOLEDB 查询以获取除少数异常列之外的所有列
【发布时间】:2017-12-14 19:20:24
【问题描述】:

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

我正在使用 VB 代码读取数据

  1. OLEDB 连接

    dtData = objExcelReader.ReadWorksheet(strFilePath.ToString, "select * from sheet1$", True)
    

使用此代码,我收到“Not a legal OleAut date”错误。

  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)
    

我得到异常 - '超出当前范围。 (来自 HRESULT 的异常:0x8002000A (DISP_E_OVERFLOW))'

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

    dtData = objExcelReader.ReadWorksheet(strFilePath.ToString, "select * from sheet1$O:AK", True)
    

有人可以帮我在此处包含多个范围,例如 A:K 和 O:AK

或修复上述任何问题并忽略那些异常列。

【问题讨论】:

    标签: excel vb.net oledb


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多