openpyxl的使用
这个库作用:
专门处理Excel2007以上产生的xlsx文件,xls和xlsx之间容易。
注意:如果文字编码是“gb2312”,读取后就会显示乱码,请先转换成Unicode
Excel文件三个对象
workbook:工作簿,一个excel文件包含多个sheet
sheet:工作表,如“sheet1”,“sheet2”等
cell:单元格,存储数据对象
openpyxl使用
1.创建一个workbook
wb = Workbook()
2.打开已有的workbook
wb= load_workbook('file_name.xlse')
3.打开sheet
1)通过名字
ws = wb["frequency"] 或者 ws2 = wb.get_sheet_by_name("frequency")
2)不知道名字用index
sheet_names = wb.get_sheet_names() #获取所有的工作表
ws = wb.get_sheet_by_name(sheet_names[index]) # index 为0 为第一张表
或者调用正在运行的工作表
ws = wb.active 或者 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表
活动表表名wb.get_active_sheet().title
4.新建sheet(工作表)
ws1 = wb.create_sheet() #默认插在后面
ws2 = wb.create_sheet(0) #插入开头
注意:在创建表的时候系统自动命名,依次为sheet1,sheet2等
ws.title = "New Title " # 修改表名称
简化写法 ws = wb.create_sheet(title = "Pi")
5 .读取单元格
1)索引直接获取
c = ws[‘A1’] #如果不存在,将会在A4单元格新建一个。
2)通过cell()获取
d = ws.cell(row = 4 ,column = 2) #通过行和列读取
d = cell(‘A4’)
6.写入单元格
1)ws[A3] = 4444
2)ws.cell(row = 4, column = 2).value = 'test'
3)ws.cell(row = 4, column = 2, value = 'test')\
7. 访问多个单元格
1)cell_range = ws ['A1' : 'C5'] #切片方式获取
2)get_cell_collection() #读取所有单元格数据
8.按照行,列操作
1)逐行读取
ws.iter_rows(range_string = None,row_offset = 0, colume_offset =0) #返回一个生成器,获取多个单元格
for row in ws.iter_rows('A1:C2'):
for cell in row:
print(cell)
2)迭代所有的行和列
ws.rows #迭代读取行row
ws.columns #迭代读取列column
3)直接读取所有的行或者列
print (rows[n]) #显示第n行数据
print (columns[n] ) #显示第n列数据
9.逐行写,添加一行到当前最底部
1)如果是list,将list从头到尾顺序添加。
append([‘This is A1’, ‘This is B1’, ‘This is C1’])
2)如果是dict,按照相应的键添加相应的键值。
append({‘A’ : ‘This is A1’, ‘C’ : ‘This is C1’})
append({1 : ‘This is A1’, 3 : ‘This is C1’})
10.通过公式计算产生写入值
ws["A1"] = "=SUM(B1:C1)"
11.显示有多少张表
wb.get_sheet_names()
wb.title
wb.max_row
wb.max_column
12.获取列号的字母
from openpyxl.utils import get_column_lettes
for x in range(1,len(record) +1) :
col = get_column_letter(x) #默认x从1开始
ws.cell('%s%s' %(col,i)).value =x
13.通过列字母获取多个excel数据块
cell_range = "E3:{0}28".format(get_column_letter(bc_col))
ws["A1"] = "=SUM(%s)"%cell_range
14.excel文件时gbk编码,读入时先要编码为gbk,在解码为unicode,在编码为utf-8
cell_value.encode('gbk').decode('gbk').encode('utf8')
15.保存文件
wb.save('file_name.xlsx') # 如果存在,则覆盖源文件
写入示例1:写单文件
from openpyxlimport Workbook
wb = Workbook()
# 激活 worksheet
ws = wb.active
# 数据可以直接分配到单元格中
ws['A1'] =42
# 可以附加行,从第一列开始附加
ws.append([1, 2, 3])
# Python 类型会被自动转换
import datetime
ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")
# 保存文件
写Excel示例-2:同时操作多个工作簿
fromopenpyxl importWorkbook
fromopenpyxl.utils importget_column_letter
wb =Workbook()
dest_filename ='empty_book.xlsx'
ws1 =wb.active
ws1.title ="range names"
for row inrange(1, 40):
ws1.append(range(600))
ws2 =wb.create_sheet(title="Pi")
ws2['F5'] =3.14
ws3 =wb.create_sheet(title="Data")
forrow inrange(10, 20):
forcol inrange(27, 54):
_ =ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
print(ws3['AA10'].value)
wb.save(filename=dest_filename)
wb.save("sample.xlsx")
感谢分享,本文原文链接地址为 :
https://blog.csdn.net/test_soy/article/details/79714858