table 中某一列位于固定的一列吗?_Python 将excel中一个单元格的内容分成多列显示...

需求来源:

       来自于某一群友提问,目前有这样的数据如下图,如何将A列处理为多列显示?

5b5a9005ba8c157f49ed6689e0172fbb.png

主要知识点:

  1. xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入

  2. 字符串分割 split('|')

  3. 合并单元格

  4. 生成新的.xlsx 文件

直接上代码,代码中有详细的注释信息:

import xlrdimport xlwt#读取Excel文件file=u"pythonsplit.xlsx"#注意读中文文件名稍微处理一下data=xlrd.open_workbook(file)#Sheet1table = data.sheet_by_index(0)#按照索引读Excel文件firstrows=table.row_values(0)print("读取第一行:"+str(firstrows))totalRows = table.nrows #行totalCols = table.ncols #列print ("总行数"+str(totalRows),"总列数"+str(totalCols))workbook = xlwt.Workbook()sheet = workbook.add_sheet('new')mergeSize = 0for i in range(1,totalRows):    result = table.cell_value(i, 0)    #分割第i行第0列    res=result.split('|')    # 如:3室2厅| 99.8平方米 |西南 北 |毛坯 |高楼层(共33层)|2011年建 |板楼  分割后的长度    mergeSize=len(res)    #处理原excel中的第一列的数据    for k in range(0, mergeSize):        sheet.write(i, k, res[k])    #处理原excel中大于第一列的数据,    for p in range(1, totalCols):        sheet.write(i, mergeSize -1 + p , table.cell_value(i, p))#设置第一行标题#合并 第0行到第0行的第0列到第mergeSize - 1列   并设置为table.cell_value(0, 0)sheet.write_merge(0, 0, 0, mergeSize - 1, table.cell_value(0, 0))for j in range(1,totalCols):    print(j, table.cell_value(0, j))    sheet.write(0, mergeSize-1 + j, table.cell_value(0, j))#生成的新文件名workbook.save('pythonsplit01.xlsx')

代码执行成功后的新的excel文件如下(.py文件和.excel文件在同级目录)

27e1bf72f8d6cc4fac66f8915126d6de.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值