Python-处理Excel电子表格(下)

(记录学习第7天)

1、读取表格

1.1从工作簿中读取工作表

1.2从表中取得单元格

1.3 列字母和数字之间的转换

这三部分内容见处理电子表格(上)

1.4从表中取得行和列

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']
print(tuple(sheet['A1':'C3']))#注意输出的顺序

for rowOfCellObjects in sheet['A1':'C3']:
    for cellObj in rowOfCellObjects:
        print(cellObj.coordinate, cellObj.value)
    print('---End of row')

外层for循环遍历这个切片中的每一行,然后针对每一行,内层for循环遍历该行中的每个单元格。

输出结果:
((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>), (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>))
A1 2015-04-05 13:34:02
B1 Apples
C1 73
---End of row
A2 2015-04-05 03:41:23
B2 Cherries
C2 85
---End of row
A3 2015-04-06 12:46:51
B3 Pears
C3 14
---End of row

要访问特定的行或列的单元格的值,可以利用WorkSheet的row和column属性,这些属性必须被list()函数转换为列表,才能使用方括号和索引。

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']
print(list(sheet.columns)[1])

for cellObj in list(sheet.columns)[1]:
    print(cellObj.value)

 运行结果:

(<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.B6>, <Cell 'Sheet1'.B7>)
Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries

2、写入文档

2.1创建并保存Excle文档(工作簿)

openpyxl.Workbook()函数用来创建一个新的空Workbook对象

import openpyxl

wb = openpyxl.Workbook()
print(wb.sheetnames)#输出['Sheet']
sheet = wb.active
sheet.title = 'sheet1'#修改工作表的名称为sheet1
print(wb.sheetnames)#输出['sheet1']
wb.save('test.xlsx')#新工作簿的名称为test.xlsx

 2.2创建和删除工作表

创建:

create_sheet('sheet2')

很有必要判断,如果不判断多次运行,会自动生成其他编号的sheet

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
print(wb.sheetnames)

if 'sheet2' not in wb.sheetnames:
    wb.create_sheet('sheet2')

wb.save('test.xlsx')
print(wb.sheetnames)

删除 :

del wb['sheet2']

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
print(wb.sheetnames)

if 'sheet2' not in wb.sheetnames:
    wb.create_sheet('sheet2')

wb.save('test.xlsx')
print(wb.sheetnames)

if 'sheet2' in wb.sheetnames:
    del wb['sheet2']
    wb.save('test.xlsx')
print(wb.sheetnames)

输出
['sheet1']
['sheet1', 'sheet2']
['sheet1']

2.3将值写入单元格

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet['A1'] = 'hello world!'
print(sheet['A1'].value)
wb.save('test.xlsx')

效果:

9a8ed7328cc841369e524c993511c472.png

2.3设置单元格的字体风格

将A1格子里的字体风格设置成24号,斜体

from openpyxl.styles import Font
import openpyxl

wb = openpyxl.load_workbook('test.xlsx')

if 'sheet1' in wb.sheetnames:
    sheet = wb['sheet1']
    italic24Font = Font(size=24, italic=True)
    sheet['A1'].font = italic24Font
    wb.save('test.xlsx')
else:
    print("'sheet1' does not exist in the workbook.")

 将“你好”输入到工作表sheet1的A2格子中,将字体设置成楷体并加粗

from openpyxl.styles import Font
import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet['A2'] = '你好!'
font1 = Font(name= '楷体', bold=True)
sheet['A2'].font = font1
wb.save('test.xlsx')

2.4公式

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet['A3'] = 100.1
sheet['B3'] = 200.2
sheet['C3'] = 300.3
sheet['D3'] = '=SUM(A3:C3)'
wb.save('test.xlsx')

效果显示:公式也自动放进去了

2.5调整行和列

2.5.1设置行高和列宽

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet.row_dimensions[1].height = 70
sheet.column_dimensions['B'].width = 20
wb.save('test.xlsx')

 效果

 2.5.2合并和拆分单元格

merge_cells()方法用来合并

unmerge_cells()方法用来拆分

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet.merge_cells('A1:B1')
wb.save('test.xlsx')

效果:

2.5.3冻结窗格

freeze_panes属性

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['sheet1']
sheet.freeze_panes = 'A2'
wb.save('test.xlsx')

freeze_panes 的设置冻结的行和列
sheet.freeze_panes = 'A2'行1、列A和列B
sheet.freeze_panes = 'B1'列A
sheet.freeze_panes = 'C1'列A和列B
sheet.freeze_panes = 'C2'行1、列A和列B
sheet.freeze_panes= 'A1'或没有冻结窗格
sheet.freeze_panes = None

 2.6图表

openpyxl.charts.BarChart()创建条形图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值