转自:https://blog.csdn.net/weixin_30982483/article/details/81638736
#coding=utf-8
from openpyxl import load_workbook
需要的包
Name: openpyxl
Version: 2.4.5
#coding=utf-8
from openpyxl improt Workbook # 新建时导入这个
from openpyxl import load_workbook # 读取时导入这个
--------------------------------------- excel----------------------------------------
#新建excel
excel1 = Workbook()
#读取excle文件,存入workbook变量中
workbook = load_workbook(r’c:\test.xlsx’)
保存excel
excel1.save(‘e://1.xlsx’)
---------------------------------------------- sheet------------------------------------------
获取excel中所有工作表的名字 返回一个list
bookNameList = workbook.get_sheet_names()
或者
sheet_list=excel.sheetnames (新)
新建sheet
excel.create_sheet(u’sheet页名称’,index=0) # index不写会自增
print type(sheet)
print u"创建表的表名:", sheet.title #sheet页名称
获取excel中 默认的工作表 最后操作过的sheet
sheet1 = excel.active
通过表名获取指定的工作表
sheet1 = workbook.get_sheet_by_name(u"员工信息表")
sheet1=excel[‘Sheet’](新) #sheet页名字
print type(sheet1)
返回sheet中有数据的最大行数
sheet.max_row
返回sheet中有数据的最小行数
sheet.min_row
返回sheet中有数据的最大列数
sheet.max_column
返回sheet中有数据的最小列数
sheet.min_column
获取工作表中所有的行
all_row = sheet1.rows # 返回一个生成器对象
获取工作表中所有的列
all_col = sheet1.columns # 返回一个生成器对象
获取sheet中所有行对象
for i in sheet1.rows:
print i # type(i) # 一行是一个元组 tuple
或者
for i in sheet1.iter_rows():
print i
获取sheet中所有列对象
for i in sheet1.columns:
print i # type(i) # 一列是一个元组 tuple
或者
for i in sheet1.iter_columns():
print i
一行一行的写入数据
sheet1.append((‘a’,1,2,3,u’中国’)) #向后追加一行数据
获取指定的行 返回一个元组
sheet[‘1’] # sheet[‘行号’]
获取指定的列 返回一个元组
sheet[‘A’] # sheet[‘列号’]
--------------------------------------------cell-----------------------------------------
获取单元格
print sheet1[‘A1’].value #推荐
lisi
b3 = sheet1.cell(coordinate=‘B3’) #不推荐
print u"单元格B3的值:", b3.value
print u"********** 通过行获取单元格 ***************"
获取工作表中所有的行
all_row = sheet1.rows
获取单元格中坐标为C3的单元格
for i in all_row:
for j in xrange(len(i)):
if i[j].coordinate == ‘C3’: # 如果单元格的坐标为A3
print u"单元格中C3的值:", i[j].value
break
print u"********** 通过列获取单元格 ***************"
获取工作表中所有的列
all_col = sheet1.columns
获取单元格中坐标为A2的单元格
for i in all_col:
for j in xrange(len(i)):
if i[j].coordinate == ‘A2’:
# 如果单元格的坐标为A2
print u"单元格中A2的值:", i[j].value
break
获取一个区域
area_sheet = sheet1[‘A1’ : ‘C4’] #元组
print area_sheet
‘’’
for i in area_sheet:
print i
print i[0].value
‘’’
修改单元格的内容
sheet1[‘a1’]=‘aaa’
或者
sheet1[‘A3’].value=u’王五’
或者
sheet1.cell(row=3,column=5).value = ‘TJ’
查看单元格的值
sheet1.cell(row=3,column=5).value
或者
sheet1[‘a1’].value
print u"修改后单元格E3的值", sheet1.cell(row=3,column=5).value
workbook.save(“c:\test.xlsx”) #保存 若没有此句则不会修改成功
写入时间字符串
import time
sheet1[‘c2’].value=time.strftime(’%Y-%m-%d %H:%M:%S’) # 单元格写入当前时间
time.strftime(format[,一个struct_time对象]) 格式化日期
------------------------------------------设置单元格格式
设置excel字体样式、单元格样式等,使用的是openpyxl.styles模块
#设置字体
from openpyxl.styles import Font # 设置字体和边框需要的模块
font1 = Font(name=u’微软雅黑’, size=15, strike=True, color=‘00FF00’, vertAlign=‘subscript’, bold = True, italic = False, underline = ‘none’)
strike删除线
常用的颜色: FF0000红 00FF00绿 0000FF蓝 FFFF00黄 00FFFF青 FF00FF品红 FFFFFF白 000000黑
vertAlign对齐方式 in [‘subscript’(下), ‘baseline’(中), ‘superscript’(上)]
调用字体样式
sheet1[‘A1’]font=font1 #调用字体样式只能对单元格使用 不支持行或区域
sheet[‘a1’].font = Font(color=colors.RED, italic=True)
设置单元格的填充样式或者渐变颜色
from openpyxl.styles import PatternFill
fill1 = PatternFill(fill_type=‘darkDown’, start_color=‘00FF00’, end_color=‘0000FF’)
fill_type 填充单元格图形 in ['darkDown’斜网, ‘lightGray’, ‘darkHorizontal’, ‘gray0625’, 'lightGrid’正网格, ‘lightVertical’, ‘solid’, ‘darkGray’, ‘gray125’, ‘darkGrid’, ‘darkUp’, ‘mediumGray’, ‘darkTrellis’, ‘lightDown’, ‘lightUp’, ‘lightHorizontal’, ‘darkVertical’, ‘lightTrellis’]
调用填充样式颜色
sheet1[‘a1’].fill = fill1
设置单元格的对齐
from openpyxl.styles import Alignment
alignment = Alignment(
horizontal = ‘general’, # 水平:常规
vertical = ‘bottom’, # 垂直:底部对齐
text_rotation = 0, # 文本方向:0度
wrap_text = False, # 自动换行
shrink_to_fit = False, # 缩小字体填充
indent = 0 # 缩进0
)
调用单元格对齐方式
sheet1[‘a1’].alignment=alignment
设置访问限制
protection = Protection(locked = True, hidden = False)