pytthon3--excel的处理(xlrdopenpyxl)
Posted guoyucong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytthon3--excel的处理(xlrdopenpyxl)相关的知识,希望对你有一定的参考价值。
1、安装模块;
pip install xlrd # xlrd模块既可以处理2003版本之前的excel表格 xls,也可以处理新版本表格 xlsx; 但是 只能读取数;
pip install openpyxl # openpyxl可以读,可以写,但是不支持老版本的excel文档;
2、表单处理 --- 读数据 (xlrd模块);
前置条件:
import xlrd
book = xlrd.open_workbook("income.xlsx")
sheet = book.sheet_by_index(0)
操作文件截图:
文档操作:
获取所有sheet名称: book.sheet_names()
获取所有sheet数量: book.nsheets ,如: print(book.nsheets)
通过sheet索引获取表单 : sheet = book.sheet_by_index(0) # 获取到需要的 表单对象;
通过sheet名称获取表单 : sheet = book.sheet_by_name("2018") # 获取到需要的 表单对象;
表格操作:
3.1、获取表单名称:print(sheet.name)
3.2、获取表单索引:print(sheet.number)
3.3、获取表单行数:print(sheet.nrows)
3.4、获取表单列数:print(sheet.ncols)
3.5、获取A1表格数据:print(sheet.cell_value(rowx=0,colx=0)) # 默认是浮点数; 可以加 "int" 得到整数:int(sheet.cell_value(rowx=0,colx=0))
3.6、获取一整行数据: print(sheet.row_values(rowx=0))
3.7、获取第一行的第二列及以后的数据:print(sheet.row_values(rowx=0,start_colx=1,end_colx=None)) ; # None参数可以省略,变成:sheet.row_values(rowx=0,start_colx=1)
3.8、获取一张列数据: print(sheet.col_values(colx=1))
3.9、获取第2列的第2行到第11行数据:print(sheet.col_values(colx=1,start_rowx=1,end_rowx=10))
3.10、计算表格“2017”中数字的和:
sheet = book.sheet_by_name("2017")
incomes = sheet.col_values(colx=1,start_rowx=1)
print("2017年收入为:{}".format(int(sum(incomes))))
3、表单处理 --- 写数据(openpyxl);
前置条件:
import openpyxl
# 创建一个 excelworkbook对象;
book = book = openpyxl.Workbook()
# 创建时,会自动产生一个sheet,通过actcive获取到这个 表单(sheet);
sheet = book.active
# 修改当前 sheet 标题为 省份;
sheet.title = "省份"
# 保存文档;--每次操作完成后一定要保存;
book.save("中国.xlsx")
# 增加一个名为 “四川省” 的sheet,放在最后;
sheet1 = book.create_sheet("四川省--最后")
# 增加一个名为 “北京市” 的sheet,放在最前面;
sheet2 = book.create_sheet("北京市--最前",0)
# 增加一个名为 “广东省” 的sheet,放在第二个位置;
sheet3 = book.create_sheet("广东省",1)
根据以上操作得到结果如下:
# 根据 表单名称 获取某个 sheet 对象;
sheet = book["省份"]
# 给第一个单元格写入数据;
sheet["A1"] = "黑龙江省"
# 获取第一个单元格的内容;
print(sheet["A1"].value)
# 给任意一个单元格赋值;
sheet.cell(2,2,value = "山东省") , 等价后面这个写法:sheet.cell(3,3).value = "山东省2"
命令中表示单元格的数字参数是从 1 开始计数(xlrd是从 0 开始计数);
4、表单处理 --- 数据修改(openpyxl);
import openpyxl
4.1、修改目标单元格数据;
# 加载 excel文件;
book = openpyxl.load_workbook("中国.xlsx")
# 获取 表对象;
sheet = book["省份"]
# 修改目标单元格的数据;
sheet["A1"] = "修改省份"
# 保存修改后的数据;
book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
得到结果如下:
4.2、插入、删除行列;
# 在第2行的位置插入、删除1行;
sheet.insert_rows(2) ; 等价于(插入一行时第二个参数可以省略) : sheet.insert_rows(2,1)
sheet.delete_rows(2) ; 等价于(删除一行时第二个参数可以省略) : sheet.delete_rows(2,1)
# 在第3行的位置插入、删除5行;
sheet.insert_rows(3,5);
sheet.delete_rows(3,5);
# 在第2列的位置插入、删除1列;
sheet.insert_cols(2) ; 等价于(插入一列是第二个参数可以省略) : sheet.insert_cols(2,1)
sheet.delete_cols(2) ; 等价于(插入一列是第二个参数可以省略) : sheet.delete_cols(2,1)
# 在第2列的位置插入、删除5列;
sheet.insert_cols(3,5);
sheet.delete_cols(3,5)
4.3、文字颜色、字体、大小;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.styles import Font,colors
# 加载 excel文件;
book = openpyxl.load_workbook("中国.xlsx")
sheet = book["省份"]
# 设置单元格字体;
sheet["A1"].font = Font(color = colors.RED, # 设置字体为红色;
size = 15, # 设置字体大小;
bold = True, # 设置字体为粗体;
italic = True, # 设置字体为斜体;
)
# 也可以使用RGB数字表示字体颜色;
sheet["A1"].font = Font(color = "981818")
# 设置整行 字体风格, 指定第5行;
font == Font(color = "981818")
for x in range(1,10): # 设置第 1 到 10 列;
sheet.cell(row=5,column=x).font = font
# 设置整列 字体风格, 指定第5列;
font = Font(bold = True)
for x in range(1,10): # 设置第 1 到 10 行;
sheet.cell(row=x, column = 5).font = font
# 保存设置;
book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
4.4、单元格背景色;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.styles import patternfill
# 加载 excel文件;
book = openpyxl.load_workbook("中国.xlsx")
sheet = book["省份"]
# 设置某个单元格背景色;
sheet["A1"].fill = Patternfill("solid","E39191")
# 设置整行背景色, 指定第6行;
fill = PatternFill("solid","E39191")
for x in range(1,10): #设置第 1 到 10列;
sheet.cell(row=6,column=x).fill = fill
# 保存设置;
book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
4.5、插入图片;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.drawing import Image
# 加载 excel文件;
book = openpyxl.load_workbook("中国.xlsx")
sheet = book["省份"]
# 在第2行,第3列 的位置插入图片;
sheet.add_image(Image("pic.png"),"C2")
# 保存设置;
book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
以上是关于pytthon3--excel的处理(xlrdopenpyxl)的主要内容,如果未能解决你的问题,请参考以下文章