格式化文本文件,以便我可以将其导入excel

时间:2013-10-16 11:55:17

标签: arrays vb.net excel batch-file text

我有一个巨大的地址和详细信息列表,我需要转换成Excel电子表格,我认为最好的方法是读取数据,然后编写第二个文档,分隔行,以便它们以制表符分隔,同时识别空行(数据条目之间)以保留每个单独的地址。

格式为:

  

AddressA1
  AddressB1
  Postcode1
  名1
  PhoneNumber1

     

AddressA2
  AddressB2
  Postcode2
  名称2
  名称2
  PhoneNumber2

     

AddressA3
  AddressB3
  Postcode3
  NAME3
  PhoneNumber3

因此,当公司有多个名称时,也会遇到困难,但如果有必要,我可以手工格式化(理想情况下,他们希望彼此使用相同的地址)。

然后,生成的文本文档希望以制表符分隔: 姓名|地址A |地址B |邮政编码|电话号码

我认为这在一个简单的.bat命令中最容易做到?或者我应该在excel中打开列表并通过该脚本运行脚本..?

我在想我是否可以通过它将每个条目添加到数组的位置($ address $ name等)然后我可以通过编写$name[i] tab <来创建新的文本文件/ em> $address[$i]

有数百个条目并且手动放入是证明......很难。

我在MEL(基本上是C ++)方面有一些经验,所以我一般都理解编程,但在.bat和Excel(VB?)如何处理和定义空行和制表符方面有些不知所措。

3 个答案:

答案 0 :(得分:0)

第一步是将数据导入Excel文件。导入数据后,我们可以重新打包以满足您的规格要求。第一步:

Sub BringFileIn()
    Dim TextLine As String, CH As String
    Close #1
    Open "C:\TestFolder\question.txt" For Input As #1
    Dim s As String
    Dim I As Long, J As Long
    J = 1
    I = 1
    Do While Not EOF(1)
        Line Input #1, TextLine
        Cells(I, J) = TextLine
        I = I + 1
    Loop
    Close #1
End Sub

答案 1 :(得分:0)

任何可以进行正则表达式搜索和跨多行替换的文本编辑器都可以很好地完成这项工作。

我编写了一个hybrid JScript/batch utility called REPL.BAT执行正则表达式搜索并替换stdin并将结果写入stdout。它是纯粹的脚本,可以在XP前面的任何现代Windows机器上运行 - 不需要第三方可执行文件。完整的文档嵌入在脚本中。

假设REPL.BAT位于您当前的目录中,或者更好,位于PATH中的某个位置,那么:

type file.txt|repl "\r?\n" "\t" mx|repl "\t\t" "\n" x|repl "^(([^\t]*\t){4})([^\t]*)$" "$1\t$3" x >newFile.txt

以上修改了3个步骤的文件,并将结果写入新文件,保留原文:

  • 将所有换行转换为标签
  • 将连续标签转换为换行符
  • 在包含仅5列的任何行的最后一列之前插入一个空列(制表符)。

答案 2 :(得分:0)

这是一种仅使用Word和Excel的方法。我使用了您发布的数据。我假设Name2是唯一的可选字段。

  • 将文字粘贴到Word中。
  • 用特殊标记替换所有段落标记 字符。 (Ctrl-h,搜索^ p,替换为|)
  • 用不同的特殊字符替换所有换行符。 (Ctrl-h,特殊字符,搜索手动换行符,替换为;)

这就是Word中的样子:

AddressA1;AddressB1;Postcode1;Name1;PhoneNumber1|AddressA2;AddressB2;Postcode2;Name2;Name2;PhoneNumber2|AddressA3;AddressB3;Postcode3;Name3;PhoneNumber3||

然后将文本转换为表格(插入 - &gt;表格 - &gt;将文本转换为表格),分隔符;这给出了3列(加上2个空白行)的1列。

然后复制表格。

现在在Excel中:

  • 粘贴表格。 (每行中都有一行,所有字段都在A列中。)
  • 将文本转换为列(数据选项卡,文本到列,分隔,检查分号)
  • 按列E排序。电话号码应分组在一起。
  • 剪切E栏中的电话号码并复制到F列。