python 利用python处理excel文件

python 利用python处理excel文件,第1张

python 利用python处理excel文件
    • 1、相关包的安装
    • 2、读取、创建excel文件,遍历内容
    • 3、字体样式调整
    • 4、填充样式调整
    • 5、边框样式调整
    • 6、对齐样式调整
    • 7、excel内添加链接
    • 8、公式添加
    • 9、单元格的合并与拆分

1、相关包的安装

安装openpyxl包指令:

pip install openpyxl

2、读取、创建excel文件,遍历内容
wb=openpyxl.load_workbook('1234.xlsx')

wb=openpyxl.Workbook()

sheet=wb.worksheets[0]
 
sheet=wb['吸入类']

wb.create_sheet(index=0,title='小猪')
 
wb.create_sheet(index=1,title='佩奇')

sheet['A1'].value

import openpyxl
 
wb=openpyxl.load_workbook('1234.xlsx')
sheet=wb.worksheets[0]
for row in sheet.iter_rows():
	for cell in row:
		print(cell.coordinate, cell.value)

sheet['A1'].value='1111111'
sheet.cell(1,1).value='1111111'
sheet.cell(1,1,'111111')

wb.save('1234.xlsx')
3、字体样式调整

from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
font = Font(name='微软雅黑', size=10, bold=False, italic=False, vertAlign=None,
                                        underline='none', strike=False, color='FF000000')

sheet['A1'].font=font
sheet.cell(1,1).font=font
4、填充样式调整

fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000')
sheet.cell(1,1).fill=fill

 {‘gray0625’, ‘lightHorizontal’, ‘darkVertical’, ‘darkGray’, ‘darkDown’, ‘solid’, ‘lightTrellis’, ‘darkHorizontal’, ‘gray125’, ‘lightGray’, ‘lightDown’, ‘lightUp’, ‘mediumGray’, ‘darkUp’, ‘darkGrid’, ‘darkTrellis’, ‘lightVertical’, ‘lightGrid’}
5、边框样式调整

border = Border(left=Side(border_style='dashDotDot',color='9932CC'),
                right=Side(border_style='dashDotDot',color='121212'),
                top=Side(border_style='dashDotDot',color='8B0A50'),
                bottom=Side(border_style='dashDotDot',color='B3EE3A'),)
sheet.cell(5,4).border=border
6、对齐样式调整

alignment = Alignment(horizontal='center',
                    vertical='center',
                    text_rotation=0,
                    indent=0)
 
sheet.cell(5,3).alignment=alignment
7、excel内添加链接

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("https://www.baidu.com", "百度一下")

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("#A1", "跳转到A1")
8、公式添加

sheet['F1']='=SUM(A1:E1)'
9、单元格的合并与拆分

sheet.merge_cells('A1:E1')

sheet.unmerge_cells('A1:E1')

代码汇总:

**# Python *** 作excel(openpyxl)**

# Python *** 作excel
#导入openpyxl库
import openpyxl
from openpyxl import Workbook
import datetime
#修改路径
import dir#自定义dir库,需要自己定义,可以忽略此句
dir.dir()

#读取与选择excel数据
import openpyxl
workbook = openpyxl.load_workbook('data.xlsx')#打开data文件
worksheet = workbook.get_sheet_by_name('Sheet1')#选择data.xlsx中的sheet1表格
row1=[row.value for row in list(worksheet.rows)[0]]#选择表格中的第一行单元格的值
print('第1行值:%s'%(row1))
#第1行值 ['a',1]
col2=[col.value for col in list(worksheet.columns)[1]]#选择第二列单元格的值
print('第2列值',col2)
#第2列值 [1,2,3]
cell_1_2=worksheet.cell(row=1,column=2).value#选择表格第一行第二列的值
print('第1行第2列值',cell_1_2)
#第1行第2列值 1
max_row=worksheet.max_row#显示总行数

读写数据
import dir 
dir.dir()
import openpyxl
workbook = openpyxl.load_workbook('data.xlsx')#打开data文件
worksheet = workbook.get_sheet_by_name('Sheet1')#选择data.xlsx中的sheet1表格
# 以上为读取某个表格数据,以下为创建一个新表格,然后写入上面读取的表格数据
from openpyxl import Workbook
wb = Workbook()
ws=wb.active

for i in range(max_row):
    rowi=[row.value for row in list(worksheet.rows)[i]]#循环选择表格中的第i行单元格的值
    for j in range(max_col):
        aij=rowi[j]#循环选择第i+1,j+1单元格的值
        ws.cell(row=i+1, column=j+1,value=aij)#循环写入数据,value后面输入需要写入的值
#         print(aij)
row6=[i.value for i in list(ws.rows)[5]]#选取ws工作表中的第6行数据,赋值给row6
column4=[i.value for i in list(ws.columns)[3]]#选取ws工作表中的第4列数据,赋值给row4
row6
wb.save('hzx1.xlsx')

新建、读取、写入(openpyxl)
#导入openpyxl库
import openpyxl
from openpyxl import Workbook
import datetime
#修改路径
import dir
dir.dir()

# 新建excel,实例化
wb = Workbook()
# 激活 worksheet,ws变为第一张worksheet
ws = wb.active




#3.写入数据
ws['A1'] = 42
# 方式二:附加行,从第一列开始附加(从最下方空白处,最左开始)(可以输入多行)
ws.append([1, 2, 3])
# 方式三:Python 类型会被自动转换
ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")
#4.创建表(sheet)
# 方式一:插入到最后(default)
ws1 = wb.create_sheet("Mysheet")
# 方式二:插入到最开始的位置
ws2 = wb.create_sheet("Mysheet", )
ws4=wb.create_sheet('New Title')


# 显示所有表名
print(wb.sheetnames)


#5.选择表(sheet),sheet 名称可以作为 key 进行索引
ws3 = wb["New Title”]#选择wb中名为new title的工作表
#或者
ws4 = wb.get_sheet_by_name("New Title")


# 遍历所有表
for sheet in wb:
	print(sheet.title)


#访问单元格
c = ws['A4']#方法一
# 方法二:row 行;column 列
d = ws.cell(row=4, column=2, value=10)#写入数据,value后面输入需要写入的值
# 方法三:只要访问就创建
for i in range(1,101):
    for j in range(1,101):
        ws.cell(row=i, column=j,value=f'{i}{j}')#循环写入数据,value后面输入需要写入的值
wb.save('hzx.xlsx')

根据
max_row=worksheet.max_row#显示总行数
max_col=worksheet.max_column
#3(即行数)
print(max_row,max_col)
for i in range(max_row):
    rowi=[row.value for row in list(worksheet.rows)[i]]#循环选择表格中的第i行单元格的值
    for j in range(max_col):
        aij=rowi[j]#循环选择第i+1,j+1单元格的值
        ws.cell(row=i+1, column=j+1,value=aij)#循环写入数据,value后面输入需要写入的值
#         print(aij)


#2)多个单元格访问
From openpyxl import Workbook
wb = Workbook()
ws=wb.active()
row6=[i.value for i in list(ws.rows)[5]]#选取ws工作表中的第6行数据,赋值给row6
column4=[i.value for i in list(ws.columns)[3]]#选取ws工作表中的第4列数据,赋值给row4


cell_range = ws['A1':'C2']
colC = ws['C']
# 通过行()
col_range = ws['C:D']
row10 = ws[10]
row_range = ws[5:10]
# 通过指定范围(行 行)
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
	for cell in row:
		print(cell)
# 遍历所有 方法一
ws = wb.active
tuple(ws.rows)
# 遍历所有 方法二
tuple(ws.columns)
8.保存数据
wb.save('文件名称.xlsx’)#保存工作薄
改变sheet标签按钮颜色
ws.sheet_properties.tabColor = "1072BA" # 色值为RGB16进制值
# 获得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)







import openpyxl
import d
d.d()
wb=openpyxl.Workbook()
wb=openpyxl.load_workbook('hzx.xlsx')#或者打开已经存在的excel
sheet=wb.worksheets[0]#wb中取第1张表
for row in sheet.iter_rows():
	for cell in row:
		print(cell.coordinate, cell.value)#循环打印单元格名称和单元格里面的值
#下面为在单元格中输入值,3种方法
sheet['A1'].value='1111111'
sheet.cell(1,1).value='1111111'
sheet.cell(1,1,'111111')

wb.create_sheet(index=0,title='小猪')#创建一个名称为小猪的工作表,位于index=0的位置
wb.create_sheet(index=1,title='佩奇')#创建一个名称为佩奇的工作表,位于index=1的位置


 #查询数据(按照excel格式打印)
for row in sheet.iter_rows(min_row=1,max_col=3,max_row=3):  
	print(row)
#方法二,遍历数据(按照行读取每个值,依次打印为一列)
for row in ws1.rows:
    for cell in row:
        print(cell.value,end=“\t”)#可以去掉end参数
(4)根据数字得到字母,根据字母得到数字
#导入安装包
from openpyxl.utils import get_column_letter,column_index_from_string
# 根据列的数字返回字母
print(get_column_letter(2)) # B
# 根据字母返回列的数字
print(column_index_from_string('D')) # 4
删除工作表
# 方式一
wb.remove(sheet)
# 方式二
del wb[sheet]6)矩阵置换
rows = [
['Number', 'data1', 'data2'],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
[5, 30, 10],
[6, 25, 5],
[7, 50, 10]]
list(zip(*rows))
输出如下格式:
[('Number', 2, 3, 4, 5, 6, 7),
 ('data1', 40, 40, 50, 30, 25, 50),
 ('data2', 30, 25, 30, 10, 5, 10)]
10.设置单元格风格
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment#导入设置字体格式,填充,边框,居中的函数
# 下面设置字体
font = Font(name='微软雅黑', size=10, bold=False, italic=False, vertAlign=None,
     underline='none', strike=False, color='FF000000')
sheet['A1'].font=font
sheet.cell(1,1).font=font
#下面的代码指定了,,字体颜色。


直接使用cell的属性,将Font对象赋值给它。


bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True) sheet['A1'].font = bold_itatic_24_font # 下面设置填充 fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000') sheet.cell(1,1).fill=fill # 下面设置边框 border = Border(left=Side(border_style='dashDotDot',color='9932CC'), right=Side(border_style='dashDotDot',color='121212'), top=Side(border_style='dashDotDot',color='8B0A50'), bottom=Side(border_style='dashDotDot',color='B3EE3A'),) sheet.cell(5,4).border=border # 下列为设置53列单元格格式为居中 alignment = Alignment(horizontal='center', vertical='center', text_rotation=0, indent=0) sheet.cell(5,3).alignment=alignment #也是直接使用cell的属性,这里指定垂直居中和水平居中。


除了center,还可以使用等等参数 # 设置B1中的数据垂直居中和水平居中 sheet['B1'].alignment = Alignment(horizontal='center', vertical='center') # 下面插入超链接 sheet.cell(6,5).value='=HYPERLINK("%s","%s")' % ("https://www.baidu.com","百度一下")#插入超链接到65列 sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("#A1", "跳转到A1")#超链接 sheet['F1']='=SUM(A1:E1)'#公式 sheet.merge_cells('A1:E1')#合并 sheet.unmerge_cells('A1:E1')#拆分,拆分后,值回到A1位置 (4)设置行高和列宽 # 第2行行高 sheet.row_dimensions[2].height = 40 # C列列宽 sheet.column_dimensions['C'].width = 30

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/578908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存