python txt装换成excel

时间:2021-12-30 04:33:13

工作中,我们需要经常吧一些导出的数据文件,例如sql查出来的结果装换成excel,用文件发送。这次为大家带上python装换excel的脚本

记得先安装wlwt模块,适用版本,python2-3

#coding=utf-8
#!/usr/bin/python
#AUTHOR=ELSON import xlwt,io,os,sys """
运行指令
python name.py 表头文件 分隔符 导入的文件名(可多个)
fx: python srcipt_excel.py head.txt # aa.txt bb.txt cc.txt cat head.txt (格式='表名,字段1:列宽,字段2:列宽')
第一行:xls保存名字.xls
第二行:sheet1,姓名:20,年龄:10,成绩:10
第三行:sheet2,姓名:20,年龄:10,成绩:10
""" #表头文件
head = sys.argv[1]
#separator分隔符
separator = sys.argv[2]
#文件名
source_path = sys.argv[3:]
##文件输出路径
execl_path = './' #条件判断
head_len=len(open(head,'r').readlines()) -1
txt_len=len(source_path)
if head_len != txt_len:
print('ERROR 表头文件行数 % 不等于 需要转换excel的文件数 %s ,程序退出!' %(head_len,txt_len))
exit() xls=xlwt.Workbook(encoding='utf-8')
def setsttle(color=1,blod=False,): #1=白 #5=黄
style = xlwt.XFStyle() # 创建一个样式对象,初始化样式
#边框
borders = xlwt.Borders()
borders.left = 1
borders.left = xlwt.Borders.THIN
borders.right = 1
borders.top = 1
borders.bottom = 1
# 定义格式
style.borders = borders
# 设置背景颜色
pattern = xlwt.Pattern()
# ���置背景颜色的模式
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 背景颜色
pattern.pattern_fore_colour = color
style.pattern = pattern
#队列格式
al = xlwt.Alignment()
al.horz = 0x02 # 设置水平居中
al.vert = 0x01 # 设置垂直居中
style.alignment = al
#字体
font = xlwt.Font()
# 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
#font.name = "仿宋"
font.bold = blod
style.font = font
return style #写入excel
def write_excel(head,separator,txt_name):
"""
:param head: 头部文件
:param separator: 分隔符
:param txt_name: 装换成excel的txt文件[列表]
:return:
"""
default = setsttle(5,True)
default2 = setsttle()
# 表头
sheet_num = 0
with open(head, 'r') as f:
global xls_name
xls_name = f.readline().strip()
while True:
x = 1
ii = 0
line = f.readline().strip().replace(' ','').split(',')
if not line[0]:
break
sheet = xls.add_sheet(line[0])
for head in line[1:]:
heads=head.split(':')
sheet.write(0,ii,heads[0],default)
sheet.col(ii).width = 265 * int(heads[1])
ii += 1
# 表体
txt_file = io.open(txt_name[sheet_num], mode='r', encoding='UTF-8')
while True:
line = txt_file.readline()
if not line:
break
for i in range(len(line.split(separator))):
item = line.split(separator)[i]
sheet.write(x, i, item, default2)
x += 1
txt_file.close()
sheet_num += 1
xls.save(os.path.join(execl_path, xls_name)) #主体写入
if __name__ == '__main__':
write_excel(head,separator,source_path)
#保存excel
print('success')