杰瑞科技汇

Python如何将txt文件写入Excel?

使用 pandas 库(最推荐)

pandas 是 Python 数据分析的利器,它提供了非常简洁和强大的接口来处理表格数据,是完成此任务的首选方法。

Python如何将txt文件写入Excel?-图1
(图片来源网络,侵删)

安装 pandas 和 openpyxl

如果你的环境中还没有安装,请先安装它们。openpyxlpandas 写入 .xlsx 文件时需要的引擎。

pip install pandas openpyxl

准备一个 TXT 文件

假设我们有一个名为 data.txt 的文件,内容如下:

data.txt

姓名,年龄,城市
张三,25,北京
李四,30,上海
王五,28,广州
赵六,22,深圳

注意:TXT 文件中的数据是用逗号、制表符(\t)或其他符号分隔的。pandas 默认会自动识别常见的分隔符。

Python如何将txt文件写入Excel?-图2
(图片来源网络,侵删)

编写 Python 代码

import pandas as pd
# --- 步骤 1:读取 TXT 文件 ---
# 使用 pandas 的 read_csv 函数来读取 TXT 文件。
# sep=',' 指定了分隔符是逗号,如果你的文件是用制表符分隔,则使用 sep='\t'
# header=0 表示第一行是列名
try:
    df = pd.read_csv('data.txt', sep=',', header=0)
    # --- 步骤 2:写入 Excel 文件 ---
    # 使用 to_excel 函数将 DataFrame 写入 Excel 文件。
    # 'output.xlsx' 是输出的文件名。
    # index=False 表示不将 DataFrame 的行索引(0, 1, 2...)写入 Excel。
    df.to_excel('output.xlsx', index=False, engine='openpyxl')
    print("TXT 文件已成功写入 Excel 文件:output.xlsx")
except FileNotFoundError:
    print("错误:找不到 'data.txt' 文件,请检查文件名和路径是否正确。")
except Exception as e:
    print(f"发生错误: {e}")

代码解释:

  1. pd.read_csv('data.txt', ...): 虽然 read_csv 的名字是“读取CSV”,但它非常通用,可以读取任何有固定分隔符的文本文件。
  2. sep=',': 告诉 pandas 用逗号来分割每一列,如果你的文件是 tab 分隔的,请改为 sep='\t'
  3. header=0: 指定第一行作为列的标题。
  4. df.to_excel(...): 这是核心的写入函数。
  5. 'output.xlsx': 你想要生成的 Excel 文件名。
  6. index=False: 非常重要!这可以防止 pandas 在 Excel 的第一列添加一个无意义的 0, 1, 2... 序列,通常我们不希望这个索引列存在。

使用 openpyxl 库(更底层,更灵活)

openpyxl 是一个专门用于读写 .xlsx 文件的库,如果你想对 Excel 文件进行更精细的控制(比如设置单元格样式、合并单元格等),openpyxl 是一个很好的选择。

安装 openpyxl

pip install openpyxl

编写 Python 代码

from openpyxl import Workbook
import csv
# --- 步骤 1:创建一个新的 Excel 工作簿 ---
wb = Workbook()
# 默认会创建一个名为 'Sheet' 的工作表,我们获取它
ws = wb.active= "Sheet1" # 可选:重命名工作表
# --- 步骤 2:读取 TXT 文件并逐行写入 Excel ---
# 使用 Python 内置的 csv 模块来读取 TXT 文件
try:
    with open('data.txt', mode='r', encoding='utf-8') as file:
        # csv.reader 会自动处理逗号分隔
        csv_reader = csv.reader(file)
        # 将 CSV 中的每一行数据写入 Excel 工作表的每一行
        for row in csv_reader:
            ws.append(row) # ws.append() 方法会自动将列表添加到下一行
    # --- 步骤 3:保存 Excel 文件 ---
    wb.save('output_openpyxl.xlsx')
    print("TXT 文件已成功写入 Excel 文件:output_openpyxl.xlsx")
except FileNotFoundError:
    print("错误:找不到 'data.txt' 文件,请检查文件名和路径是否正确。")
except Exception as e:
    print(f"发生错误: {e}")

代码解释:

  1. Workbook(): 创建一个新的、空的 Excel 工作簿。
  2. wb.active: 获取当前活动的工作表。
  3. csv.reader(file): csv 模块可以方便地逐行读取 CSV/TXT 文件,并处理引号和转义字符。
  4. ws.append(row): openpyxlWorksheet 对象的 append 方法可以将一个列表(代表一行数据)添加到工作表的末尾。

使用 xlwtxlrd 库(旧版 .xls 格式)

xlwt 用于写入 .xls 格式(Excel 97-2003),xlrd 用于读取。.xls 格式现在已不常用,但如果你需要兼容非常古老的软件,可能会用到它。

Python如何将txt文件写入Excel?-图3
(图片来源网络,侵删)

安装

pip install xlwt xlrd

编写 Python 代码

import xlwt
# --- 步骤 1:创建工作簿和工作表 ---
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
# --- 步骤 2:读取 TXT 文件并逐行写入 Excel ---
try:
    with open('data.txt', mode='r', encoding='utf-8') as file:
        lines = file.readlines()
        for i, line in enumerate(lines):
            # 去除行尾的换行符 \n
            row_data = line.strip().split(',')
            for j, value in enumerate(row_data):
                # xlwt 的单元格写入需要指定行和列的索引
                worksheet.write(i, j, value)
    # --- 步骤 3:保存 Excel 文件 ---
    workbook.save('output.xls')
    print("TXT 文件已成功写入 Excel 文件:output.xls")
except FileNotFoundError:
    print("错误:找不到 'data.txt' 文件,请检查文件名和路径是否正确。")
except Exception as e:
    print(f"发生错误: {e}")

总结与对比

特性 pandas openpyxl xlwt
适用场景 数据处理、快速转换 精细操作、复杂格式 旧版 .xls 文件
易用性 极高,一行代码搞定读写 中等,需要手动循环写入 中等,需要手动循环写入
功能 强大的数据分析能力 强大的单元格、样式、图表控制 仅支持写入 .xls,功能有限
性能 处理大文件时高效 处理大文件时可能占用较多内存 较旧,性能一般
推荐度 ⭐⭐⭐⭐⭐ (首选) ⭐⭐⭐⭐ (需要精细控制时) ⭐⭐ (兼容旧系统时)

重要注意事项

  1. 编码问题:在读取 TXT 文件时,最好明确指定 encoding='utf-8',这样可以避免因文件编码不同(如 gbk)而导致的乱码问题。utf-8 不行,可以尝试 encoding='gbk'
  2. 路径问题:确保你的 Python 脚本和 data.txt 文件在同一个目录下,或者提供完整的文件路径。
    • pd.read_csv('C:/Users/YourUser/Documents/data.txt')
    • pd.read_csv('../data.txt') (表示上一级目录)
  3. 分隔符:如果你的 TXT 文件不是用逗号分隔的,请务必在 read_csvcsv.reader 中正确设置 sep 参数。
  4. 行尾换行符:在使用 openpyxlxlwt 时,从 TXT 文件读取的字符串末尾可能包含 \n,通常需要用 strip() 方法去除,否则 Excel 单元格中会多出一个换行。pandasread_csv 会自动处理这个问题。
分享:
扫描分享到社交APP
上一篇
下一篇