Python这样操作能存储100多万行的xlsx文件
程序员文章站
2022-05-09 23:17:22
(1) 如果excel文件是xls,2003版的,使用xlrd和xlwt库来对xls文件进行操作
(2) 如果excel文件是xlsx,2007以上版的,使用openpy...
(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行
闲话不多聊,直接上代码干货
!/usr/bin/env python3 - - coding: utf-8 - -
读写2007 excel
import pprint import openpyxl import openpyxl.styles from openpyxl.styles import font,colors
读取excel文件
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
操作数据
def operatedata(filename): list = readexcel(filename)
去除第一行,第一行是表头
list.pop(0) pprint.pprint(list) pprint.pprint("先按性别排序,再按身高排序")
要对身高进行排序,但是男女有别
先按性别排序,再按身高排序
list.sort(key=lambda ele: (ele[3], ele[4])) pprint.pprint(list)
获取excel标签列表
比如第5行标签列表,总共4列 ['a5', 'b5', 'c5', 'd5']
def gettaglist(index, colnum): taglist = [] for i in range(0, colnum):
a的ascii码值65
tag = chr(65 + i) + str(index) taglist.append(tag) return taglist
写入excel文件
def writeexcel(outputfilepath, list): book = openpyxl.workbook() sheet = book.create_sheet("用户", 0) sheet.title = "用户" # sheet名称 rownum = len(list) try:
1行1行读取
for i in range(1, rownum + 1): # 下标从1开始 datalist = list[i -1] # 读取1行 col = 1
1列1列写入
for data in datalist: sheet.cell(i, col, data) #写入内容 col += 1
获取标签列表
taglist = gettaglist(i, len(datalist)) font = font('微软雅黑', size = 14, color = '333333')
设置单元格字体、字号、颜色
for tag in taglist: sheet[tag].font = font # 设置字体
保存文件
book.save(outputfilepath) except exception as e: # 捕获异常 print(e)
主函数
if name == " main ": print("读取xlsx格式的数据") userlist = readexcel('user.xlsx') print("写入xlsx文件") writeexcel("user2.xlsx", userlist) print("操作数据") operatedata('user.xlsx')
总结
以上所述是小编给大家介绍的python这样操作能存储100多万行的xlsx文件,希望对大家有所帮助