其他分享
首页 > 其他分享> > openpyxl使用

openpyxl使用

作者:互联网

该文档只浅谈一下openpyxl对表格的基本操作,值得注意的是openpyxl只支持xlsx格式

一,openpyxl的安装  

pip install openpyxl

二,openpyxl对表格各个名称的简介

Workbook:指一个工作簿,也就是一个单独的XLSX文件:

 

 

 三,使用

推荐读文件的时候使用只读模式,速度会快很多;不建议使用可读写模式操作xlsx文件,慢的很;读和写分开会好一些

1,创建不存在的表格

from openpyxl import Workbook 
# 实例化
wb = Workbook(‘文件名称.xlsx’)
# 激活 worksheet  默认是新建床表格成功时sheet表
ws = wb.active
wb.save('文件名称.xlsx')#保存数据

 

 

 2,打开已经存在

import os
import openpyxl
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__),'text.xlsx'))
#以只读的模式打开已有的表格
wb = openpyxl.load_workbook(file_path,read_only=True)

3,创建sheet表

# 方式一:插入到最后(默认)
ws1 = wb.create_sheet("Mysheet1") 
# 方式二:插入到最开始的位置
ws2 = wb.create_sheet("Mysheet2", 0)

4,查看sheet表

# 显示所有表名
print(wb.sheetnames)
['Mysheet2', 'Sheet', 'Mysheet1']
# 遍历所有表
for sheet in wb:
... print(sheet.title)

5,选择sheet表

# sheet 名称可以作为 key 进行索引
#方式一:推荐方式一
ws2 = wb["sheetname"]
#方式二:
ws1 = wb.get_sheet_by_name("sheetname")

6,添加数据


ws = wb["Mysheet2"]
# 第一行输入
ws.append(['A1', 'B1', 'C1'])
 
# 输入内容(10行数据)
for i in range(10):
  A1= datetime.datetime.now().strftime("%H:%M:%S")
  B1= str(time())
  C1= get_column_letter(choice(range(1, 10)))
  ws.append([TIME, TITLE, A_Z])

 

7,获取excel表格的sheet1表格的行数与列数

 

ws = wb['Mysheet2']
# 获取最大行
row_max = ws.max_row

# 获取最大列
con_max = ws.max_column

#获取所有工作行内容
rows = ws.rows

#获取所有工作列内容
columns  = ws.columns

8,获取每一行,每一列

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)

9,单元格访问和赋值

# 方法一
c = ws['A4'].value
# 方法二:row 行;column 列
c = ws.cell(row=4, column=2).value

#赋值
# 方法一
ws['A4'] = 5

# 方法二:row 行;column 列
 ws.cell(row=4, column=2,value=5)
# 通过切片
 cell_range = ws['A1':'C2']
# 通过行(列)
 colC = ws['C']
 col_range = ws['C:D']
#第几行
 row10 = ws[10]
 row_range = ws[5:10]
# 通过指定范围(行 → 行)
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
  for cell in row:
    print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2> 
# 通过指定范围(列 → 列)
 for row in ws.iter_rows(min_col=1, max_row=2, max_col=3)::
   for cell in row:
     print(cell)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>

 

 

 10, 删除工作表

# 方式一
wb.remove(sheet)
# 方式二
del wb[sheet]

 

标签:sheet,wb,openpyxl,cell,ws,使用,row
来源: https://www.cnblogs.com/hhaostudy/p/15973089.html