【Python】操作文档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$pipinstallxlrdCollectingxlrdDownloadingxlrd-2.0.1-py2.py3-none-any.whl (96kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━96.5/96.5kB18.1kB/seta0:00:00Installingcollectedpackages: xlrdSuccessfullyinstalledxlrd-2.0.1Aion.Liu$pipinstallxlwtCollectingxlwtDownloadingxlwt-1.3.0-py2.py3-none-any.whl (99kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100.0/100.0kB11.9kB/seta0:00:00Installingcollectedpackages: xlwtSuccessfullyinstalledxlwt-1.3.0


🏮2 创建表格&写入数据

实验代码如下:

>>>importxlwt>>># 创建一个表格>>>xlwt.Workbook(encoding="utf8")
<xlwt.Workbook.Workbookobjectat0x105c190f0>>>># 设置表格编码>>>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 $ lltotal 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  563281022:09 python_users.xls


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

🏮3 修改表格样式

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

defbody_style():
# 一、创建一个样式对象,初始化样式 stylestyle=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, or 0x00 through 0x12pattern.pattern_fore_colour=4# 给背景颜色赋值# 三、边框设置borders=xlwt.Borders()  # 创建边框对象,    # .DASHED:虚线;.NO_LINE:没有# 上下左右都添加边框borders.left=1borders.right=1borders.top=1borders.bottom=1# 设置边框颜色borders.left_colour=2borders.right_colour=2borders.top_colour=2borders.bottom_colour=2# 四、位置设置alignment=xlwt.Alignment()
alignment.horz=1# 设置水平位置,0是左对齐,1是居中,2是右对齐alignment.wrap=1# 设置自动换行# 五、设置好之后,全部都加到style上style.alignment=alignmentstyle.font=fontstyle.borders=bordersreturnstyle


🏮4 读取表格

🎈4.1 选项

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

>>>importxlrd>>># 打开文件>>>workbook=xlrd.open_workbook("./python_users.xls")
>>>print(workbook)
<xlrd.book.Bookobjectat0x10867db40>>>># 打印所有的sheet页>>>print(workbook.sheet_names())
['python_study_users']
>>># 根据索引号,打印所有的sheet页>>>print(workbook.sheet_by_index(0))
Sheet0:<python_study_users>>>># 根据索引号,打印所有的sheet页(我打印一个Excel中没有的索引号)>>>print(workbook.sheet_by_index(1))
Traceback (mostrecentcalllast):
File"<stdin>", line1, in<module>File"/usr/local/lib/python3.10/site-packages/xlrd/book.py", line450, insheet_by_indexreturnself._sheet_list[sheetx] orself.get_sheet(sheetx)
IndexError: listindexoutofrange>>># 根据sheet页名称,打印所有的sheet页>>>print(workbook.sheet_by_name("python_study_users"))
Sheet0:<python_study_users>>>># 根据sheet页名称,打印所有的sheet页(我打印一个Excel中没有的sheet名称)>>>print(workbook.sheet_by_name("python_study_users2"))
Traceback (mostrecentcalllast):
File"/usr/local/lib/python3.10/site-packages/xlrd/book.py", line466, insheet_by_namesheetx=self._sheet_names.index(sheet_name)
ValueError: 'python_study_users2'isnotinlistDuringhandlingoftheaboveexception, anotherexceptionoccurred:
Traceback (mostrecentcalllast):
File"<stdin>", line1, in<module>File"/usr/local/lib/python3.10/site-packages/xlrd/book.py", line468, insheet_by_nameraiseXLRDError('No sheet named <%r>'%sheet_name)
xlrd.biffh.XLRDError: Nosheetnamed<'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. 读取整个表foriinrange(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.ncols

print("总列数为:", 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语言」,也是在依葫芦画瓢,有错误之处,还望不吝赐教。


相关文章
|
21天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
89 5
|
1月前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
42 1
|
1月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
30 1
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
42 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
1月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
60 2
|
1月前
|
人工智能 开发者 Python
python读取word文档 | AI应用开发
在RAG系统中,构建知识库时需读取多种外部文档,其中Word文档较为常见。本文介绍如何使用`python-docx`库读取Word文档(.docx格式)中的标题、段落、表格和图片等内容。首先通过`pip install python-docx`安装库,然后利用提供的接口提取所需信息。尽管该库功能强大,但在识别标题样式时需自定义逻辑,并且仅提供图片的URI而非直接加载。示例代码展示了读取文本、识别标题、读取表格及获取图片URI的方法。【10月更文挑战第2天】
80 2
|
1月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
64 0
|
1月前
|
存储 Python
Python实战项目Excel拆分与合并——合并篇
Python实战项目Excel拆分与合并——合并篇
下一篇
无影云桌面