python3处理excel

版本:python 3.6.8

所需要的模块
pip3 install openpyxl
import openpyxl

生成工作簿对象
wb = openpyxl.load_workbook(‘example.xlsx’)
wb = openpyxl.load_workbook(‘example.xlsx’)
type(wb)

生成工作表对象
1、获取该工作簿上面的所有工作表的名称
wb.get_sheet_names()
2、生成指定工作表对象
sheet = wb.get_sheet_by_name(‘Sheet1’)
sheet = wb[‘Sheet’]

sheet=wb.get_active_sheet()【在这个版本中出错】
sheet = wb.active

3、获取工作表的属性
3.1获取工作表的总行数、总列数
sheet.get_highest_row()【在这个版本中出错】
sheet.get_highest_column()【在这个版本中出错】
sheet.max_row
sheet.max_column
3.2获取、修改工作表的名称
sheet.title
sheet.title=‘abc’
3.3返回两个生成器,可以通过迭代来访问所有区域内的单元格
sheet.rows
sheet.columns
访问这个生成器方式
方式1:【不适合】
sheet.columns[2]
方式2:
list(sheet.columns)[0]
list(sheet.rows)[0]
方式3:
sheet[“A”]
sheet[1]

单元格:
指定单元格并赋值
方式1:
cell=sheet[‘C1’]
cell.value
sheet[‘A1’]=‘abc’
方式2:
cell=sheet.cell(row=1, column=2)
cell.value
sheet.cell(row=1, column=2).value=‘1000’

for xc in range(1,sheet.max_column):
for xr in range(1,sheet.max_row+1):
print(sheet.cell(row=j,column=i).coordinate, sheet.cell(row=j, column=i).value)

单元格位置信息
cell.row
cell.column
cell.coordinate

单元格的数字转换
from openpyxl.cell import get_column_letter, column_index_from_string【不适合该版本】
from openpyxl.utils import get_column_letter, column_index_from_string
#将列数字转换成列字母表示
get_column_letter(1)
get_column_letter(sheet.max_column)
#将列字母转换成数字
column_index_from_string(‘A’)

访问矩形区域里的单元格
for rowOfCellObjects in sheet[‘A1’:‘C3’]:
for cellObj in rowOfCellObjects:
print(cellObj.coordinate, cellObj.value)

访问A列
for cellObj in sheet[“A”]:
print(cellObj.coordinate,cellObj.value)

for i in list(sheet.columns)[0]:
print(i.coordinate,i.value)

访问第1行
for cellObj in sheet[1]:
print(cellObj.coordinate,cellObj.value)

访问所有单元格
from openpyxl.utils import get_column_letter, column_index_from_string
for rowOfCellObjects in sheet[‘A1’:str(get_column_letter(sheet.max_column))+str(sheet.max_row)]:
for cellObj in rowOfCellObjects:
print(cellObj.coordinate, cellObj.value)

新建excel文件或者叫工作簿
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()
sheet.title
wb.save(‘example_copy.xlsx’)

创建新的sheet
wb = openpyxl.Workbook()
wb.get_sheet_names()
wb.create_sheet()
wb.create_sheet(‘testsheet’)
wb.create_sheet(index=0, title=‘First Sheet’)
wb.get_sheet_names()

删除sheet
wb.remove_sheet(wb.get_sheet_by_name(‘First Sheet’))

设置单元格字体风格
from openpyxl.styles import Font, Style
from openpyxl.styles import Font

函数的参数
size设置字体大小
name字体

italic 字体为斜体
bold 字体加粗

wb=openpyxl.Workbook()
sheet=wb.get_sheet_by_name(‘Sheet’)
sheet[‘A1’]=“abc”
sheet[‘A1’].font=Font(name=‘Times New Roman’,bold=True,size=24)

公式
wbDataOnly = openpyxl.load_workbook(‘writeFormula.xlsx’, data_only=True)
sheet[‘B9’] = ‘=SUM(B1:B8)’

行高、列宽
sheet.row_dimensions[1].height = 70
sheet.column_dimensions[‘B’].width = 20

合并单元格,合并后的单元格地址为A1
sheet.merge_cells(‘A1:D3’)
拆分单元格
sheet.unmerge_cells(‘A1:D3’)

冻结单元格,那么单元格A2上面和左面的所有单元格都会冻结,A2不会
sheet.freeze_panes = ‘A2’

解冻单元格
sheet.freeze_panes =‘A1’
sheet.freeze_panes =None

图表
创建条形图、折线图、散点图和饼图
import openpyxl, os
os.chdir(“C:\”)

wb = openpyxl.Workbook()
sheet = wb.active
for i in range(1, 11): # Create some data in column A
sheet[‘A’ + str(i)] = i

reference是选择哪个区域的数据做图表
refObj = openpyxl.chart.Reference(sheet, min_row = 1, min_col = 1, max_row = 10, max_col = 1)

seriesObj = openpyxl.chart.Series(refObj, title = ‘First series’)

#Barchart是条形图,openpyxl.charts.LineChart()、 openpyxl.charts.ScatterChart()和 openpyxl.charts.PieChart(),创
建折线图、散点图和饼图
chartObj = openpyxl.chart.BarChart()

图表在excel中的名称
chartObj.title = ‘My Chart’
图表在excel中的位置
chartObj.drawing.top = 50 # set the position
chartObj.drawing.left = 100
chartObj.drawing.width = 300 # set the size
chartObj.drawing.height = 200

chartObj.append(seriesObj)

sheet.add_chart(chartObj, ‘C5’)

wb.save(‘sampleChart.xlsx’)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值