登录
首页大数据时代你知道如何用python来处理EXCEL表格吗?
你知道如何用python来处理EXCEL表格吗?
2020-07-27
收藏

大家在工作和生活中经常会遇到处理EXCEL表格的时候,例如将一个EXCEL表格中的内容处理之后复制到另外一个EXCEL表格之中,或者大批量处理EXCEL,无论是哪种情况,如果我们不借助工具,自己一条条去处理的话,估计要耗费不少的时间和经历。今天小编就教大家如何用python处理EXCEL,希望能帮助大家提高效率。

今天处理EXCEL需要用到python的第三方库:openpyxl。

pip install openpyxl安装。

下面来看一下具体步骤:

一、获取EXCEL

1、读取Excel文件

首先导入相关函数

from openpyxl import load_workbook

# 默认可以读写,如果有需要可以指定

write_only和read_only为True

wb = load_workbook('pythontab.xlsx')

默认打开的文件为可读写,若有需要可以指定参数read_only为True。

2、获取工作表--Sheet

# 获得所有sheet的名称

print(wb.get_sheet_names())

# 根据sheet名称获取sheet

a_sheet = wb.get_sheet_by_name('Sheet1')

# 获取sheet名称

print(a_sheet.title)

# 获得当前正在显示的sheet, 也可以用

wb.get_active_sheet()

sheet = wb.active

3、获取单元格

# 获取某个单元格的值,观察EXCEL发现也是先字母再数字的顺序,也就是先列再行

b4 = sheet['B4']

# 分别返回

print(f'({b4.column}, {b4.row}) is {b4.value}') # 返回的数字就是int型

# 除了用下标的方式获取之外,还能使用cell函数, 换成数字,这个表示B2

b4_too = sheet.cell(row=4. column=2)

print(b4_too.value)

4、获取行和列

sheet.rows是生成器, 里面为每一行的数据,每一行又被一个tuple包裹。

sheet.columns类似,但是里面的每个tuple是每一列的数据。

# 由于按行,因此返回顺序为A1. B1. C1

for row in sheet.rows:

for cell in row:

print(cell.value)

# A1. A2. A3这样的顺序

for column in sheet.columns:

for cell in column:

print(cell.value)

通过上述四步的代码我们就能获取所有单元格的数据。

二、将数据写入Excel

1.工作表

首先导入WorkBook

from openpyxl import Workbook

wb = Workbook()

这样,一个新的工作表就建好了,但是还没被保存。

如果需要指定只写模式,我们可以指定参数write_only=True。通常情况下,默认的可写可读模式就行了。

print(wb.get_sheet_names()) # 提供一个默认名称为Sheet的工作表,如果是office2016新建提供默认名称为Sheet1的工作表

# 直接进行赋值就能够更改工作表的名称

sheet.title = 'Sheet1'

# 新建一个工作表,我们可以指定索引,对其在工作簿中的位置进行合理安排

wb.create_sheet('Data', index=1) # 被安排到第二个工作表,index=0代表第一个位置

# 删除某个工作表

wb.remove(sheet)

del wb[sheet]

2.写入单元格

还能使用公式

# 直接给单元格赋值即可

sheet['A1'] = 'good'

# B9处写入平均值

sheet['B9'] = '=AVERAGE(B2:B8)'

注意:若是读取的时候,则需要加上data_only=True,这样读到B9返回的就是数字,假如不加这个参数,返回的就会是公式本身'=AVERAGE(B2:B8)'

3.append函数

能够一次性添加多行数据,从第一行空白行开始写入。

# 添加一行

row = [1 ,2. 3. 4. 5]

sheet.append(row)

# 添加多行

rows = [

['Number', 'data1', 'data2'],

[2. 40. 30],

[3. 40. 25],

[4. 50. 30],

[5. 30. 10],

[6. 25. 5],

[7. 50. 10],

]

注意:append函数只能按行写入。

4.zip()函数

使用zip我们能够按列写入数据

list(zip(*rows))

# out

[('Number', 2. 3. 4. 5. 6. 7),

('data1', 40. 40. 50. 30. 25. 50),

('data2', 30. 25. 30. 10. 5. 10)]

说明一下:

list(zip(*rows)),首先*rows将列表打散,也可以说是填入了若干个参数,zip从每一个列表中提取第1个值并将其组合成一个tuple,再从每一个列表中提取第2个值,再组合成一个tuple,一直到最短的那个列表的最后一个值提取完毕时结束,其他较长列表的在这之后的值会被舍弃,也就相当于,最后的元组个数是由原来每个参数(可迭代对象)的最短长度决定的。例如:现在随便删掉一个值,最短列表长度为2.那么data2那一列的值就会被全部舍弃。

rows = [

['Number', 'data1', 'data2'],

[2. 40],

[3. 40. 25],

[4. 50. 30],

[5. 30. 10],

[6. 25. 5],

[7. 50. 10],

]

# out

[('Number', 2. 3. 4. 5. 6. 7), ('data1', 40. 40. 50. 30. 25. 50)]

最后zip返回的是zip对象,需要再使用list转换下。

以上就是小编今天跟大家分享的如何使用python处理EXCEL表格的基本操作,获取EXCEL和写入EXCEL,希望对于大家大批量处理EXCEL有所帮助。python是一款功能强大的数据分析工具,我们平时工作中的很多事项都可以用python来进行处理。希望python能帮助大家从繁琐的重复性工作中解脱粗来。

数据分析咨询请扫描二维码

客服在线
立即咨询