vb.net - excel oledb 字段在 255 处截断

标签 vb.net excel oledb

我正在使用以下代码读取一个 excel 文件:

Function Read_Excel(ByVal sFile As String) As ADODB.Recordset
    On Error GoTo fix_err
    Dim rs As ADODB.Recordset
    rs = New ADODB.Recordset
    Dim sconn As String

    rs.CursorLocation = ADODB.CursorLocationEnum.adUseServer 
    rs.CursorType = ADODB.CursorTypeEnum.adOpenStatic 
    rs.LockType = ADODB.LockTypeEnum.adLockReadOnly 
    sconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFile & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"";"
    rs.Open("SELECT CStr([RPOCode]), Description FROM [sheet1$]", sconn)
    tot += rs.RecordCount
    rs.Close()
    rs.Open("SELECT Distinct RPOCode, Description FROM [sheet1$] ORDER BY RPOCode", sconn)
    Read_Excel = rs
    rs = Nothing
    Exit Function
fix_err:
    Debug.Print(Err.Description + " " + _
                Err.Source, vbCritical, "Import")
    Err.Clear()
End Function

超过 255 个字符的单元格被截断,我不确定是否有办法轻松阻止它?

更新:截断似乎只有在我选择 Distinct 时才会发生。如果我关闭 Distinct,它会显示完整的单元格。

最佳答案

如果您使用 Jet 驱动程序将备注类型字段(列)更改为文本类型字段,则会截断它们。可以使用子查询来获取不同的记录并避免 Distinct。

此引用适用于 Access,但它仍然是 Jet,因此几乎所有内容都适用:Truncation of Memo fields

关于vb.net - excel oledb 字段在 255 处截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971519/

相关文章:

asp.net - 如何更改 ASP.NET 中的下拉列表值 (VB)

c# - 使用 C# 从 Excel 单元格中检索数据

java - 比较2个excel文件的内容

excel - 消失的 Excel 按钮

odbc - 访问 2013 链接表到 DBF 文件

excel - 将 xls 读取为数据库时确定 Excel 文件的第一个工作表名称

c# - 如何使用 C# 连接到 MS Access 文件 (mdb)?

c# - 通过 Tab 键浏览 XML 文档字段

.net - 构造函数链和空引用测试

C# - 关闭对话框后保存最后选择的文件名