从文本加载特定数据并放入datagridview

时间:2013-06-18 03:59:50

标签: vb.net text datagridview load

我是一名新程序员,我正在尝试创建一个小程序来帮助我完成很多事情。

它看起来如何?

这是文本文件数据的格式:

**;======================= Start**

 (item  (name 256)      (Index 1)   (Image "Wea001")    (Action 1 1) (class
 weapon sword)  (code 1 1 1 1)  (country 2) (level 1)   (wear
 1)                                 (limit Knight 1)    (range 16)  (buy 4) (sell 1)    (endurance
 4)             (specialty  (aspeed 700)                        (Attack 3 10)                   (hit 15)                                                                                                    )                               )

**;======================== end**

我需要导入(名称旁边的数字),(索引旁边的数字)和(图像旁边的名称)。

用户将从打开的文件对话框加载文本文件,3列将显示我要求帮助的3个字段。

有人可以向我展示加载文本文件数据的代码示例到 datagridview 吗?我正在使用 vb.net

1 个答案:

答案 0 :(得分:1)

这是一种使用现有格式的方法。这使用数据表来包含数据然后它被用作datagridview的数据源它搜索正确的行,然后用右括号)拆分行,然后通过空格分割每个部分来提取数据。

Imports System.IO
Public Class Form1
    Dim dt As New DataTable
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim sr As New StreamReader("InitItem.txt")
        Dim DataString As String = ""
        Dim ImageIndex As Integer = 2
        dt.Columns.AddRange({New DataColumn("Name"), New DataColumn("Index"), New DataColumn("Image")})
        While Not sr.EndOfStream
            DataString = sr.ReadLine
            If DataString.Contains("(item") Then
                Dim ParseData() As String = DataString.Split(")"c)
                If (ParseData(ImageIndex).Contains("desc")) Then
                    ImageIndex = 3
                End If
                AddNewRow(ParseData, ImageIndex)
            End If
        End While
        DataGridView1.DataSource = dt
    End Sub
    Private Sub AddNewRow(ParseData() As String, ImageIndex As Integer)
        Dim TempRow As DataRow = dt.NewRow
        TempRow.ItemArray = {ParseData(0).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1), _
                             ParseData(1).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1), _
                             ParseData(ImageIndex).Trim.Split({" "c}, StringSplitOptions.RemoveEmptyEntries)(1).Trim(""""c)}
        dt.Rows.Add(TempRow)
    End Sub
End Class

)分割可确保当我们在按空格分割后提取数据时,该字符串没有)添加到最后。

因为文本文件格式遍布各处,所以我专门针对您请求的数据制作了此代码。如果你想要更通用的东西,如前所述,你应该考虑一个更标准的文件格式。由于似乎没有大量数据,我建议在每一行上使用一个字段/值对。