需求
将excel第2个sheet页的数据,转换为以'0x04'为分割符的文本文件,文件后缀名为.dat,跳过表头。
实现
import openpyxl
import os
import re
def excel_to_dat(input_excel_path):
# 检查文件是否存在
if not os.path.exists(input_excel_path):
raise FileNotFoundError(f"Excel文件不存在: {input_excel_path}")
# 生成输出文件名(同Excel文件名,后缀改为.dat)
base_name = os.path.splitext(os.path.basename(input_excel_path))[0]
output_dat_path = os.path.join(os.path.dirname(input_excel_path), f"{base_name}.dat")
# 加载Excel文件
wb = openpyxl.load_workbook(input_excel_path)
# 获取第二个sheet页(索引从0开始)
if len(wb.worksheets) < 2:
raise IndexError("Excel文件中没有第二个sheet页")
sheet = wb.worksheets[1]
# 打开输出文件,使用UTF-8编码
with open(output_dat_path, 'w', encoding='utf-8') as f:
# 跳过表头(第一行)
for row in sheet.iter_rows(min_row=2, values_only=True):
# 处理每个单元格:替换换行符为空字符串
processed_cells = []
for cell in row:
if cell is None:
processed_cells.append('')
else:
# 替换所有换行符(包括\n和\r)
cleaned = re.sub(r'[\r\n]+', '', str(cell))
processed_cells.append(cleaned)
# 用0x04分隔符连接处理后的单元格
line = '\x04'.join(processed_cells)
f.write(line + '\n') # 行间仍用换行符分隔
print(f"数据已成功导出到 {output_dat_path},共处理 {sheet.max_row-1} 行数据")
if __name__ == "__main__":
import sys
if len(sys.argv) != 2:
print("使用方法: python script.py <Excel文件路径>")
sys.exit(1)
excel_path = sys.argv[1]
try:
excel_to_dat(excel_path)
except Exception as e:
print(f"处理失败: {str(e)}")
sys.exit(1)
依赖
-
安装依赖:
手动安装依赖包:下载2个依赖包文件,openpyxl et-xmlfile管理工具安装:pip install openpyxl
pip3 install et_xmlfile-2.0.0-py3-none-any.whl
pip3 install openpyxl-3.1.5-py2.py3-none-any.whl
-
运行脚本:
python3 xl2dat.py 你的Excel文件.xlsx
2262

被折叠的 条评论
为什么被折叠?



