Как отформатировать значения текстовых файлов, извлеченные из каталога и отображенные в datagridview в vb.net - PullRequest
0 голосов
/ 27 июня 2019

Теперь проблема в том, как мне отформатировать значения, отображаемые в виде сетки данных из текстовых файлов.

Я извлек значения из циклического перебора текстовых файлов и удалил первые две строки. Теперь я хочу добавить разделители или изменить формат отображаемого значения, например:

textfile lines:          result:

01Sample     - line1      
022          - line2     
0306212019   - line3     06/21/2019
041234567890 - line4     12,345,678.90

Я уже пробовал этот способ, изменяя стиль по умолчанию, но поскольку значения взяты из текстовых файлов в каталоге, это не влияет на вывод

DataGridView1.Columns("Gross Sales").DefaultCellStyle.Format = "##,0"
Private Sub ReadTextFiles()
    Dim dt As New DataTable
    dt.Columns.Add("Date")
    dt.Columns.Add("Gross Sales")

    Dim Folder As New IO.DirectoryInfo("c:\test\")
    Dim lstLines As New List(Of String)


    For Each fileentries As String In Folder.GetFiles("s*",   IO.SearchOption.AllDirectories).OrderByDescending(Function(x) x.Name).Select(Function(x) x.FullName)
        lstLines.AddRange(File.ReadAllLines(fileentries))
    Next


    Dim i As Integer
    Dim OuterLoopIterations As Integer = CInt(lstLines.Count / 22)
    For iterations = 0 To OuterLoopIterations - 1
        Dim row = dt.NewRow
        For col = 0 To 21
            row(col) = lstLines(i).Remove(0, 2) 'i have removed the first 2 characters of each string

                i += 1
        Next
        dt.Rows.Add(row(2), row(5), row(12), row(13), row(14), row(15),  row(7), row(8), row(11))

    Next

    DataGridView1.DataSource = dt
    'the code i tried applying
    DataGridView1.Columns("Gross Sales").DefaultCellStyle.Format = "##,0"

это мой ожидаемый результат

Текущее представление таблицы данных: enter image description here

результат должен быть для столбца даты: 06/07/2019 для брутто: 48 990,14

Edit:

Я попробовал это

Dim B As Double

Dim Folder As New IO.DirectoryInfo("c:\test\")
Dim lstLines As New List(Of String)


For Each fileentries As String In Folder.GetFiles("s*", IO.SearchOption.AllDirectories).OrderByDescending(Function(x) x.Name).Select(Function(x) x.FullName)

    B = CDbl(Val(fileentries))
    lstLines.AddRange(File.ReadAllLines(B))
Next

1 Ответ

0 голосов
/ 27 июня 2019

Если вы хотите отформатировать что-либо как число, тогда это должно быть число. Это означает, что, например, если вы прочитали текст «1234.5» из файла и хотите отобразить его как 1234.50 в своей сетке, вам придется преобразовать String, который вы прочитали, в Double или Decimal. Если вы сделаете это, то числовой спецификатор формата, который вы используете в столбце сетки, будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...