Python处理xlsx文件

来源:互联网 发布:java多线程上传文件 编辑:程序博客网 时间:2024/06/04 08:37

今天朋友有一需求,对xlsx文件内容进行读写,要求把原来文件每行按照3列一组,改成多行,如果不足3列的,单独一行。
如:a,b,c,d,e,f,g7列,改成a,b,c d,e,f g 3行,每行都做相应的操作,完成行修改后,再进行行列转换

长话短说,本脚本使用Python3.5完成,需要3方模块xlrd,xlwt

代码:

#/usr/bin/env python# -*- coding:utf-8 -*-# Author: MengJie Qian# -*- coding: utf-8 -*-import xlrdimport xlwtL = 4def open_excel(file= 'file.xls'):    try:        data = xlrd.open_workbook(file)        return data    except Exception as e:        print (str(e))#参数:file:Excel文件路径     colnameindex:表头列名所在行 by_index:表的索引def excel_table_byindex(file= 'file.xls',by_index=0,l=3):    data = open_excel(file)    table = data.sheets()[by_index]    nrows = table.nrows #行数    ncols = table.ncols #列数    row_list =[]    for rownum in range(nrows):         row = table.row_values(rownum)         if row:            if ncols % l == 0:                for col in range(ncols+1):                    if col !=0 and col % l == 0:                        app = row[col - l:col]                        row_list.append(app)            else:                for col in range((ncols // l +1) * l + 1):                    if (col!=0 and col % l == 0):                        app = row[col-l:col]                        row_list.append(app)    return row_listdef write_to_excel(filename,sheetname):    wb = xlwt.Workbook()    sheet = wb.add_sheet(sheetname)  # sheet的名称为test    # 单元格的格式    # style = 'pattern: pattern solid, fore_colour yellow; '  # 背景颜色为黄色    # style += 'font: bold on; '  # 粗体字    # style += 'align: horz centre, vert center; '  # 居中    # header_style = xlwt.easyxf(style)    datas = excel_table_byindex("d:/test.xlsx", 0, L)    for col in range(len(datas)):        for row in range(len(datas[col])):            sheet.write(row, col, datas[col][row])    wb.save(filename)if __name__=="__main__":    # l = excel_table_byindex("d:/test.xlsx",0,3)    # print(l)    # for n in l:    #     print(len(n))    write_to_excel("d:/test1.xlsx","Sheet1")

不足之处,xlwt只能创建xls文件,不能创建xlsx文件
下图是Python处理Excel常见的几个模块,对比优缺点如下

这里写图片描述