Python实现自动化办公

本文介绍如何使用Python进行Excel自动化处理,包括安装xlwt、xlrd和xlutils等库的方法,以及如何利用这些库进行Excel文件的创建、读取、更新和样式设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Excel自动化处理

写入数据-xlwt模块

安装

常用方法

读取数据-xlrd模块

安装

常用方法和属性

更新数据-xlutils

安装

常用方法和属性

代码

excel设置样式

常用方法和属性

代码


Excel自动化处理

办公自动化是将现代办公计算机技术结合起来的一种新型办公方式。

office家族其实都可以用VBA解决自动化的问题。

Python针对Excel有很多第三方库可以使用,比如xlwings、xlsxwriter、xlrd、xlwt、pandas、xlsxwriter、win32com、xlutils等等。

这些库都可以很方便地实现对excel文件的增删改写,格式修改等。当然这些不用全部去学,需要的时间成本太大了。

类型xlrd、xlwt、xlutilsXlsxWriteropenpyxlexcel开放接口
读取×
写入
修改×
xls××
xlsx高版本
大文件×
效率
功能较弱强大一般超强大

写入数据-xlwt模块

安装

pip install xlwt

常用方法

函数名含义
xlwt.Workbook()创建一个新的excel文件
xlwt.add_sheet(sheet_name)创建一个新的工作簿
sheet.write(row,col,data)向单元格中编写数据
workbook.save(path)保存数据到文件

下面我们写一段代码来试试吧

import xlwt
# 注意,文件名称不能和导入的模块名相同
# 创建一个excel
wb = xlwt.Workbook()
# 选择工作簿
sh1 = wb.add_sheet("电影")
# 添加数据
# sh1.write(row,col,"电影名称"),行列都是从0开始
# 增加第一行数据
sh1.write(0,0,"电影名称")
sh1.write(0,1,"综合票房")
sh1.write(0,2,"票房占比")
sh1.write(0,3,"排片场次")
​
# 增加第二行数据
sh1.write(1,0,"你好李焕英")
sh1.write(1,1,1000)
sh1.write(1,2,"33.3")
sh1.write(1,3,"1000")
​
# 保存数据
wb.save("./create_data/01_电影数据.xlsx")

现在就创建了一个excel文件了。

读取数据-xlrd模块

安装

pip install xlrd

常用方法和属性

函数名/属性含义
xlrd.open_workbook(path)打开一个文件
workbook.nsheets获取工作簿数量
workbook.sheets()获取所有工作簿
workbook.sheet_name()获取工作簿名
sheet.sheet_by_index(num)获取第num个工作簿
sheet.sheet_by_name(name)根据工作簿名获取
sheet.nrows获取工作簿总行数
sheet.row_values(num)获取指定行数据
sheet.cell(row,col)获取指定单元格
sheet.row(num)[col]获取指定单元格
cell.value获取单元格的值
cell.ctype获取单元格内容的数据类型
sheet.cell_value(row,col)获取指定单元格的值

下面我们写一段代码来试试吧

import xlrd
​
# 打开excel
wb = xlrd.open_workbook("./create_data/01_电影数据.xlsx")
# 读取数据
# 获取工作簿数据
print(f"excel中有{wb.nsheets}个工作簿")
print(f"excel中sheets的名字都有{wb.sheet_names()}")
# 如果有多个工作簿,要操作它,必须先选中
ws1 = wb.sheet_by_index(0)
ws2 = wb.sheet_by_name("电影")
# 获取单元格数据
print(f"sheet中有{ws1.nrows}行,{ws1.ncols}列数据")
# 获取单个单元格
print(f"第二行第二列数据的值是{ws1.cell_value(1,1)}")
print(f"第二行第二列数据的值是{ws1.cell(1,1).value}")
print(f"第二行第二列数据的值是{ws1.row(1)[1].value}")
# 获取多个单元格
print(f"第一行的数据是{ws1.row_values(0)}")
print(f"第一列的数据是{ws1.col_values(0)}")
# 获取整个sheet
for r in range(ws1.nrows):
    for c in range(ws1.ncols):
        # 因为索引是从0开始的,所以将行列加一
        print(f"第{r+1}行第{c+1}列的数据为:{ws1.cell_value(r,c)}")

更新数据-xlutils

更新数据的方案:

  • 获取数据源重新写一遍

  • 直接在原数据上写新数据(推荐)

安装

pip install xlutils

常用方法和属性

函数名含义
xlutils.copy.copy(workbook)复制excel文件

代码

from xlutils.copy import copy
import xlrd
​
# 读取文件
rb = xlrd.open_workbook("./create_data/01_电影数据.xlsx")
# 复制文件
wb = copy(rb)
# 修改数据
# 获取excel中第一个工作簿
ws = wb.get_sheet(0)
# 增加数据
ws.write(4,0,"新增电影")
ws.write(4,1,111)
ws.write(4,2,32)
ws.write(4,3,1110)
# 增加信息
rs = rb.sheet_by_index(0)
count = 0
for r in range(1,rs.nrows):
    num = rs.cell_value(r,3)
    
    # 累加排场次数
    count += int(num)
# 增加一个新的工作簿
new_ws = wb.add_sheet("汇总数据")
new_ws.write(0,0,"总排场次数")
new_ws.write(0,1,count)
# 保存数据
wb.save("./create_data/02_更新电影数据.xlsx")

excel设置样式

常用方法和属性

函数/属性名
xlwt.Font()创建字体样式
font.name设置字体类型
font.color_index设置字体颜色
font.height设置字体大小
font.bold加粗字体
font.underline下划线
font.italic斜体
xlwt.Alignment()设置字体位置样式
alignment.horz设置字体横向位置#1左2中3右
alignment.vert设置字体纵向位置#0上1中2下
row.height_mismatch设置是否开启行高(True为开启)
row.height设置单元格行高,值为256*像素点
col.width设置单元格宽度,值为256*像素点
xlwt.Borders()设置边框样式
border.left设置左边框粗细
border.right设置右边框粗细
border.left_color设置左边框颜色
xlwt.Background()设置背景颜色
xlwt.XFStyle()设置总样式对像,用于应用到单元格
xlwt.easyxf()是指总样式对象

代码

import xlwt
​
# 创建一个文件
wb = xlwt.Workbook()
# 创建一个工作簿
ws = wb.add_sheet("数据")
# 设置样式
ft = xlwt.Font()
ft.name = "楷体"    # 字体样式
ft.height = 20*20   # 字体大小
ft.bold = True  # 字体加粗
ft.underline = True # 下划线
ft.italic = True # 斜体
ft.colour_index = 2 # 设置字体颜色
# 创建样式对象
style1 = xlwt.XFStyle()
style1.font = ft
# 增加内容
ws.write(0,0,"唐僧")
ws.write(1,1,"孙悟空",style1)
# 保存数据
wb.save("./create_data/03_excel样式练习.xls")

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值