脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python这样操作能存储100多万行的xlsx文件

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

2021-06-18 00:11Python小老弟 Python

这篇文章主要介绍了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这样操作能存储100多万行的xlsx文件

总结

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

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

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

延伸 · 阅读

精彩推荐