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

安装 pandas 和 openpyxl
如果你的环境中还没有安装,请先安装它们。openpyxl 是 pandas 写入 .xlsx 文件时需要的引擎。
pip install pandas openpyxl
准备一个 TXT 文件
假设我们有一个名为 data.txt 的文件,内容如下:
data.txt
姓名,年龄,城市
张三,25,北京
李四,30,上海
王五,28,广州
赵六,22,深圳
注意:TXT 文件中的数据是用逗号、制表符(\t)或其他符号分隔的。pandas 默认会自动识别常见的分隔符。

编写 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}")
代码解释:
pd.read_csv('data.txt', ...): 虽然read_csv的名字是“读取CSV”,但它非常通用,可以读取任何有固定分隔符的文本文件。sep=',': 告诉pandas用逗号来分割每一列,如果你的文件是tab分隔的,请改为sep='\t'。header=0: 指定第一行作为列的标题。df.to_excel(...): 这是核心的写入函数。'output.xlsx': 你想要生成的 Excel 文件名。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}")
代码解释:
Workbook(): 创建一个新的、空的 Excel 工作簿。wb.active: 获取当前活动的工作表。csv.reader(file):csv模块可以方便地逐行读取 CSV/TXT 文件,并处理引号和转义字符。ws.append(row):openpyxl的Worksheet对象的append方法可以将一个列表(代表一行数据)添加到工作表的末尾。
使用 xlwt 和 xlrd 库(旧版 .xls 格式)
xlwt 用于写入 .xls 格式(Excel 97-2003),xlrd 用于读取。.xls 格式现在已不常用,但如果你需要兼容非常古老的软件,可能会用到它。

安装
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,功能有限 |
| 性能 | 处理大文件时高效 | 处理大文件时可能占用较多内存 | 较旧,性能一般 |
| 推荐度 | ⭐⭐⭐⭐⭐ (首选) | ⭐⭐⭐⭐ (需要精细控制时) | ⭐⭐ (兼容旧系统时) |
重要注意事项
- 编码问题:在读取 TXT 文件时,最好明确指定
encoding='utf-8',这样可以避免因文件编码不同(如gbk)而导致的乱码问题。utf-8不行,可以尝试encoding='gbk'。 - 路径问题:确保你的 Python 脚本和
data.txt文件在同一个目录下,或者提供完整的文件路径。pd.read_csv('C:/Users/YourUser/Documents/data.txt')pd.read_csv('../data.txt')(表示上一级目录)
- 分隔符:如果你的 TXT 文件不是用逗号分隔的,请务必在
read_csv或csv.reader中正确设置sep参数。 - 行尾换行符:在使用
openpyxl或xlwt时,从 TXT 文件读取的字符串末尾可能包含\n,通常需要用strip()方法去除,否则 Excel 单元格中会多出一个换行。pandas的read_csv会自动处理这个问题。
