2010-06-01 15:55:17| 日常工作中,因为并不是所有的系统都支持导出excel格式数据,为了方便计算或统计,有时会需要将表格格式,即以制表符做边框的文本文件导入excel中。Excel提供了利用分隔符分列和手工分列的工具。对于以某一种符号分隔的文本文件,可以很容易的判断并分列导入成格式规范的格式,但对于上述制表符做边框的文本文件的格式转换则需要手工调整。通过编写程序可以实现上述类型文件的自动分列和转换,但在不会编程的情况下该如何解决?下面提供几种转换方式,供讨论:
假设我们需要将带边框的文本文件转换为excel格式,文件名为1.txt。 1、仍然使用“导入外部数据”中选择分隔符的方法。区别是以粘贴复制的文本文件中的“|”代替直接输入“|”。如果直接在“导入向导”对话框“分隔符号”中用shift+“|”输入“|”,excel是无法找到的,因为文本中其格式为“ | ”,即“|”实际上占用了一个汉字的位置,为英文状态下2个字节,这种格式在手工输入分隔符号时是无法输入的。解决方法是在文本文件中复制“ | ”,然后在对话框里以“ctrl+v”快捷键粘贴(注意,不支持鼠标左键粘贴)。这样excel就会将“|”作为分列符号,规范的将文本文件分列导入。 无论那种导入方式,表头都会被分割到几列里面,但手工将其调整即可 2、文本替换法,即先将文本文件中的制表符通过“替换”功能替换为空或空格或其他字符,然后再导入。 先打开1.txt,首先复制表格的上边框,点击“编辑”->“替换”,在对话框中“查找内容”位置以右键或“ctrl+v”粘贴,“替换为”框中不输,即替换为空值,确认。 依次复制下边框和其他格式制表符,最后保存或另存。在excel中导入新格式文件,选择手工分列或以你替换的符号为分列符,分列即可。 3、手工分列和excel中替换 在空excel表中执行导入外部数据命令,数据源选择1.txt,确认,出现导入向导对话框,选择“固定宽度”->“下一步”,excel会自动给出分列线,但这种情况下都不在想要的位置上,需要手工调整,双击取消分列线,在竖边框位置单击建立新的分列线,“下一步”到最后确认。 这样分出的列中,单元格内容包含了制表符,需要使用“替换”功能去掉。方法和2差不多,先在单元格里复制制表符,再在“替换”对话框中以“ctrl+v”粘贴(不支持右键粘贴),替换为空值,确认。 4、手工分列 这是最简单的方法。 前段操作同3。分列时要注意将手工分列线放在竖边框两侧,也就是将竖边框单独分一列。这样导入之后竖边框会被分割在单独一列中,将其删除即可。 几个特殊的问题处理: 1、方法1中只能选择一种分隔符,如果有框线为加粗的“|”,需要在导入后用方法3的操作去掉。 2、如果是导入的某列中全部为账号,注意将其选为文本格式,否则全部以科学计数法显示。 3、如果是导入的某列中全部为账号,而且带了制表符,如: “000000666003800001234 |”,因为账号的有效数字超过了11位,此时如果使用“替换”命令,excel会自动将替换后的结果以科学计数法显示。此时我们可以使用函数和辅助列的方法。 假设a1为上述账号,步骤: (1) 任选一空列,或插入一空列,假设在a列右侧插入一列则为b列。 (2) 在b1中输入以下公式:“=left(a1,len(a1)-1)”,意思为:从a1字符串的左侧取长度为字符串总长度减去1的文本。这样仍然会以文本的方式显示账号。如果制表符在账号右侧,则使用right()。 (3) 选中b1,“复制”,在原位置粘贴,选“选择性粘贴”->“数值”->“确认”,然后删除a1。整列操作同。 Left()为左取函数,right()为右取函数,len()为字符串长度函数,具体见excel帮助或有关书籍。 4、 横框的处理。横的边框会被分在同一行里,对我们来说是没用的,需要删除。最简单的方法是使用加辅助列后排序功能。 步骤:(1)插入或选一空列,如a列。A1=1,a2=2,然后填充至最后 (2)选导入内容的任一单元格,排序,把排到一起的制表符行删除 (3)选a列任一单元格,按升序排列,恢复原来顺序 |
|