TXT 文件到 Excel 列

TXT file to Excel columns

我有一个包含 1031 家公司信息的 txt 文件。我需要用 header 名称 NAME- Address-CONTACT-TEL-FAX-MOB-WEB-EMAIL 将它们放入 Excel table。由于有1031家公司,我不想一一列举。在 Excel table 中获取它们的最简单方法是什么?

"Company Name"
"Address ; XXXXXXXXX"
"Contact ; XYXYXYXYX"   
"Tel ; 1234567"
"Fax ; 123456"  
"Mob ; 12345555"
"Web ;www.www.com"  
"E-Mail ;xxxx@xx.com"

我建议您执行以下步骤(前提是每个块的行数都相同)。

添加一列数字:

+----+----------+---------------------------------------+
|    |    A     |                   B                   |
+----+----------+---------------------------------------+
|  1 | Column B | Column B                              |
|  2 | 1        | ompany Name                           |
|  3 | 2        |                                       |
|  4 | 3        | Address : XXXXXXXXX                   |
|  5 | 4        | Contact : XYXYXYXYX Tel : 1234567     |
|  6 | 5        | Fax : 123456 Mob : 12345555           |
|  7 | 6        | Web :www.www.com  E-Mail :xxxx@xx.com |
|  8 |          |                                       |
|  9 |          |                                       |
| 10 | 1        | Company Name                          |
| 11 | 2        |                                       |
| 12 | 3        | Address : XXXXXXXXX                   |
| 13 | 4        | Contact : XYXYXYXYX Tel : 1234567     |
| 14 | 5        | Fax : 123456 Mob : 12345555           |
| 15 | 6        | Web :www.www.com  E-Mail :xxxx@xx.com |
| 16 |          |                                       |
| 17 | 1        | Company Name                          |
| 18 | 2        |                                       |
| 19 | 3        | Address : XXXXXXXXX                   |
| 20 | 4        | Contact : XYXYXYXYX Tel : 1234567     |
| 21 | 5        | Fax : 123456 Mob : 12345555           |
| 22 | 6        | Web :www.www.com E-Mail :xxxx@xx.com  |
| 23 |          |                                       |
| 24 |          | .                                     |
| 25 |          | .                                     |
| 26 |          | .                                     |
| 27 |          | .                                     |
| 28 | 1        | Company Name                          |
| 29 | 2        |                                       |
| 30 | 3        | Address : XXXXXXXXX                   |
| 31 | 4        | Contact : XYXYXYXYX Tel : 1234567     |
| 32 | 5        | Fax : 123456 Mob : 12345555           |
| 33 | 6        | Web :www.www.com E-Mail :xxxx@xx.com  |
+----+----------+---------------------------------------+

考虑到最好的方法是对第一个块(单元格 A2:A7)进行编号,然后复制 A2:A7 并在 B 列中过滤包含公司名称的单元格(或不包含公司名称的单元格) "Adress"、"Contact"、传真”或“网络”)。粘贴到 A 列中,您将对所有行进行编号。

现在你转置矩阵过滤行 ID 1、2、3,......你会发现这个

+---+--------------+---------------------+-----------------------------------+--------------+----------------+------------------+---------------------+
|   |      A       |          B          |                 C                 |      D       |       E        |        F         |          G          |
+---+--------------+---------------------+-----------------------------------+--------------+----------------+------------------+---------------------+
| 1 | ompany Name  | Address : XXXXXXXXX | Contact : XYXYXYXYX Tel : 1234567 | Fax : 123456 | Mob : 12345555 | Web :www.www.com | E-Mail :xxxx@xx.com |
| 2 | Company Name | Address : XXXXXXXXX | Contact : XYXYXYXYX Tel : 1234567 | Fax : 123456 | Mob : 12345555 | Web :www.www.com | E-Mail :xxxx@xx.com |
| 3 | Company Name | Address : XXXXXXXXX | Contact : XYXYXYXYX Tel : 1234567 | Fax : 123456 | Mob : 12345555 | Web :www.www.com | E-Mail :xxxx@xx.com |
| 4 | Company Name | Address : XXXXXXXXX | Contact : XYXYXYXYX Tel : 1234567 | Fax : 123456 | Mob : 12345555 | Web :www.www.com | E-Mail :xxxx@xx.com |
+---+--------------+---------------------+-----------------------------------+--------------+----------------+------------------+---------------------+

简介

In this answer I will explain how to transphorm your data into a CSV
Each line of the file is a data record. Each record consists of one or more fields, separated by semi colon as comma is often use as decimal separator.

因此最后的信息将如下所示:

Company Name;XXXXXXXXX;XYXYXYXYX;1234567;123456;12345555;;xxxx@xx.com
Company Name;XXXXXXXXX;XYXYXYXYX;1234567;123456;12345555;www.www.com;xxxx@xx.com
Company Name;XXXXXXXXX;XYXYXYXYX;1234567;123456;12345555;www.www.com;xxxx@xx.com

"Company Name"; "XXXXXXXXX"; "XYXYXYXYX"; "1234567"; "123456"; "12345555"; ""; "xxxx@xx.com"
"Company Name"; "XXXXXXXXX"; "XYXYXYXYX"; "1234567"; "123456"; "12345555"; "www.www.com"; "xxxx@xx.com"
"Company Name"; "XXXXXXXXX"; "XYXYXYXYX"; "1234567"; "123456"; "12345555"; "www.www.com"; "xxxx@xx.com"

使用“”封装文本是您的选择,具体取决于您的数据。因为 Csv 规则说:

1/. Fields with embedded commas or double-quote characters must be quoted. 1997,Ford,E350,"Super, luxurious truck"
2/. Each of the embedded double-quote characters must be represented by a pair of double-quote characters.
1997,Ford,E350,"Super, ""luxurious"" truck"
3/. Fields with embedded line breaks must be quoted (however, many CSV implementations do not support embedded line breaks).
1997,Ford,E350,"Go get one now they are going fast"

如何知道我是否需要封装一个字段?

使用编辑器的计数功能,计数 " ,; 检查回车符 return 也可能是一件好事。如果有none,则不需要封装ᕕ(ᐛ)ᕗ

格式化过程

我会选择封装所有 Field,这样我就不必为 Stupid Data 而烦恼了。我们将在这里用 ; 替换每个 "header" 的原始数据。 要将一家公司的所有信息都放在一行中,您可以使用鼠标 select header 和换行。

1。重新格式化文本:

  • 复制你的文件并处理副本,这样你就有了备份。
  • 用 Notepad++/ SublimeText 打开你的文件

  • 将 : \r\nAddress : 的每次迭代替换为 "; ";
    对您的每个 Header 执行相同的操作文件。

    the \r\n is because you have a line feed between company name and adress. And you want every information to be on one line.

  • 在每行的开头和结尾添加一个"

2。在 Excel.

中导入
  • 复制数据到Excel
  • 在“数据”选项卡 > 转换

选择:

  • 分隔 > 下一个
  • 分隔符 = ; 文本指示符 = "
  • Select 你所有的栏目一一转成文本!(你不希望 phone 数字失去前导 0)
  • 完成
  • 添加你的header

如果另存为 .csv,所有第 2 部分都将毫无用处。我只是想向您展示 Convert Assistant。以及如何正确处理其中包含 ;' 的地址以及当您拥有 Fax :Mob : 12345555 等数据时。如果你有奇怪的数据,你可以添加转义。

免责声明:
始终在副本上工作,通过计数 "; 和其他定界符 Excel 开始所有这些操作可能会错过理解。逃离他们。
顺便说一句,这是比 SO 更多的超级用户。

奖金:

如果您熟悉一种编程语言,请使用他在 String remplace 中的构建在 1 秒内格式化您的文档。 像这样:

        static void CSVformat() {
            string Input = 
@"Company Name

Address : XXXXXXXXX
Contact : XYXYXYXYX Tel : 1234567
Fax : 123456    Mob : 12345555
Web :www.www.com    E-Mail :xxxx@xx.com


Company Name

Address : XXXXXXXXX
Contact : XYXYXYXYX Tel : 1234567
Fax : 123456    Mob : 12345555
Web :www.www.com    E-Mail :xxxx@xx.com

Company Name

Address : XXXXXXXXX
Contact : XYXYXYXYX Tel : 1234567
Fax : 123456    Mob : 12345555
Web :www.www.com    E-Mail :xxxx@xx.com";
            var dd= clean(Input);            
        }

        static string clean(string s)
        {
            StringBuilder sb = new StringBuilder(s);

            sb.Replace(
@"

Address : ", "\"; \"");
            sb.Replace(
@"
Contact : ", "\"; \"");
            sb.Replace(
@"
Fax : ", "\"; \"");
            sb.Replace(
@"
Web :", "\"; \"");

            sb.Replace(" Tel : ", "\"; \"");
            sb.Replace("    Mob : ", "\"; \"");
            sb.Replace("    E-Mail :", "\"; \"");
            sb.Replace("\r\n\r\n\r\n", "\r\n");
            sb.Replace("\r\n\r\n", "\r\n");
            sb.Replace("\r\n", "\"\r\n\"");

            return '"'+sb.ToString()+'"';
        }