当前位置:网站首页>【openpyxl】只读模式、只写模式
【openpyxl】只读模式、只写模式
2022-08-10 23:50:00 【冰冷的希望】
1.说明
前面我们使用的normal模式进行读写Excel文件,这是一种兼顾读写相对比较平衡的模式,但是,数据加载到内存占用的资源是比较大的,大概是文件的50倍,如果你的Excel文件本身就10M,加载之后程序
需要占用0.5G内存,这很不划算(大内存电脑请自动忽略),所以我们需要考虑是不是可以选择只读或只写模式以便提高性能
2.只读模式
只读模式,如果你需要读取很大的Excel文件,但是又不改变和保存,例如只读取数值用于其他数据分析,这时候我们完全可以使用只读模式提供性能
from openpyxl import load_workbook
# 加载Excel文件时使用read_only指定只读模式
wb = load_workbook(filename='large_file.xlsx', read_only=True)
ws = wb['big_data']
# 可以正常读取值
for row in ws.rows:
for cell in row:
print(cell.value)
# 注意:读取完之后需要手动关闭避免内存泄露
wb.close()
load_workbook参数说明:
定义:
def load_workbook(filename, read_only=False, keep_vba=KEEP_VBA, data_only=False, keep_links=True)
参数:
read_only:是否只读,默认False
keep_vba:是否使用VBA编程,默认False
data_only:是否只加载数据值,即丢弃公式、排序等操作,默认False
keep_links:是否保留超链接,默认True
3.只写模式
如果文件是以写为主,可以在创建工作簿的时候指定为只写模式以便提高性能,不管文件有多大,都可以把内存保持在10M以下
from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Comment
from openpyxl.styles import Font
wb = Workbook(write_only=True) # 创建工作簿时指定只写模式
ws = wb.create_sheet() # 需要通过create_sheet创建一个sheet
# 可以正常保存数据
for _ in range(100):
ws.append([i for i in range(200)]) # 只能通过append写
# 如果需要保留公式、注释等操作,可以使用WriteOnlyCell
cell = WriteOnlyCell(ws, value="冰冷的希望")
cell.font = Font(name='黑体', size=15)
cell.comment = Comment(text="这是注释", author="pan")
ws.append([cell])
wb.save('openpyxl/test.xlsx')
只写模式注意点:
1.需要通过create_sheet()创建表
2.只能通过append()增加数据,不能通过cell或iter_rows()
3.wb.save()之后不能再修改,否则抛出WorkbookAlreadySaved异常
边栏推荐
猜你喜欢
随机推荐
如何判断一个数为多少进制?
15. Interceptor - HandlerInterceptor
16. File upload
[Excel knowledge and skills] Convert "false" date to "true" date format
李彦宏拆墙交朋友,大厂“塑料友情”能否帮百度啃下硬骨头?
Lens filter---about day and night dual-pass filter
图片懒加载(纯手写)
“蔚来杯“2022牛客暑期多校训练营4 ADHK题解
线上突然查询变慢怎么核查
web 性能提升(将持续更新……)
I caught a 10-year-old Ali test developer, and after talking about it, I made a lot of money...
Dump file generation, content, and analysis
C language% (%d,%c...)
如何快速把握行业机会,更高效地推陈出新,是一个重要的命题
基于Web的疫情隔离区订餐系统
In 22 years, the salary of programmers nationwide in January was released, only to know that there are so many with annual salary of more than 400,000?
学习Apache ShardingSphere解析器源码(一)
14. Thymeleaf
宝塔实测-搭建PHP在线模拟考试系统
如果纯做业务测试的话,在测试行业有出路吗?



![[数据可视化] 图表设计原则](/img/f3/691dd58d1e334f9f62efa23e27ec76.png)





