操作Excel ,使用第三方库,使用别人写好的代码,
这是使用 openpyxl 操作 2010 版之后的 xlsx 格式。
有些2003经典版是无法使用的,只能使用其他库 比如:xlrd,xlwt 。
其中 tablib 可以都支持,但是它的依赖比较大,使用起来复制,感兴趣的小伙伴可以自行百度
一、 安装 openpyxl
pip install openpyxl
二、导入 openpyxl
import openpyxl
1、打开 excel 文件获取工作簿 (文件内容见最下方 截图 )
# 有一个必填项,可填写 文件的路 径或者 文件对象
wb = openpyxl.load_workbook('D:\datas.xlsx')
print(wb)
2、获取表单(一个excel 文件可以有过个表单)
# 获取所有表单
sheet = wb.worksheets
print(sheet)
# 通过索引获取表单,索引从 0 开始
sheet = wb.worksheets[0]
print(sheet)
# 通过表单名字获取表单.有个问题,之后使用 sheet 后无法 点 出提示
sheet = wb.get_sheet_by_name('Sheet1')
print(sheet)
# 简洁版 通过字典的形式. 问题和上面一样
sheet = wb['Sheet1']
print(sheet)
3、获取单元格数据
1、获取一个单元格 。
获取的数据就是一个普通的字符串或者一个数字。
# 获取某一个单元格的值. cell() 第一个row传行数、第二个column传列数,
# 单元格以 1 开头,和python索引区分
cell = sheet.cell(1, 1).value
print(cell) # url
2、获取 一行/一列 单元格 。
获取有多个数据,多行数据存储一般用,列表、字典、元组。
# 获取一行的数据
cell = sheet[1]
print(cell) # 获取的一个元组,里面包含 单元格的对象 尖括号就是一个对象
# 输出数据 (<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
# 获取一列的数据
cell = sheet['A']
print(cell)
3、获取 多行/多列 单元格 。
得到的数据一般来说是嵌套的数据,比如嵌套的列表等
# 获取所有的行,最简单的方法
data = sheet.rows
data_list = list(data)[1:] # 剔除第一条数据,第一条是标题
# 获取所有数据
data_list = list(sheet.rows)[1:] # 剔除第一条数据,第一条是标题
new_data = [] # 新列表储存数据#
for row in data_list:
# 每一行的数据存储起来 每循环一次清空
row_data = []
# 把 row 里面的数据依次提取出来
for cell in row:
# 把值添加到 row_data 列表中
row_data.append(cell.value)
# 每循环一次,往 new_data 添加一次数据
new_data.append(row_data)
print(new_data)
4、 写操作,写完一定要保存,使用文件后要关闭 (使用写操作运行代码前一定要关闭文件,否则会报错)
# 写
sheet.cell(2, 1).value = '12306'
# 保存 提供保存的路径,不是之前的路径那就是另存为
wb.save(r'D:\datas.xlsx')
# 关闭
wb.close()