Excel表格

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

excel文档的基本定义

  • 工作薄(workbook)
  • 工作表(sheet)
  • 活动表(active sheet)
  • 行(row): 1,2,3,4,5,6……..
  • 列(column): A,B,C,D……..
  • 单元格(cell): B1, C1

excel文件格式

python高阶学习笔记:1 ​python解析excel格式文件_数据


Python安装excel相关模块

     python对于Excel表格操作的模块有很多种,其中

  • xlrd:对xls、xlsx、xlsm文件进行读操作–读操作效率较高,推荐
  • xlwt:对xls文件进行写操作–写操作效率较高,但是不能执行xlsx文件
  • openpyxl:对xlsx、xlsm文件进行读、写操作–xlsx写操作推荐使用

Python安装openpyxl:

pip install openpyxl

pycharm中选择File | Settings | Project: python2020 | Project Interpreter

python高阶学习笔记:1 ​python解析excel格式文件_赋值_02


操作的excel表格数据

python高阶学习笔记:1 ​python解析excel格式文件_赋值_03


 打开一个excel文档

import openpyxl
# 打开一个excel文档, class 'openpyxl.workbook.workbook.Workbook'实例化出来的对象
wb = openpyxl.load_workbook('wood.xlsx')
print(wb, type(wb))
# 获取当前工作薄里所有的工作表, 和正在使用的表;
print(wb.sheetnames)
print(wb.active)

# 2. 选择要操作的工作表, 返回工作表对象
sheet = wb['Sheet1']
# 获取工作表的名称
print(sheet.title)

# 3. 返回指定行指定列的单元格信息
print(sheet.cell(row=1, column=2).value)
cell = sheet['B1']
print(cell)
print(cell.row, cell.column, cell.value)


# 4. 获取工作表中行和列的最大值
print(sheet.max_column)
print(sheet.max_row)
sheet.title = '学生信息'
print(sheet.title)

# 5. 访问单元格的所有信息
print(sheet.rows)  # 返回一个生成器, 包含文件的每一行内容, 可以通过便利访问.
# 循环遍历每一行
for row in sheet.rows:
    # 循环遍历每一个单元格
    for cell in row:
        # 获取单元格的内容
        print(cell.value, end=',')
    print()

# 6. 保存修改信息
wb.save(filename='wood.xlsx')

python高阶学习笔记:1 ​python解析excel格式文件_赋值_04



将数据写入Excel

新建一个新的工作表(只是还没保存)。

若要指定只写模式,可以指定参数write_notallow=True。一般默认的可写可读模式就可以了。

from openpyxl import Workbook
wb = Workbook()
print(wb.sheetnames) # 提供一个默认名叫Sheet的表
#上述获取sheet的方式已经被sheetnames属性替换了:wb.sheetnames

wb["Sheet"].title = 'Sheet1'  # 直接赋值就可以改工作表的名称
wb.create_sheet('test', index=1)  # 新建一个工作表,指定索引1代表是第二个工作表,index=0就是第一个
wb.remove(wb["Sheet1"])  # 删除某个工作表,同样还可以使用del wb["Sheet1"]
wb.save("wood_test.xlsx")  # 保存excel



sheet=wb["test"]  # 先获取test工作表的操作对象
sheet['A1'] = 'wood'  # 直接给单元格赋值就行
sheet["B4"]=10
sheet["B8"]=20
sheet['B10'] = '=AVERAGE(B4:B8)'  # B10处写入平均值


# 添加一行
row = [11, 12, 13, 14, 15]
sheet.append(row)
# 添加多行
rows = [
    ['ID', 'age1', 'age2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 10],
    [6, 25, 5],
    [7, 50, 10],
]


for value in rows:
    sheet.append(value)  #可以一次添加多行数据,从第一行空白行开始(下面都是空白行)写入。

wb.save("wood_test.xlsx")  # 保存excel

 

python高阶学习笔记:1 ​python解析excel格式文件_python_05



Excel操作总结

  • 导入 openpyxl 模块。
  • 调用 openpyxl.load_workbook()函数。
  • 取得 Workbook 对象。
  • 调用 wb.sheetnames和 wb.active 获取工作簿详细信息。
  • 取得 Worksheet 对象。
  • 使用索引或工作表的 cell()方法,带上 row 和 column 关键字参数。
  • 取得 Cell 对象。
  • 读取 Cell 对象的 value 属性