python3行3列文件数据赋值_python3之读写Excel文件(openpyxl)

openpyxl 库可实现读Excel文件、写Excel文件和修改Excel文件,但openpyxl 库不支持老版Office2003 的 xls 格式的Excel文档。

一、安装openpyxl模块

1、Windows下Pythonxx\Lib\site-packages目录下安装命令:

pip install openpyxl

2、验证安装是否成功:

新建python文件,导入import openpyxl,不报错说明模块安装成功

二、读写Excel文档常用方法

1、导入openpyxl模块

import openpyxl

2、创建Excel Book 对象

excelBook = openpyxl.Workbook()

3、创建Excel Book 对象时会自动生成一个sheet对象,可通过active获取sheet对象

# 3、创建Excel Book 对象时会默认生成一个sheet对象,可通过active获取sheet对象

sheetName = excelBook.active # 获取当前 sheet 对象

# sheet对象.title获取sheet对象名称

print("创建Excel Book 对象时会默认生成sheet名称:" , sheetName.title)

4、sheet对象.title修改默认sheet名称

# 4、sheet对象.title修改默认sheet名称

sheetName.title = 'Test'

print("修改后的sheet名称:" , sheetName.title)

5、新建sheet对象

Book对象.creat_sheet(title , index)方法可实现创建sheet功能

title:非必填参数,sheet名称,默认名称为Sheet

index:非必填参数,sheet位置,其中0代表第一个位置,1代表第二个位置,默认最后

excelBook.create_sheet('测试') # 新建测试sheet位于最后

6、获取所有sheet对象

Book对象.sheetnames获取所有sheet对象名称,返回列表

print("所有sheet对象名称:" , excelBook.sheetnames)

7、获取某个sheet对象

Book对象[sheet名称]可获取“sheet名称”的sheet对象

print("获取某个sheet:" , excelBook['Test'])

8、单元格写入内容

A)sheet对象[单元格位置]赋值

sheetName["A1"] = '序号'

B)sheet对象.cell(row , col , value)

row:行号,注意openpyxl行数从1开始

col:列数,注意openpyxl列数从1开始

value:单元格内容

sheetName.cell(2 , 1 , 1) # 第二行,第一列单元格内写入1

C)sheet对象.cell(row , col).value赋值

row:行号,注意openpyxl行数从1开始

col:列数,注意openpyxl列数从1开始

sheetName.cell(3 , 1).value = 2 # 第三行,第一列单元格内写入2

9、获取单元格内容

sheet对象.cell(row , col).value获取单元格内容

row:行号,注意openpyxl行数从1开始

col:列数,注意openpyxl列数从1开始

print("第三行,第一列单元格内容:" , sheetName.cell(3 , 1).value)

10、保存Excel文件

Book对象.save(filename)保存Excel文件,openpyxl修改完Excel文档后需使用save()方法保存,才能确保修改内容保存在Excel文档中

filename:文档路径(含文档名称),必填参数

excelBook.save(excelPath)

11、实例

A)字典型数据写入Excel文档

"""

将字典型数据写入Excel中

"""

# 1、导入openpyxl

import openpyxl

dictData = {

'科比' : 24,

'库里' : 30,

'克莱汤普森' : 11,

'格林' : 23,

'杜兰特' : 35,

'伊戈达拉' : 9,

'乔丹' : 23,

'韦德' : 3,

}

# 2、打开Excel文档

excelPath = "./Excel/openpyxl_excel.xlsx"

excelBook = openpyxl.load_workbook(excelPath)

# 3、新建sheet

sheet = excelBook.create_sheet("NBA球员信息")

# 4、设置标题栏

sheet["A1"] = "球员姓名"

sheet.cell(1 , 2).value = "球员号码"

# 5、设置起始行数

rowNum = 2

# 6、写入内容

for name , number in dictData.items():

# 第一列写入姓名name

sheet.cell(rowNum , 1).value = name

# 第二列写入号码number

sheet.cell(rowNum , 2 , number)

# 行数增加1

rowNum = rowNum + 1

# 7、保存文件

excelBook.save(excelPath)

执行结果:openpyxl_excel.xlsx文件内新建一个“NBA球员信息”sheet,写入如下数据:

B)列表或元组型数据写入Excel文档

若数据在列表或元组,可以使用append()方法在sheet的末尾添加新行,写入数据

"""

列表或元组型数据写入Excel文档:

数据在列表或元组,可以使用append()方法在sheet的末尾添加新行,写入数据

"""

# 1、导入openpyxl

import openpyxl

listData = [

['科比' , 3300],

['库里' , 3200],

['克莱汤普森' , 3100],

['格林' , 3000],

['杜兰特' , 3250],

['伊戈达拉' , 2250],

['乔丹' , 3500],

['韦德' , 2500]

]

tupData = (

('加内特' , 3200),

('邓肯' , 3200),

('诺维斯基' , 3100),

('麦迪' , 3250),

('艾弗森' , 3150)

)

# 2、创建book对象

excelPath = "./Excel/openpyxl_excel.xlsx"

Book = openpyxl.load_workbook(excelPath)

# 3、新建sheet

sheet = Book.create_sheet("NBA球员薪资")

# 4、设置标题栏

sheet["A1"] = "球员姓名"

sheet.cell(1 , 2).value = "球员薪资"

# 5、list型数据写入

for row in listData:

sheet.append(row)

# 6、tuple型数据写入

for row in tupData:

sheet.append(row)

# 7、保存文件

Book.save(excelPath)

执行结果:openpyxl_excel.xlsx文件内新建一个“NBA球员薪资”sheet,写入如下数据:

三、修改Excel文档常用方法

1、修改单元格内容

修改单元格内容方法同单元格写入内容

1、sheet对象[单元格位置]赋值

2、sheet对象.cell(row , col , value)

3、sheet对象.cell(row , col).value赋值

2、插入行、插入列

sheet 对象的 insert_rows() 和 insert_cols() 方法,分别用来插入行和列,语法:

insert_rows(index , amount):

index:必填参数,某行的位置插入;如第二行插入,index即为2

amount:非必填参数,插入行数;插入两行,amount即为2

第二行的位置插入两行,即:第二、第三行为空(新插入行)

insert_cols(index , amount):

index:必填参数,某列的位置插入;如第二列插入,index即为2

amount:非必填参数,插入列数;插入两列,amount即为2

第两列的位置插入两列,即:第二、第三列为空(新插入列)

# 在第3行的位置插入1行

sheet.insert_rows(3)

# 在第4行的位置插入3行

sheet.insert_rows(4,3)

# 在第2列的位置插入1列

sheet.insert_cols(2)

# 在第2列的位置插入3列

sheet.insert_cols(2,3)

3、删除行、删除列

sheet 对象的 delete_rows() 和 delete_cols() 方法,分别用来删除行和列,语法:

delete_rows(index , amount):

index:必填参数,某行的位置删除;如第二行删除,index即为2

amount:非必填参数,删除行数;删除两行,amount即为2

delete_cols(index , amount):

index:必填参数,某列的位置删除;如第二列删除,index即为2

amount:非必填参数,删除列数;删除两列,amount即为2

# 8、删除行和列

# 在第3行的位置删除1行

sheet.delete_rows(3)

# 在第4行的位置删除3行

sheet.delete_rows(4,3)

# 在第2列的位置删除1列

sheet.delete_cols(2)

# 在第2列的位置删除3列

sheet.delete_cols(2,3)

4、单元格样式风格设置

修改单元格样式风格需要导入“from openpyxl.styles import fonts , colors”

"""

单元格样式风格设置

"""

import openpyxl

# 导入 Font 对象 和 colors 颜色常量

from openpyxl.styles import Font,colors

# 1、创建Book对象

excelPath = "./Excel/静夜思.xlsx"

excelBook = openpyxl.load_workbook(excelPath)

# 2、获取sheet对象

sheet1 = excelBook['静夜思']

# 3、设置单元格字体风格

sheet1['A1'].font = Font(color = colors.BLUE , # 设置字体蓝色

size=15, # 设定文字大小

bold=True, # 设定为粗体

italic=True # 设定为斜体

)

# 使用RGB数字表示颜色

sheet1['A2'].font = Font(color="981818") # 设置字体颜色

# 4、设置整行、整列风格

rowFont = Font(color = colors.BLUE)

colFont = Font(color = colors.BLUE)

# 设置行风格:第二行第三四列

for colnum in range(3 , 5): # range(N , M)生成一个列表,从N开始到M-1(不包含M)

sheet1.cell(2 , colnum).font = rowFont

# 设置列风格:第五列第三四行

for rownum in range(3 , 5):

sheet1.cell(rownum , 5).font = colFont

# 保存文件

excelBook.save(excelPath)

执行结果:

5、单元格设置背景色

"""

单元格设置背景色

"""

# 导入 PatternFill

from openpyxl.styles import PatternFill

import openpyxl

# 创建Book对象

path = './Excel/openpyxl_excel.xlsx'

Book = openpyxl.load_workbook(path)

# 获取sheet

sheet = Book.create_sheet('单元格设置背景色')

# 指定单个单元格背景色

sheet['A1'].fill = PatternFill("solid", "E39191")

# 指定 整行 背景色, 此处第2行

fill = PatternFill("solid", "E39191")

for row in range(3, 6): # 第 3 到 5 行

for col in range(2, 5): # 第 2 到 4 列

sheet.cell(row , col).fill = fill

Book.save(path)

执行结果:

5、插入图片

"""

openpyxl 向指定单元格添加图片并修改图片大小,以及修改单元格行高列宽

"""

import openpyxl

from openpyxl.drawing.image import Image

# 创建book对象

path = r'./Excel/openpyxl_excel.xlsx'

book = openpyxl.load_workbook(path)

# 新建sheet

sheet = book.create_sheet('插入图片')

# 读取图片

img = Image('./Excel/Kobe.jpg')

print("图片宽度:" , img.width)

print("图片高度:" , img.height)

print("图片格式:" , img.format)

# 修改列A的列宽

sheet.column_dimensions['A'].width = 62.5

# 修改行1的行高

sheet.row_dimensions[1].height = 230

# 向A1单元格内指定添加图片

sheet.add_image(img, 'A1')

book.save(path)

你可能感兴趣的:(python3行3列文件数据赋值_python3之读写Excel文件(openpyxl))