【Python】我用xlrd、xlwt操作Excel

简介: 本篇内容介绍了“怎么用Python来操作Excel”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让我带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

🏮1 前言

本篇内容介绍了“怎么用Python来操作Excel”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让我带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

🎈1.1 Excel特点

「什么是Excel」

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。


「Excel优点以及功能」

  • 直观的界面
  • 出色的计算功能和图表工具


Excel最大的功能点是成为了个人计算机数据处理软件。当然他也有很多竞争对手,如:

  • Google文档
  • AceyOffice
  • Ability Spreadsheet
  • EditGrid
  • Framework
  • Lotus 1-2-3
  • Gnumeric
  • KSpread
  • OpenOffice.org Calc
  • Origin
  • Quattro Pro
  • The Cruncher(for MacIntosh)
  • VisiCalc
  • WPS表格
  • LibreOffice

🎈1.2 应用场景

「数据表格」

  1. Excel中的透视表
  2. 表格控件
  3. 进行数据分析
  4. 数据统计分析
  5. 图表
  6. 化工和MATLAB
  7. 其他


「数学运算」

  • 可以快速选择求和、计数、平均值、最大值等等;
  • Excel中的公式、函数非常强大,可以帮助我们完成很多数据整理工作
  • 数据库中数据的呈现和编辑;
  • 数据录入界面;
  • 数据交换(如与Excel交换数据);
  • 数据报表及分发

例如:网站某日统计流量的的均值、区间,以及给出该专题访问量差异的量化标准,借此来作为分析每天访问量的价值、参差不齐、此起彼伏一个衡量的依据。要求得到均值、区间、众数、方差、标准差等统计数据


「简单统计报表」

  • 柱形图,折线图,散点图
  • 条形图、圆柱图、圆锥图、棱锥图等
  • 饼图,圆环图,雷达图
  • 气泡图
  • 其他图
  • 化工中经常用到的Origin和数学中常见的MATLAB

🎈1.3 第三方Excel库

「第三方库简介」

在Python中,有很多的第三方库来操作Excel,本博文主要给予两个三方库的详细介绍。今天也跟着我的步伐,来学习下这两个Excel库xlrdxlwt 。关于这两个库,我们可以在官方提供的库里面搜索看下大体情况:
xlrdhttps://pypi.org/search/?q=xlrd&o=
xlwthttps://pypi.org/search/?q=xlwt&o=

「安装」

Aion.Liu $ pip install xlrd
Collecting xlrd
  Downloading xlrd-2.0.1-py2.py3-none-any.whl(96 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.5/96.5 kB 18.1 kB/s eta 0:00:00Installing collected packages: xlrd
Successfully installed xlrd-2.0.1Aion.Liu $ pip install xlwt
Collecting xlwt
  Downloading xlwt-1.3.0-py2.py3-none-any.whl(99 kB)     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0/100.0 kB 11.9 kB/s eta 0:00:00Installing collected packages: xlwt
Successfully installed xlwt-1.3.0

🏮2 创建表格&写入数据

实验代码如下:

>>> import xlwt
>>> # 创建一个表格
>>> xlwt.Workbook(encoding ="utf8")<xlwt.Workbook.Workbook object at 0x105c190f0>>>> # 设置表格编码
>>> workbook = xlwt.Workbook(encoding ="utf8")>>> # 增加sheet页
>>> worksheet = workbook.add_sheet('python_study_users')>>> # 将数据写入指定单元格
>>> worksheet.write(0,0,"python")>>>>>> worksheet.write(0,1,"张三")>>>>>> worksheet.write(0,3,"男")>>> # 保存数据到文件
>>> workbook.save("python_users.xls")>>>>>> exit()


# 查看已经生成的文件

Aion.Liu $ ll
total 16drwxr-xr-x   3 Aion.Liu  staff    9681022:09 ./drwxr-xr-x  10 Aion.Liu  staff   32081021:59 ../-rw-r--r--   1 Aion.Liu  staff  5632  8 10 22:09 python_users.xls


🔑: 根据上一节课程学习的循环遍历的案例,可以自己先想一下,如何实现一个多行数据的写入?

🏮3 修改表格样式

当然,我们有些时候并不能满足于简单的数据写入,用户在使用时会有一些特殊要求,或者标题有特殊的高度以及宽度的要求,或者标题颜色、字体、样式等。下面我们学习如何设置表格的高度以及宽度以及样式。

def body_style():    # 一、创建一个样式对象,初始化样式 style
    style = xlwt.XFStyle()  # Create Style对象
    # 二、字体风格设置
    font = xlwt.Font()  # Create Font对象
    font.name="SimSun"  # 设置字体类型,宋体
    font.colour_index=4  # 设置字体颜色
    font.height=20*12  # 字体大小,12为字号,20为衡量单位
    font.bont=True  # 设置字体加粗
    font.underline=True  # 下划线
    font.italic=True  # 斜体字
    # 二、背景设置
    pattern = xlwt.Pattern()    pattern.pattern= xlwt.Pattern.SOLID_PATTERN  # May be: NO_PATTERN, SOLID_PATTERN,or0x00 through 0x12    pattern.pattern_fore_colour=4  # 给背景颜色赋值
    # 三、边框设置
    borders = xlwt.Borders()  # 创建边框对象,    # .DASHED:虚线;.NO_LINE:没有
    # 上下左右都添加边框
    borders.left=1    borders.right=1    borders.top=1    borders.bottom=1    # 设置边框颜色
    borders.left_colour=2    borders.right_colour=2    borders.top_colour=2    borders.bottom_colour=2    # 四、位置设置
    alignment = xlwt.Alignment()    alignment.horz=1  # 设置水平位置,0是左对齐,1是居中,2是右对齐
    alignment.wrap=1  # 设置自动换行
    # 五、设置好之后,全部都加到style上
    style.alignment= alignment
    style.font= font
    style.borders= borders
    return style



🏮4 读取表格

🎈4.1 选项

实验代码,我会把一些常用的异常也都打印出来,希望其他学习同学也尝试一下,举一反三。下面是我的实验代码:

>>> import xlrd
>>> # 打开文件
>>> workbook = xlrd.open_workbook("./python_users.xls")>>> print(workbook)<xlrd.book.Book object at 0x10867db40>>>> # 打印所有的sheet页
>>> print(workbook.sheet_names())['python_study_users']>>> # 根据索引号,打印所有的sheet页
>>> print(workbook.sheet_by_index(0))Sheet  0:<python_study_users>>>> # 根据索引号,打印所有的sheet页(我打印一个Excel中没有的索引号)
>>> print(workbook.sheet_by_index(1))Traceback (most recent call last):  File "<stdin>", line 1,in<module>  File "/usr/local/lib/python3.10/site-packages/xlrd/book.py", line 450,in sheet_by_index
    return self._sheet_list[sheetx]or self.get_sheet(sheetx)IndexError: list index out of range
>>> # 根据sheet页名称,打印所有的sheet页
>>> print(workbook.sheet_by_name("python_study_users"))Sheet  0:<python_study_users>>>> # 根据sheet页名称,打印所有的sheet页(我打印一个Excel中没有的sheet名称)
>>> print(workbook.sheet_by_name("python_study_users2"))Traceback (most recent call last):  File "/usr/local/lib/python3.10/site-packages/xlrd/book.py", line 466,in sheet_by_name
    sheetx = self._sheet_names.index(sheet_name)ValueError:'python_study_users2'isnotin list
During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "<stdin>", line 1,in<module>  File "/usr/local/lib/python3.10/site-packages/xlrd/book.py", line 468,in sheet_by_name
    raise XLRDError('No sheet named <%r>'% sheet_name)xlrd.biffh.XLRDError: No sheet named <'python_study_users2'>>>>

🎈4.2 操作sheet页|行

在Python中,使用第三方库操作sheet中的单元格也很方便,如下:

# 1.获取sheet表总函数:sheet.nrowsprint("总行数为:", sheet_1.nrows)# 2.返回由该行中所有的单元格对象组成的列表,列表内是键值对: sheet.row(1)print(sheet_1.row(1))# 或者sheet.row_slice(1)print(sheet_1.row_slice(1))# 3.返回指定行的所有单元格数值组成的列表: sheet.row_values(rowx, start_colx=0,end_colx=None)print(sheet_1.row_values(1))# 4.返回指定行的有效长度:sheet.row_len(rowx)print("返回指定行的有效长度:", sheet_1.row_len(1))print('-'*20)# 5. 读取整个表
for i in range(sheet_1.nrows):    print(sheet_1.row_values(i))



运行结果如下:

总行数为: 4

[text:'物品1', empty:'', number:100.0, text:'EUR 0.1', text:'EUR 0.1']

[text:'物品1', empty:'', number:100.0, text:'EUR 0.1', text:'EUR 0.1']

['物品1', '', 100.0, 'EUR 0.1', 'EUR 0.1']

返回指定行的有效长度: 5

--------------------

['item', 'b', 'PCS', 'UNIT', 'TOTAL']

['物品1', '', 100.0, 'EUR 0.1', 'EUR 0.1']

['物品2', '', 100.0, 'EUR 0.1', 'EUR 0.1']

['物品3', '', 200.0, 'EUR 0.2', 'EUR 0.2']




🎈4.3 操作sheet页|列

在Python中,使用第三方库操作sheet中的单元格也很方便,如下:

# 1. 返回指定sheet表的有效列数:sheet.ncolsprint("总列数为:", sheet_1.ncols)# 2. 返回由该列中所有的单元格对象组成的列表,列表内是键值对:sheet.col(1)print(sheet_1.col(1))# 或者sheet.col_slice(1)print(sheet_1.col_slice(1))# 3. 返回指定列的所有单元格数值组成的列表:sheet.col_values(colx, start_colx=0, end_colx=None)print(sheet_1.col_values(0))  # 带列名
print(sheet_1.col_values(0,1))  # 不带列名
print('-'*20)# 4. 读取全部表
for i in range(sheet_1.ncols):    print(sheet_1.col_values(i))


运行结果如下:

总列数为: 5

[text:'b', empty:'', empty:'', empty:'']

[text:'b', empty:'', empty:'', empty:'']

['item', '物品1', '物品2', '物品3']

['物品1', '物品2', '物品3']

--------------------

['item', '物品1', '物品2', '物品3']

['b', '', '', '']

['PCS', 100.0, 100.0, 200.0]

['UNIT', 'EUR 0.1', 'EUR 0.1', 'EUR 0.2']

['TOTAL', 'EUR 0.1', 'EUR 0.1', 'EUR 0.2']


🏮5 总结

刚开始学习「Python语言」,也是在依葫芦画瓢,有错误之处,还望不吝赐教。


相关文章
|
2天前
|
数据格式 Python
Python代码示例,读取excel表格,将行数据转为列数据。(10)
【7月更文挑战第10天】Python代码示例,读取excel表格,将行数据转为列数据。
17 2
|
2天前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
6 1
|
4天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
微软在 UserVoice 上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将 Python 作为Excel 的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015 年这个点⼦发布以来并没有什么实质性进展,但在 2020 年年末,Python 之⽗ Guido van Rossum 发布推⽂称“退休太无聊了”,他将会加入微软。此事令 Excel ⽤户重燃希望。我不知道他的举动是否影响了 Excel 和 Python 的集成,但我清楚的是,为何⼈们迫切需要结合 Excel 和 Python 的⼒量,⽽你⼜应当如何从今天开始将两者结合起来。总之,这就是本
|
4天前
|
数据可视化 数据挖掘 数据处理
Python对Excel两列数据进行运算【从基础到高级的全面指南】
【7月更文挑战第6天】使用Python的`pandas`库处理Excel数据,涉及安装`pandas`和`openpyxl`,读取数据如`df = pd.read_excel(&#39;data.xlsx&#39;)`,进行运算如`df[&#39;Sum&#39;] = df[&#39;Column1&#39;] + df[&#39;Column2&#39;]`,并将结果写回Excel。`pandas`还支持数据筛选、分组、可视化、异常处理和性能优化。通过熟练运用这些功能,可以高效分析Excel表格。
9 0
|
2月前
|
存储 数据处理 索引
Python操作Excel常用方法汇总
Python操作Excel常用方法汇总
202 0
|
2月前
|
Python
补充python操作excel示例xlwings常用函数
补充python操作excel示例xlwings常用函数
131 0
|
12月前
|
开发者 Python
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
1251 0
|
7月前
|
XML 存储 数据处理
Python 使用XlsxWriter操作Excel
在数据处理和报告生成的领域中,Excel 文件一直是广泛使用的标准格式。为了让 Python 开发者能够轻松创建和修改 Excel 文件,XlsxWriter 库应运而生。XlsxWriter 是一个功能强大的 Python 模块,专门用于生成 Microsoft Excel 2007及以上版本(.xlsx 格式)的电子表格文件。本文将对XlsxWriter进行概述,探讨其主要特点、用法和一些实际应用,并实现绘制各类图例(条形图,柱状图,饼状图)等。
38 0
Python 使用XlsxWriter操作Excel
|
10月前
|
数据采集 数据可视化 Python
Python操作excel写入读取数据,简单实用
Python操作excel写入读取数据,简单实用
|
Python
Python操作excel基础
Python操作excel基础
136 0
Python操作excel基础