python操作Excel

该文档仅支持2007版以上的excel(及后缀为:.xlsx的文件)

创建表

OpenPyXl文档说明:https://openpyxl.readthedocs.io/en/latest/index.html

一:安装OpenPyXl

pip install openpyxl

二:创建一个工作簿实例

from openpyxl import Workbook         # 引入模块
wb = Workbook()                       # 创建一个工作簿实例,默认里面有一个表

三:查看薄中所有的表

print(wb.sheetnames)        # 打印薄中所有表的名称,输入的值为列表

openpyxl.workbook.Workbook.sheetnames() 该属性所在的位置

四:创建表

ws1 = wb.create_sheet("Mysheet")                    # 在末尾插入"Mysheet"表 (默认)
ws2 = wb.create_sheet("Mysheet", 0)                 # 插入到指定的位置,0代表第一个位置

openpyxl.workbook.Workbook.create_sheet() 该属性所在的位置

五:获取薄中的表

ws = wb.active          # 获取薄中的第一个表
ws = wb['Sheet']        # 获取名称为‘Sheet’的表

六:修改指定的表

ws.title = "New Title"                        # 更改表的名字
ws.sheet_properties.tabColor = "1072BA"       # 设置表的标签颜色,默认为白色,颜色为RGB代码

七:创建副本

source = wb.active                                               # 创建一个实例
target = wb.copy_worksheet(source)                  # 创建副本(复制)

openpyxl.workbook.Workbook.copy_worksheet() 该属性所在的位置

八:保存薄

wb.save('test.xlsx')            # 保存到文件,path为路径

保存时,若文件存在,则替换里面的内容,若不存在则创建一个新文件

操作表

一:打开一个薄,并获取特定的表

wb = openpyxl.load_workbook('test.xslx',guess_types = True)  # 打开已存在的薄
ws = wb.active

guess_types 是否启用数据类型,默认不启用

data_only 是否带有公式(不明白什么意思)

keep_vba 是否保留视觉基本元素,默认保留

二:操作单元格的值

1.# 直接修改单元格的值
  ws['A1'] = 123
3.# 通过value属性来修改值
  a = ws['A1']
  a.value = 456
3.# 通过函数来修改值
  ws.cell(row = 1,column = 1 ,value = '123')    # 修改第一行第一列单元格的值
  ws.cell(1, 1, '123')     # 修改第一行第一列单元格的值(简写)
4.# 获取单元格的值
    a = ws['A1']
  print(a.value)
  print(ws['A1'].value)

row:行号,column:列号(数字格式),value:要修改的值

三:通过切片访问单元格的范围

print(ws['a1:c4'])     # 打印出范围内的所有单元格
print(ws['a'])         # 打印A列所有活动的单元格
print(ws['a''c'])    # 打印A列到C列所有活动的单元格
print(ws[10])          # 打印所有活动列的第10行
print(ws[1:10])        # 打印所有活动列的1-10行,按行排序(A1,B1,C1....A2,B2,C2....)

四:通过内置函数切片

1.# 第一种方法:按照行排序
  for row in ws.iter_rows(min_row=1, max_row=2, min_col = 2 ,max_col=3):
     for cell in row:
         print(cell)
输入结果:
<Cell '2007测试表'.B1>
<Cell '2007测试表'.C1>
<Cell '2007测试表'.B2>
<Cell '2007测试表'.C2>

openpyxl.worksheet.Worksheet.iter_rows() 该属性所在的位置

2.# 第二种方法:按照列排序
  for col in ws.iter_cols(min_row=1, max_row=2, min_col = 2 ,max_col=3):
      for cell in col:
          print(cell)
输入结果:
<Cell '2007测试表'.B1>
<Cell '2007测试表'.B2>
<Cell '2007测试表'.C1>
<Cell '2007测试表'.C2>

openpyxl.worksheet.Worksheet.iter_cols() 该属性所在的位置

五:遍历所有活动的单元格

print(list(ws.columns))     # 以 列 输出所有活动的单元格
print(list(ws.rows))        # 以 行 输出所有活动的单元格

由于返回的是一个对象,需要通过list转为列表来显示

openpyxl.worksheet.Worksheet.rows() 该属性所在的位置

openpyxl.worksheet.Worksheet.columns() 该属性所在的位置

六:合并拆分单元格

ws.merge_cells('A2:D2')             # 合并单元格
ws.unmerge_cells('A2:D2')           # 拆分单元格

猜你喜欢

转载自blog.csdn.net/q627794135/article/details/80208788