You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FileHelpers将固定长度文本文件读取到DataTable中?

用FileHelpers将固定长度TXT读取到DataTable的方法

要把FileHelpers读取到的实体列表转成DataTable,有两种实用方法:

方法一:使用FileHelpers内置的DataTableConverter(最简方案)

FileHelpers自带DataTableConverter类,能直接将读取到的实体数组转成DataTable,无需手动处理列和行。

完整代码示例

Imports FileHelpers
Imports FileHelpers.DataLink

<FixedLengthRecord(FixedMode.AllowMoreChars)>
Public Class Customer
    <FieldFixedLength(2)>
    Public CustId As String

    <FieldFixedLength(34)>
    Public Name As String

    <FieldFixedLength(70)>
    Public ID As String
End Class

Sub Main()
    ' 读取固定长度TXT到Customer数组
    Dim engine = New FixedFileEngine(Of Customer)()
    Dim customerList As Customer() = engine.ReadFile(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.txt")

    ' 使用转换器转成DataTable
    Dim converter As New DataTableConverter(engine)
    Dim dt As DataTable = converter.ToDataTable(customerList)

    ' 此时dt就是填充好的DataTable,可直接使用
End Sub

方法二:手动创建DataTable并填充(自定义性更强)

如果需要对DataTable的列名、数据类型做自定义调整,或者处理特殊字段,可以手动构建DataTable并逐行填充:

完整代码示例

Imports FileHelpers

<FixedLengthRecord(FixedMode.AllowMoreChars)>
Public Class Customer
    <FieldFixedLength(2)>
    Public CustId As String

    <FieldFixedLength(34)>
    Public Name As String

    <FieldFixedLength(70)>
    Public ID As String
End Class

Sub Main()
    ' 读取固定长度TXT到Customer数组
    Dim engine = New FixedFileEngine(Of Customer)()
    Dim customerList As Customer() = engine.ReadFile(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.txt")

    ' 创建DataTable并定义列
    Dim dt As New DataTable()
    dt.Columns.Add("CustId", GetType(String))
    dt.Columns.Add("Name", GetType(String))
    dt.Columns.Add("ID", GetType(String))

    ' 遍历Customer列表,填充DataTable行
    For Each cust As Customer In customerList
        Dim row As DataRow = dt.NewRow()
        row("CustId") = cust.CustId
        row("Name") = cust.Name.Trim() ' 可选:去除固定长度字段的多余空格
        row("ID") = cust.ID
        dt.Rows.Add(row)
    Next

    ' 此时dt就是填充好的DataTable
End Sub

注意事项

  • 方法一中的DataTableConverter会自动根据实体类字段生成对应列,列名与字段名一致,数据类型匹配实体字段。
  • 方法二中可灵活处理字段,比如对固定长度字符串做去空格处理、修改列名或调整数据类型。

内容的提问来源于stack exchange,提问作者user21251281

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:46:14