如何格式化写入文本文件的文本

时间:2017-01-25 09:14:54

标签: vb.net

我编写了一个代码,用于为文本文件生成收据。目前收据未格式化。它看起来像这样:

Order Form

GTIN     NAME        QUANTITY
11111115 , plain bracket , 12
22222220 , wheelbarrow , 238

我想让代码采用与此类似的简洁格式:

Order Form

GTIN         NAME               QUANTITY
11111115     plain bracket      12
22222220     wheelbarrow        238

Visual Basic中是否有一个函数可以格式化我如何将文本写入文件?我已经使用StringBuilder将文本(来自ListBox - 导致它是当前格式)附加到文本文件中,尽管我不知道是否使用StringBuilder而不是StreamWriter我将如何格式化它将会有所作为。

我正在使用的代码:

Dim CreateReceipt As New System.Text.StringBuilder()
CreateReceipt.Append("Order Form")
CreateReceipt.Append(Environment.NewLine + Environment.NewLine)
CreateReceipt.Append("GTIN" + "       " + "NAME" + "            " + "QUANTITY")
CreateReceipt.Append(Environment.NewLine)
For Each o As Object In lstOrderForm.Items
    CreateReceipt.AppendLine(o)
Next

System.IO.File.WriteAllText("order_receipt.txt", CreateReceipt.ToString())

Process.Start("order_receipt.txt")

2 个答案:

答案 0 :(得分:1)

尝试使用.PadRight。它将用空格填充你的字符串。

示例:

Dim x AS Integer = 0
Dim foo As String = x.ToString().PadRight(15)
'foo = "0              "

答案 1 :(得分:0)

这假设您的ListView看起来像这样:

enter image description here

我的设置为3 Columns和3 Items。每个Item都有2 SubItems。这可能与你的不同,但应该给你一些想法。

我将使用String.PadRight方法均匀分布列和文本。我使用 15 来填充,但是您确实需要确定最长的字符串,以确保正确均匀地填充。

Dim sb As New StringBuilder
sb.AppendLine("Order Form" & vbCrLf)
sb.AppendLine("GTIN".PadRight(15) & "NAME".PadRight(15) & "QUANTITY".PadRight(15))

For Each lvi As ListViewItem In ListView1.Items
    sb.AppendLine(lvi.SubItems(0).Text.PadRight(15) & lvi.SubItems(1).Text.PadRight(15) & lvi.SubItems(2).Text.PadRight(15))
Next

System.IO.File.WriteAllText("order_receipt.txt", sb.ToString())

Process.Start("order_receipt.txt")

这是输出的屏幕截图:

enter image description here

这是填充错误的一个例子。在这里,我使用 10 来填充:

enter image description here