0
点赞
收藏
分享

微信扫一扫

python 在存在格式的EXCEL表格中填写内容

之前做过把不同的excel表格信息汇总到一个表,例如简历信息的汇总,现在是把一个大表填到不同的小表里,例如资产表格的打印,主要的难点是怎么保留原格式;

用到了xlutils库,不同的库的方法不太一样                 

   fileres = xlrd.open_workbook(resPath,formatting_info=True)
  fileExcel = xlutils.copy.copy(fileres) #复制一份用来写

获取表格格式的样式列表

w = XLWTWriter()
process(XLRDReader(fileres,'unknown.xls'), w)   
style_list = w.style_list

获取某一个单元格的样式:

 style1 = style_list[sheet.cell_xf_index(2, 5)]

具体从一个excel读数据写入一个带格式的excel的全部代码:

def read_excel(fileName):
    workBook = xlrd.open_workbook(fileName)
    print(fileName)
    #获取所有sheet的名字
    allSheetNames = workBook.sheet_names()
    # 获取sheet的名字
    sheet1Name = allSheetNames[0]
    # 获取列表1的名称
    sheet_contents = workBook.sheet_by_name(sheet1Name)

    #装入元素列表的信息
    contentLists = []
    #获取单元格内容
    rows = sheet_contents.nrows
    cols = sheet_contents.ncols
    print("rows:",rows)
    for i in range(1,rows):
        contentList = []
        AssetName = sheet_contents.cell(i,9).value    #资产名称
        AdminName = sheet_contents.cell(i, 14).value  # 资产管理员
        AssetBrand = sheet_contents.cell(i, 6).value  # 设备品牌
        AssentID = sheet_contents.cell(i, 0).value  # 设备编码
        AssetType = sheet_contents.cell(i, 7).value  # 设备型号
        AssetLocation = sheet_contents.cell(i, 1).value  # 安装位置
        AssetCabs = sheet_contents.cell(i, 2).value  # 机柜号
        AssetUNums = sheet_contents.cell(i, 3).value  # U数
        AssetSN = sheet_contents.cell(i, 8).value  # SN码
        AssetSys = sheet_contents.cell(i, 10).value  # 操作系统
        AssetIp = sheet_contents.cell(i, 11).value  # ip地址
        AssetBusSys = sheet_contents.cell(i, 12).value  # 业务系统
        contentList.append(AssetName)
        contentList.append(AdminName)
        contentList.append(AssetBrand)
        contentList.append(AssetType)
        contentList.append(AssetLocation)
        contentList.append(AssetCabs)
        contentList.append(AssetUNums)
        contentList.append(AssetSN)
        contentList.append(AssetSys)
        contentList.append(AssetIp)
        contentList.append(AssetBusSys)
        contentList.append(AssentID)
        contentLists.append(contentList)
    return contentLists
#把提取的数据写到文件中
def write_excel(contentLists,resPath):
    fileres = xlrd.open_workbook(resPath,formatting_info=True)
    fileExcel = xlutils.copy.copy(fileres) #复制一份用来写
   # print(fileExcel.sheet_names())
    # 获取所有sheet的名字
    allSheetNames = fileres.sheet_names()
    # 获取sheet的名字
    len = allSheetNames.__len__()
    rows = contentLists.__len__()
    print("len,rows:",len,rows)

    w = XLWTWriter()
    process(XLRDReader(fileres,'unknown.xls'), w)
    wb = w.output[0][1]
    style_list = w.style_list
    print("style:",style_list.__len__())
    for i, sheet in enumerate(fileres.sheets()):
    #for i in range(0,len):
        sheet_contents = fileExcel.get_sheet(i)
        style1 = style_list[sheet.cell_xf_index(2, 5)]
        sheet_contents.write(2, 5, contentLists[i][0],style1)
        style100 = style_list[sheet.cell_xf_index(3, 4)]
        sheet_contents.write(3, 4, contentLists[i][0],style100)
        style2 = style_list[sheet.cell_xf_index(4, 4)]
        sheet_contents.write(4, 4, contentLists[i][1],style2)
        style3 = style_list[sheet.cell_xf_index(4, 10)]
        sheet_contents.write(4, 10, contentLists[i][1],style3)
        style4 = style_list[sheet.cell_xf_index(8, 2)]
        sheet_contents.write(8, 2, contentLists[i][2],style4)
        style5 = style_list[sheet.cell_xf_index(8, 5)]
        sheet_contents.write(8, 5, contentLists[i][3],style5)
        style6 = style_list[sheet.cell_xf_index(8, 9)]
        sheet_contents.write(8, 9, contentLists[i][4],style6)
        style7 = style_list[sheet.cell_xf_index(8, 11)]
        sheet_contents.write(8, 11, "b1" + " " + str(contentLists[i][5]) + " " + str(contentLists[i][6]),style7)
        style8 = style_list[sheet.cell_xf_index(10, 2)]
        sheet_contents.write(10, 2, contentLists[i][7],style8)
        style9 = style_list[sheet.cell_xf_index(14, 10)]
        sheet_contents.write(14, 10, contentLists[i][8],style9)
        style10 = style_list[sheet.cell_xf_index(23, 3)]
        sheet_contents.write(23, 3, contentLists[i][9],style10)
        style11 = style_list[sheet.cell_xf_index(34, 2)]
        sheet_contents.write(34, 2, contentLists[i][10],style11)
        style12 = style_list[sheet.cell_xf_index(3, 12)]
        sheet_contents.write(3, 12, contentLists[i][11], style12)
    fileExcel.save(resPath)

主要参考了以下网址:

用xlwt和xlrd在不修改Excel单元格格式的情况下修改单元格内容_硫酸锌01的博客-CSDN博客_xlwt修改单元格内容https://segmentfault.com/q/1010000008270267/a-1020000008308641

python 数据写在已存在的excel表中_DDQ_DQ的博客-CSDN博客_python xlwt写入已有表

python向已存在的excel写入数据_python写入已存在的excel数据实例_weixin_39611765的博客-CSDN博客

举报

相关推荐

0 条评论