用 Python 处理 Excel 文件
admin
2023-07-30 20:44:49
0

0x00. 前言

最近工作中有个处理 Excle 数据的需求,正好拿 Python 来练练手。简单搜了下,发现一个好网站:www.python-excel.org(可能需要爬墙头,请自理~),网站中介绍了几种开源的 Excel 处理框架,本文选择了排在第一位的openpyxl。


python-excel.org

0x01. 使用

虽然是一个开源工具,它却拥有详细的文档参考,打不开也没关系,文章末尾会给出 PDF 格式下载链接。下面就来介绍该工具的基本使用。

使用环境

  • Mac OS X 10.11.2
  • Python 2.7.11

安装

如果你使用 Mac 或者 Linux 系统,那么安装将特别简单:

$ pip install openpyxl

有同学会问,如果没有 pip 或 windows 系统咋办啊?简单!可以从这里下载源码安装。下载并解压后,进入到解压目录,执行:

$ python setup.py install

使用

安装完毕后就可以使用了,先简单介绍一下,该工具有几个主要的类:

  • Workbook: 代表一个 Excel 文件(工作簿)。
  • Worksheet: 代表 Excel 文件中的一个工作表。
  • Cell: 代表一个单元格。

好了,知道了这几个类的含义后,使用就比较简单了:

a) 创建 Excel

from openpyxl import Workbook

# 创建 Excel 对象
wb = Workbook()

# 保存成文件
wb.save(\'test.xlsx\')

这样就创建了一个空的、名为test.xslx的工作簿。

b) 加载一个已存在的 Excel

from openpyxl import load_workbook

wb = load_workbook(\'test.xlsx\')

这样就加载了一个名为test.xlsx的 Excel 文件。

c) 操作工作表

# 获取 Excel 打开后默认的工作表
default_ws = wb.active

# 创建一个新工作表
new_ws = wb.create_sheet(title=\'new ws\')

# 修改工作表的名称
new_ws.title = \'modified ws\'

# 迭代工作表中所有行
for row in new_ws.iter_rows():
    pass

d) 操作单元格

# 给 “F5” 单元格赋值
new_ws[\'F5\'] = \'test\'
new_ws[\'F5\'].value = \'hello\'
# 取出 “F5” 单元格的值
print(new_ws[\'F5\'].value)

# 得到单元格对象
from openpyxl.cell import Cell

c = Cell(new_ws)
f5 = new_ws[\'F5\']

以上就是对 Excel对象的基本操作了,但在使用中,我们总会有各种需求,比如:在一些行后添加数据,我们使用new_ws.iter_rows()返回的是一个 tuple 对象,这时,我们需要用list()函数先将其转化为 list 对象,添加数据后再写入文件:

from openpyxl.cell import Cell

for row in new_ws.iter_rows():
    data = list(row)
    c = Cell(new_ws)
    c.value = \'hello\'
    data.append(c)

    other_ws.append(data)

0x02. 小结

openpyxl 的相当强大,还支持操作 Excel 中的图表等高级功能。由于工作中没有用到,就没有去研究,感兴趣的同学可以去看看。

最后分享一点使用 Python 开源工具的小技巧:

由于 Python 中动态语言,有时候很难判断一个方法返回的数据类型,我们可以经常使用type()方法将返回值的类型打印出来,方法我们对返回值的使用和处理。

0x03. 附:

openpyxl 参考文档:http://pan.baidu.com/s/1c1w77sk

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...