Python实现Excel数据转置写入TXT文件问题求助
解决Python写入TXT仅保留最后一行的问题
问题根源
你遇到的TXT只写入最后一行的问题,大概率是每次循环都用'w'模式重新打开文件,导致每次写入都会清空之前的内容;或是错误地将写入操作放在循环外,仅在最后执行一次写入。
修改方案
以下是基于openpyxl的修正代码,实现自动识别有效行、指定列读取、转置写入(将Excel列的每行数据转为TXT的每行)、强制CRLF换行,并自动管理文件关闭:
from openpyxl import load_workbook # 加载Excel文件,只读模式提升处理效率 wb = load_workbook('INPUT_01.xlsx', read_only=True) ws = wb.active # 若需指定工作表,替换为wb['你的工作表名称'] # 指定要处理的目标列(openpyxl列索引从1开始,例如B列对应2) target_col = 2 # 使用上下文管理器打开TXT文件,自动处理文件关闭和CRLF格式 # 'w'模式会覆盖旧文件,如需追加内容改用'a';newline='\r\n'强制Windows换行符 with open('output.txt', 'w', encoding='utf-8', newline='\r\n') as txt_file: # 遍历目标列的所有行,仅提取单元格值(values_only=True) for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=target_col, max_col=target_col, values_only=True): cell_val = row[0] # 跳过空行,避免写入无效内容 if cell_val is None: continue # 将单元格内容转为字符串写入TXT,自动添加CRLF换行 txt_file.write(f"{cell_val}\n")
关键说明
- 文件写入模式:用
with语句在循环前打开文件,全程保持打开状态,循环内持续写入,避免重复打开覆盖内容。 - CRLF格式:通过
newline='\r\n'参数强制写入Windows标准的CRLF换行符,无需手动拼接\r\n。 - 有效行识别:利用
iter_rows精准遍历指定列,结合空值判断跳过Excel中的空白单元格,只处理有效数据行。 - 自动关闭文件:上下文管理器
with会在代码块结束后自动关闭文件,无需手动调用close(),避免资源泄漏。
内容的提问来源于stack exchange,提问作者Shawn Randeny
相关产品推荐
相关产品推荐

