openpyxl的使用:python如何对excel进行操作?

python如何对excel进行操作

今天测试一个小功能:上传的excel文档不能超过10W行,于是就想直接用python向文档中写入10W行的数据。

关于读写excel的技术很多~我们这里就使用openpyxl来实现。openpyxl是一个用于读/写Excel2010 XLSX/XLSM/XLTX/XLTM文件的python库,目前实现的已经很完整了。
先来安装下~

pip install openpyxl

安装完成后,整理下思路,打开工作簿,向工作表写入数据然后保存,真是很简单的需求!

import os
from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
sheet = wb["Sheet1"]
for i in range(1, 100001):
    sheet.cell(i, 1).value = '222'
    sheet.cell(i, 2).value = '这是地点'
    sheet.cell(i, 3).value = '222222'
    sheet.cell(i, 4).value = '你好呀'
wb.save('test.xlsx')
wb.close()

想要的表就生成成功了。顺便来学习学习这个模块。
openpyxl有两个主要模块:

  • load_workbook:用来读取excel里面的数据
  • Workbook:用来新建工作簿以及写入数据到excel中去
    我们开始按我们的使用场景来学习一下~

创建新文件并保存

当我们使用excel软件创建文件时往往需要以下三个步骤

  1. 点击新建,这个时候软件会给你一个临时的文件名
  2. 点击保存,输入保存名
  3. (闭环)关闭excel
    对应的代码很直观的如下,这里
from openpyxl import Workbook
wb = Workbook()
wb.save('new.xlsx')
wb.close()

打开文件并修改文件

from openpyxl import load_workbook
# 打开刚刚新建的new.xlsx
wb = load_workbook('new.xlsx')
# 在sheet工作表上修改1行1列单元格的值
sheet = wb['Sheet']
sheet.cell(1, 1).value = '2222'
# 保存文档
wb.save('new.xlsx')
# 关闭文档
wb.close()

新建工作表

from openpyxl import load_workbook
wb = load_workbook('new.xlsx')
# 创建工作表
wb.create_sheet('Sheet2')
wb.save('new.xlsx')
wb.close()

除此外~工作表也可以建立到相对当前工作表位置

from openpyxl import load_workbook
wb = load_workbook('sample.xlsx')
# 获取当前正在运行的工作表
ws = wb.active
# 将工作表建到当前前面
ws1 = wb.create_sheet('sheet0', 0)
# 将工作表建到当前后面
ws1 = wb.create_sheet('sheet0', -1)
wb.save('sample.xlsx')

遇到的问题

在加载工作簿的时候执行时报错:zipfile.BadZipFile: File is not a zip file
代码如下:

from openpyxl import load_workbook
wb = load_workbook('test.xlsx')

报错信息如下:

Traceback (most recent call last):
  File "E:/Python Test/Ytest/case/basicday/test.py", line 4, in <module>
    wb = load_workbook('test.xlsx')
  File "E:\Python Test\py_virtual_env\Ytest\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
    reader = ExcelReader(filename, read_only, keep_vba,
  File "E:\Python Test\py_virtual_env\Ytest\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__
    self.archive = _validate_archive(fn)
  File "E:\Python Test\py_virtual_env\Ytest\lib\site-packages\openpyxl\reader\excel.py", line 96, in _validate_archive
    archive = ZipFile(filename, 'r')
  File "c:\users\zerd\appdata\local\programs\python\python38\lib\zipfile.py", line 1234, in __init__
    self._RealGetContents()
  File "c:\users\zerd\appdata\local\programs\python\python38\lib\zipfile.py", line 1301, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

解决方案:
试了几次后才发现xlsx不能通过pycharm工具创建,只能自己用excel创建,或者代码创建。小坑。

posted @ 2021-03-25 15:15  之凡  阅读(496)  评论(0)    收藏  举报