当前位置:脚本大全 > > 正文

python如何将xls转成xlsx(Python这样操作能存储100多万行的xlsx文件)

时间:2021-10-16 00:48:44类别:脚本大全

python如何将xls转成xlsx

Python这样操作能存储100多万行的xlsx文件

(1) 如果excel文件是xls,2003版的,使用xlrd和xlwt库来对xls文件进行操作

(2) 如果excel文件是xlsx,2007以上版的,使用openpyxl库来对xlsx文件进行操作

tips:xlrd、xlwt和openpyxl非python自带库。

我们使用python做数据挖掘和分析时候,当数据行超过一定数量,xls文件是存不下的。显然无法满足我们的大量数据存储需求,这个时候需要改用xlsx。

那具体xls和xlsx最大分别可以存多少行呢?

(1) 对于2003版本的xls文件,最大行数是65536行

(2) 对于2007版本的xlsx文件,最大行数是1048576行

闲话不多聊,直接上代码干货

  • ?
  • 1
  • 2
  • !/usr/bin/env python3
  • - - coding: utf-8 - -
  • 读写2007 excel

  • ?
  • 1
  • 2
  • 3
  • 4
  • import pprint
  • import openpyxl
  • import openpyxl.styles
  • from openpyxl.styles import font,colors
  • 读取excel文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • def readexcel(filename):
  • workbook = openpyxl.load_workbook(filename)
  • worksheet = workbook['用户']
  • list = []
  • for row in worksheet.rows: # 1行1行读
  • linedata = [] # 行数据
  • col = 1
  • for cell in row:
  • linedata.append(cell.value) # 1列1列读
  • col = col + 1
  • list.append(linedata)
  • return list
  • 操作数据

  • ?
  • 1
  • 2
  • def operatedata(filename):
  • list = readexcel(filename)
  • 去除第一行,第一行是表头

  • ?
  • 1
  • 2
  • 3
  • list.pop(0)
  • pprint.pprint(list)
  • pprint.pprint("先按性别排序,再按身高排序")
  • 要对身高进行排序,但是男女有别

    先按性别排序,再按身高排序

  • ?
  • 1
  • 2
  • list.sort(key=lambda ele: (ele[3], ele[4]))
  • pprint.pprint(list)
  • 获取excel标签列表

    比如第5行标签列表,总共4列 ['a5', 'b5', 'c5', 'd5']

  • ?
  • 1
  • 2
  • 3
  • def gettaglist(index, colnum):
  • taglist = []
  • for i in range(0, colnum):
  • a的ascii码值65

  • ?
  • 1
  • 2
  • 3
  • tag = chr(65 + i) + str(index)
  • taglist.append(tag)
  • return taglist
  • 写入excel文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • def writeexcel(outputfilepath, list):
  • book = openpyxl.workbook()
  • sheet = book.create_sheet("用户", 0)
  • sheet.title = "用户" # sheet名称
  • rownum = len(list)
  • try:
  • 1行1行读取

  • ?
  • 1
  • 2
  • 3
  • for i in range(1, rownum + 1): # 下标从1开始
  • datalist = list[i -1] # 读取1行
  • col = 1
  • 1列1列写入

  • ?
  • 1
  • 2
  • 3
  • for data in datalist:
  • sheet.cell(i, col, data) #写入内容
  • col += 1
  • 获取标签列表

  • ?
  • 1
  • 2
  • taglist = gettaglist(i, len(datalist))
  • font = font('微软雅黑', size = 14, color = '333333')
  • 设置单元格字体、字号、颜色

  • ?
  • 1
  • 2
  • for tag in taglist:
  • sheet[tag].font = font # 设置字体
  • 保存文件

  • ?
  • 1
  • 2
  • 3
  • book.save(outputfilepath)
  • except exception as e: # 捕获异常
  • print(e)
  • 主函数

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • if name == " main ":
  • print("读取xlsx格式的数据")
  • userlist = readexcel('user.xlsx')
  • print("写入xlsx文件")
  • writeexcel("user2.xlsx", userlist)
  • print("操作数据")
  • operatedata('user.xlsx')
  • python如何将xls转成xlsx(Python这样操作能存储100多万行的xlsx文件)

    总结

    以上所述是小编给大家介绍的python这样操作能存储100多万行的xlsx文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!

    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    原文链接:https://www.jianshu.com/p/1d7c31e230bc

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐