更新了第28课文档

pull/15/head
jackfrued 2020-10-20 00:39:12 +08:00
parent 9f08196c0e
commit 49085b3774
1 changed files with 79 additions and 15 deletions

View File

@ -4,37 +4,101 @@
Excel是Microsoft微软为使用Windows和macOS操作系统开发的一款电子表格软件。Excel凭借其直观的界面、出色的计算功能和图表工具再加上成功的市场营销一直以来都是最为流行的个人计算机数据处理软件。当然Excel也有很多竞品例如Google Sheets、LibreOffice Calc、Numbers等这些竞品基本上也能够兼容Excel至少能够读写较新版本的Excel文件当然这些不是我们讨论的重点。掌握用Python程序操作Excel文件可以让日常办公自动化的工作更加轻松愉快而且在很多商业项目中导入导出Excel文件都是特别常见的功能。
Python操作Excel需要三方库的支持如果要兼容Excel 2007以前的版本也就是`xls`格式的Excel文件可以使用三方库`xlrd`和`xlwt`前者用于读Excel文件后者用于写Excel文件。如果使用较新版本的Excel即操作`xlsx`格式的Excel文件可以使用`openpyxl`库当然这个库不仅仅可以操作Excel还可以操作其他基于Office Open XML的电子表格文件。
Python操作Excel需要三方库的支持如果要兼容Excel 2007以前的版本也就是`xls`格式的Excel文件可以使用三方库`xlrd`和`xlwt`前者用于读Excel文件后者用于写Excel文件。如果使用较新版本的Excel即操作`xlsx`格式的Excel文件可以使用`openpyxl`库当然这个库不仅仅可以操作Excel还可以操作其他基于Office Open XML的电子表格文件。
### 安装和使用openpyxl
可以使用下面的命令来安装`openpyxl`三方库。
下面我们以`xlwt`和`xlrd`为例讲解如何读写Excel文件大家可以先使用下面的命令安装这两个三方库文件。
```Bash
pip install openpyxl
pip install xlwt xlrd -i https://pypi.doubanio.com/simple
```
#### 写Excel文件
#### 读Excel文件
### 使用xlwt和xlrd
#### 读Excel文件
例如在当前文件夹下有一个名为“阿里巴巴2017年股票数据.xlsx”的Excel文件如果想读取并显示该文件的内容可以通过如下所示的代码来完成。
```Python
import xlrd
# 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象工作簿
wb = xlrd.open_workbook('阿里巴巴2017年股票数据.xlsx')
# 通过Book对象的sheet_names方法可以获取所有表单名称
sheetname = wb.sheet_names()[0]
# 通过指定的表单名称获取Sheet对象工作表
sheet = wb.sheet_by_name(sheetname)
# 通过Sheet对象的nrows和ncols属性获取表单的行数和列数
print(sheet.nrows, sheet.ncols)
for row in range(sheet.nrows):
for col in range(sheet.ncols):
# 通过Sheet对象的cell方法获取指定Cell对象单元格
# 通过Cell对象的value属性获取单元格中的值
value = sheet.cell(row, col).value
# 对除首行外的其他行进行数据格式化处理
if row > 0:
# 第1列的xldate类型先转成元组再格式化为“年月日”的格式
if col == 0:
# xldate_as_tuple函数的第二个参数只有0和1两个取值
# 其中0代表以1900-01-01为基准的日期1代表以1904-01-01为基准的日期
value = xlrd.xldate_as_tuple(value, 0)
value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日'
# 其他列的number类型处理成小数点后保留两位有效数字的浮点数
else:
value = f'{value:.2f}'
print(value, end='\t')
print()
# 获取最后一个单元格的数据类型
# 0 - 空值1 - 字符串2 - 数字3 - 日期4 - 布尔5 - 错误
last_cell_type = sheet.cell_type(sheet.nrows - 1, sheet.ncols - 1)
print(last_cell_type)
# 获取第一行的值(列表)
print(sheet.row_values(0))
# 获取指定行指定列范围的数据(列表)
# 第一个参数代表行索引,第二个和第三个参数代表列的开始(含)和结束(不含)索引
print(sheet.row_slice(3, 0, 5))
```
相信通过上面的代码大家已经了解到了如何读取一个Excel文件如果想知道更多关于`xlrd`模块的知识,可以阅读它的[官方文档](https://xlrd.readthedocs.io/en/latest/)。
#### 写Excel文件
写入Excel文件可以通过`xlwt` 模块的`Workbook`类创建工作簿对象,通过工作簿对象的`add_sheet`方法可以添加工作表,通过工作表对象的`write`方法可以向指定单元格中写入数据,最后通过工作簿对象的`save`方法将工作簿写入到指定的文件或内存中。下面的代码实现了将5个学生3门课程的考试成绩写入Excel文件的操作。
```Python
import random
import xlwt
student_names = ['关羽', '张飞', '赵云', '马超', '黄忠']
scores = [[random.randint(40, 100) for _ in range(3)] for _ in range(5)]
# 创建工作簿对象Workbook
wb = xlwt.Workbook()
# 创建工作表对象Worksheet
sheet = wb.add_sheet('一年级二班')
# 添加表头数据
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):
sheet.write(0, index, title)
# 将学生姓名和考试成绩写入单元格
for row in range(len(scores)):
sheet.write(row + 1, 0, student_names[row])
for col in range(len(scores[row])):
sheet.write(row + 1, col + 1, scores[row][col])
# 保存Excel工作簿
wb.save('考试成绩表.xlsx')
```
#### 单元格样式
#### 读Excel文件
#### 公式计算
### 简单的总结
其他操作Excel文件的三方库如`openpyxl`大家有兴趣可以自行了解。掌握了Python程序操作Excel的方法可以解决日常办公中很多繁琐的处理Excel电子表格工作最常见的就是将多个数据格式相同的Excel文件合并到一个文件以及从多个Excel文件或表单中提取指定的数据。本章例子中使用的Excel文件大家可以从我的百度云盘链接中进行下载地址<https://pan.baidu.com/s/1rQujl5RQn9R7PadB2Z5g_g>提取码e7b4。
> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。
>