python办公自动化(Excel)的实例教程
一、读取Excel中的数据
安装
xlrd 只能读取Excel内容
pip install xlrd==1.2.0
xlrd库的open_workbook函数打开Excel文件,并且返回一个Book对象,这个对象代表打开的Excel文件。
通过Book对象得到Excel文件的很多信息,比如 表单数量 和 表单名称
import xlrd book - xlrd.open_workbook('income.xlsx') print(f"表单数量 {book.nsheets}") print(f"表单名称 {book.sheet_names()}")
要读取某个表单里单元格中的数据,必须要先获取表单(sheet)对象
# 表单索引从0开始,获取第一个表单对象 book.sheet_by_index( 0 ) # 获取名为2022的表单对象 book.sheet_by_name('2022') # 获取所有的表单对象,放入一个列表返回 book.sheet()
获取了表单对象后,可根据起其属性得到:
表单行数 nrows
列数 ncols
表单名 name
表单索引 number
# 获取了表单对象后,可以使用cell_value方法,读取指定单元格中的文本内容 sheet.cell_value(rowx=0,colx=0) # 读取指定行所有单元格的内容使用row_values方法,参数为行号,存放在一个列表中返回 sheet.row_value(rowx=0) # 读取指定列所有单元格的内容使用col_values方法,参数为行号,存放在一个列表中返回 sheet.col_value(colx=0)
二、新建Excel,写入数据
创建一个新的Excel并写入数据,需要使用openpyxl库
openpyxl 库可读、写、改,但不支持老版本 Office2003的xls格式
import openpyxl # 创建一个Excel workbook 对象 book = openpyxl.Workbook() # 创建时,会自动产生一个sheet,通过active获取 sh = book.active # 修改当前 sheet 标题为 工资表 sh.title = '工资表' # 保存文件 book.save('信息.xlsx') # 增加一个名为 '年龄表' 的sheet,放在最后 sh1 = book.create_sheet('年龄表-最后') # 增加一个 sheet,放在最前 sh2 = book.create_sheet('年龄表-最前',0) # 增加一个 sheet,指定为第2个表单 sh3 = book.create_sheet('年龄表2',1) # 根据名称获取某个sheet对象 sh = book['工资表'] # 给第一个单元格写入内容 sh['A1'] = '你好' # 获取某个单元格内容 print(sh['A1'].value) # 根据行号列号, 给第一个单元格写入内容, # 注意和 xlrd 不同,是从 1 开始 sh.cell(2,2).value = '白月黑羽' # 根据行号列号, 获取某个单元格内容 print(sh.cell(1, 1).value) book.save('信息.xlsx') 插入行、列 sheet 对象的 insert_rows 和 insert_cols 方法,分别用来插入行和列 删除行、列 sheet 对象的 delete_rows 和 delete_cols 方法,分别用来删除行和列 文字颜色、字体、大小 单元格里面的样式风格(包括颜色、字体、大小、下划线等)都是通过Font对象设定的 import openpyxl # 导入Font对象 和 colors 颜色常量 from openpyxl.styles import Font,colors wb = openpyxl.load_workbook('income.xlsx') sheet = wb['2018'] # 指定单元格字体颜色, sheet['A1'].font = Font(color=colors.RED, #使用预置的颜色常量 size=15, # 设定文字大小 bold=True, # 设定为粗体 italic=True # 设定为斜体 ) # 也可以使用RGB数字表示的颜色 sheet['B1'].font = Font(color="981818") # 指定整行 字体风格, 这里指定的是第3行 font = Font(color="981818") for y in range(1, 100): # 第 1 到 100 列 sheet.cell(row=3, column=y).font = font # 指定整列 字体风格, 这里指定的是第2列 font = Font(bold=True) for x in range(1, 100): # 第 1 到 100 行 sheet.cell(row=x, column=2).font = font # 指定 某个单元格背景色 sheet['A1'].fill = PatternFill("solid", "E39191") # 指定 整行 背景色, 这里指定的是第2行 fill = PatternFill("solid", "E39191") for y in range(1, 100): # 第 1 到 100 列 sheet.cell(row=2, column=y).fill = fill # 在第1行,第4列 的位置插入图片 sheet.add_image(Image('1.png'), 'D1') wb.save('income-1.xlsx')
补充:Excel文件批量合并
工具包
# 导入工具包 import pandas as pd import os
获取文件列表
# 设置文件路径 path = 'C:/Users/yyz/Desktop/python办公技巧/data/数据合并/' # 空列表, 用于存放文件路径 files = [] for file in os.listdir(path): if file.endswith(".xlsx"): files.append(path+file) # 查看列表 files
转换存储数据
# 定义一个空的dataframe data = pd.DataFrame() # 遍历所有文件 for file in files: datai = pd.read_excel(file) datai_len = len(datai) data = data.append(datai) # 添加到总的数据中 print('读取%i行数据,合并后文件%i列, 名称:%s'%(datai_len,len(data.columns),file.split('/')[-1])) # 查看是否全部读取,格式是否出错 # 重置索引 data.reset_index(drop=True,inplace=True)
总结
到此这篇关于python办公自动化(Excel)的文章就介绍到这了,更多相关python办公自动化Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论