python openpyxl基本操作

转自: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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值