Python 3.X 模块openpyxl学习和使用—安装和基本使用

openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.

It was born from lack of existing library to read/write natively from Python the Office Open XML format.

All kudos to the PHPExcel team as openpyxl was initially based on PHPExcel.

这是一个第三方库,可以处理xlsx格式的Excel文件。pip install openpyxl安装。或者在官网直接下载源码进行安装。注意该模块支持的excel文件版本,如果是老版本文件可以使用其他的模块,或者将文件转换成新版本。

另注:本次操作环境都是在Windows Server 2012 系统下进行的,所有命令都使用了绝对路径,如果是在linux环境下执行的话,由于有环境变量所以不用绝对路径也可以执行。
使用python版本:3.7

pip 安装方式

pip安装直接使用对应版本的pip进行安装即可,pip install openpyxl 安装即可。比较简单这里不再赘述。

pip 卸载:

python 官网直接下载对应的源码安装包,不过源码安装时,首次安装是会存在报错的,需要先安装依赖,也是使用源码安装就可以了。

源码下载地址:

https://pypi.org/project/openpyxl/#files

下载软件到本地,解压到当前目录,进入目录中可看到setup.py文件:

使用 python setup.py install 进行安装,
另注:本次操作环境都是在Windows Server 2012 系统下进行的,所有命令都使用了绝对路径,如果是在linux环境下执行的话,由于有环境变量所以不用绝对路径也可以执行。

由于之前安装过所以已经安装了相关依赖,所以本次源码安装直接成功:

如果安装失败的话,检查是否有安装依赖,依赖包是:et_xmlfile 、jdcal
源码安装方式和上面操作是一样的。

官网下载链接:
https://pypi.org/project/jdcal/
https://pypi.org/project/et_xmlfile/

IDE内直接安装(PyCharm)

其他软件也可以参照此方法

注:其他Python模块也都可以参照该方法。

模块openpyxl的基本使用

直接上代码:

import openpyxl
import datetime
# 实例化对象excel对象
excel_obj = openpyxl.Workbook()
# excel 内当前活跃的sheet工作表
excel_obj_sheet = excel_obj.active
# 给单元格赋值
excel_obj_sheet['A1'] = 4
excel_obj_sheet.append([1, 2, 3])
excel_obj_sheet['A3'] = datetime.datetime.now()
# 文件保存
excel_obj.save('sample.xlsx')


运行后,文件内容:

由于模块和python都在不断更新,往往在新版本中会抛弃一些老版本的方法:

#coding=utf-8
import openpyxl
from openpyxl import Workbook
# 默认可读写,若有需要可以指定write_only和read_only为True
# 新建Excel表格
wb = Workbook('new_excel.xlsx')
# 加载本地已有文件
wb2 = openpyxl.load_workbook('excel.xlsx')
# 获取所有sheet的名称
# 老版openpyxl支持方法,新版建议直接使用属性sheetnames
# print(wb.get_sheet_names())
# print(wb2.get_sheet_names())
print('sheetnames')
print(wb.sheetnames)
print(wb2.sheetnames)
# 根据sheet名字获得sheet
# 老版办法,建议使用新版本方法
# a_sheet = wb2.get_sheet_by_name('Sheet1')
a_sheet = wb2['Sheet1']
# 获取sheet的标题
print(a_sheet.title)
# 获取当前显示的sheet页,两种方式都可以
sheet = wb2.active
# sheet = wb2.get_active_sheet
# 获取单元格
a4 = sheet['A4']
print('(%s,%s) is %s.' % (a4.column, a4.row, a4.value))
# 获得最大列和最大行
print('获得最大列和最大行')
print(sheet.max_column)
print(sheet.max_row)
# 获取行和列
# sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
# sheet.columns类似,不过里面是每个tuple是每一列的单元格。
# 因为按行,所以返回A1, B1, C1这样的顺序
for row in sheet.rows:
    for cell in row:
        print('(%s,%s) is %s.' % (cell.column, cell.row, cell.value))
print('================')
# A1, A2, A3这样的顺序
for column in sheet.columns:
    for cell in column:
        print('(%s,%s) is %s.' % (cell.column, cell.row, cell.value))
# 上面的代码就可以获得所有单元格的数据。如果要获得某行的数据呢?给其一个索引就行了,因为sheet.rows是生成器类型,不能使用索引,转换成list之后再使用索引,list(sheet.rows)[2]这样就获取到第三行的tuple对象。
print('================')
for cell in list(sheet.rows)[2]:
    print('(%s,%s) is %s.' % (cell.column, cell.row, cell.value))
# 如何获得任意区间的单元格?
# 可以使用range函数,下面的写法,获得了以A1为左上角,B3为右下角矩形区域的所有单元格。注意range从1开始的,因为在openpyxl中为了和Excel中的表达方式一致,并不和编程语言的习惯以0表示第一个值。
for i in range(1, 4):
    for j in range(1, 3):
        print(sheet.cell(row=i, column=j))
# 还可以像使用切片那样使用。sheet['A1':'B3']
# 返回一个tuple,该元组内部还是元组,由每行的单元格构成一个元组。
for row_cell in sheet['A1':'B3']:
    for cell in row_cell:
        print(cell)
for cell in sheet['A1':'B3']:
    print(cell)
# 根据字母获得列号,根据列号返回字母
# 需要导入, 这两个函数存在于openpyxl.utils
from openpyxl.utils import get_column_letter, column_index_from_string
# 根据列的数字返回字母
print(get_column_letter(2))  # B
# 根据字母返回列的数字
print(column_index_from_string('D'))  # 4

本代码的执行结果就不贴出来,由于太多了,大家可以自己找几个文件随便进行测试。

Python 3.X 模块openpyxl学习和使用—安装和基本使用前言openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.It was born from lack of existing library to read/write natively from Python the ...
Python Amcrest 使用SDK HTTP API的Python 2.7 / 3.x模块。 Amcrest和大华设备共享相似的固件。 大华摄像机和NVR也可以与此模块配合使用。 文档: : $ pip install amcrest --upgrade $ eval " $( register-python-argcomplete amcrest-cli ) " # To enable amcrest-cli autocomplete in the system: $ echo ' eval "$(register-python-argcomplete amcrest-cli)" ' > /etc/profile.d/amcrest-cli-autocomplete.sh $ git clone git@github.com:tchellomell
安装openpyxl所需文件,发现除了openpyxl-2.6.0.tar.gz 和 et_xmlfile-1.0.1.tar.gz还缺少jdcal-1.4.1.tar.gz,奈何网站连接困难,为方便大家上传在此,也将下载地址附给大家,大家可以自己尝试下载看看:https://pypi.org/project/jdcal/#files 这个下载文件中包含了以上三个文件,解压后进入相应的文件目录,执行 python setup.py install (三个文件目录下都是执行这条命令)
openpyxl模块: 是用于解决Excel(WPS等均可使用)中扩展名为xlsx/xlsm/xltx/xltm的文件读写的第三方库。xls文件要使用xlwt 、wlrd两个模块。 主要概念: Workbooks,Sheets,Cells。Workbook就是一个excel工作簿;Sheet是工作簿中的一张工作表;Cell就是表的一个单元格。openpyxl不管读写都是:打开Workbook,定位...
pythonopenpyxl是解析 .xlsx 文件的模块,一般使用pip install openpyxl 就可以安装。 [h_pw@localhost ~]$ sudo pip install openpyxl [sudo] h_pw 的密码: Collecting openpyxl   Downloading https://files.pythonhosted.org/package...
下载DjangoUeditor,发现不支持Python3.x,经过修改,在Python2.X(测试环境为Python2.6.6 + django-1.6.5 和Python2.7.8 + django-1.6.5)和Python3.X(测试环境为Python3.4.1 + django-1.6.5)下完美支持 下载DjangoUeditor,发现不支持Python3.x,经过修改,在Python2.X(测试环境为Python2.6.6 + django-1.6.5 和Python2.7.8 + django-1.6.5)和Python3.X(测试环境为Python3.4.1 + django-1.6.5)下完美支持 下载DjangoUeditor,发现不支持Python3.x,经过修改,在Python2.X(测试环境为Python2.6.6 + django-1.6.5 和Python2.7.8 + django-1.6.5)和Python3.X(测试环境为Python3.4.1 + django-1.6.5)下完美支持
工作需要要处理excel中的数据。使用VBA是选择之一,百度一下发现使用python处理数据也是很火。就跟风学习了一下。 python 读写excel文件主要有xlrd和xlwt两个库。还有新的openpyxl。这里介绍最新openpyxl使用pip install openpyxl 即可。如果出现SSL错误,可以使用国内的镜像网站: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl 如果还是出现错误,就重复几次。 公司的防火墙限制,无法使用pip在线安装,开墙的审批流程较为繁琐,故采取离线安装的方式。 步骤如下: 1、官网https://pypi.org/project/jdcal/#files下载jdcal安装压缩包; 2、 官网https://pypi.org/project/et_xmlfile/1.0.1/#files下载xmlfile安装压缩包; 3、官网https://pypi.org/project/openpyxl/2.6.4/#files下载openpyxl
1. 语法差异:在 Python 3.x 中,一些语法和函数已经改变了,使用方法也不再兼容。 2. 字符串编码:Python 3.x 使用Unicode编码,而 Python 2.x 使用的是 ASCII 编码。 3. 整数除法:在 Python 3.x 中,除法的结果总是浮点数,而在 Python 2.x 中,除法的结果取决于操作数的类型。 4. 异常处理: Python 3.x 中的异常处理语法与 Python 2.x 中的不同。 5. 库和模块的改变: Python 3.x 中有一些库和模块已经不再支持,同时也有一些新的库和模块加入。 总的来说, Python 3.x 更加现代,并且更加注重简洁易用性,但是它不向后兼容 Python 2.x 的代码。因此,如果要继续维护一个项目,最好使用 Python 2.x。