Python办公自动化【Excel写入数据-xlwt、Excel读取数据-xlrd、Excel更新数据-xlutils、Excel设置样式】(一)-全面详解(学习总结---从入门到深化)

简介: Python办公自动化【Excel写入数据-xlwt、Excel读取数据-xlrd、Excel更新数据-xlutils、Excel设置样式】(一)-全面详解(学习总结---从入门到深化)

《从此做表不加班》Excel自动化处理



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


office 家族其实都可以用 VBA 解决自动化的问题,但可能很多人不会用


python 针对 excel 有很多的第三方库可以用,比如 xlwings、xlsxwriter、xlrd、xlwt、pandas、xlsxwriter、win32com、xlutils 等等


这些库可以很方便地实现对 excel 文件的增删改写、格式修改等,当然并不推荐你全部都去学尝试一下,这样时间成本太大了  

类型  xlrd&xlwt&xlutils  XlsxWriter  openpyxl  Excel开放接口
读取 支持  不支持  支持 支持
写入 支持  支持  支持 支持
修改  支持  不支持 支持 支持
xls 支持  不支持 不支持 支持
xlsx  高版本 支持 支持 支持
大文件  不支持 支持 支持 不支持
效率 快  快  超慢
功能  较弱 强大 一般 超强大


xlrd:用于读取 Excel 文件;


xlwt:用于写入 Excel 文件;


xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等


Excel写入数据-xlwt



安装

pip install xlwt


常用方法

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


代码

# Ctrl + ~ 打开控制台
# 输入 pip install xlwt 用于安装第三方模块库
# 导入xlwt模块
import xlwt
# 创建excel
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('电影')
# 往工作薄的单元格增加数据
  # ws.write(row,col) 从0开始记数
  # 增加第1行数据
ws.write(0,0,'影片')
ws.write(0,1,'综合票房')
ws.write(0,2,'票房占比')
ws.write(0,3,'排片场次')
  # 增加第2行数据
ws.write(1,0,'如果声音记不得')
ws.write(1,1,361.57)
ws.write(1,2,33.3)
ws.write(1,3,95371)
# 保存数据
wb.save('./create_data/01_电影数据.xlsx')


Excel读取数据-xlrd



安装


pip install xlrd  


常用方法与属性

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


代码

# 打开控制台 ctrl+~ 输入命令
# pip install xlrd 安装读取数据的模块
# 导入模块
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(ws1)
# print(ws2)
# 获取单元格的数据
print(f'sheet里面一共有{ws1.nrows}行 {ws1.ncols}列的数据')
# 获取单个单元格
print(f'第1行第2列的值:{ws1.cell_value(0,1)}')
print(f'第1行第2列的值:{ws1.cell(0,1).value}')
print(f'第1行第2列的值:{ws1.row(0)[1].value}')
# 获取多个单元格
print(f'第1行的数据是:{ws1.row_values(0)}')
print(f'第1列的数据是:{ws1.col_values(0)}')
# 获取所有单元格
for r in range(ws1.nrows):
  for c in range(ws1.ncols):
    print(f'第{r}行 第{c}列的数据是: {ws1.cell_value(r,c)}')


Excel更新数据-xlutils



更新数据的方案:


1、获取源数据重新写一遍

2、直接在源数据上写新的数据(推荐)


安装


pip install xlutils


常用方法与属性

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


代码

# pip install xlutils
import xlrd
from xlutils.copy import copy
# 读取文件
read_wb = xlrd.open_workbook('./create_data/01_电影数据.xlsx')
# 复制文件
wb = copy(read_wb)
# 修改数据
# 获取当前excel里面的第1个工作薄
ws =  wb.get_sheet(0)
# 增加数据
ws.write(5,0,'保家卫国')
ws.write(5,1,113)
ws.write(5,2,5.1)
ws.write(5,3,490)
# 增加统计信息
read_ws = read_wb.sheet_by_index(0)
count = 0
for r in range(1,read_ws.nrows):
  num = read_ws.cell_value(r,3)
  # 累加排场次数
  count += num
# 增加一个新的工作薄
new_ws = wb.add_sheet('汇总数据')
new_ws.write(0,0,'总排片次数')
new_ws.write(0,1,count)
# 保存数据
wb.save('./create_data/02_电影数据_new.xlsx')


Excel设置样式



常用方法与属性

函数名&属性 含义
xlwt.Font()  创建字体样式
font.name  设置字体类型
font.colour_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 设置左边框粗细
细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双
线:6,细点虚线:7
border.right 设置右边框粗细
细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双
线:6,细点虚线:7
border.top 设置上边框粗细
细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双
线:6,细点虚线:7
border.bottom 设置下边框粗细
细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双
线:6,细点虚线:7
border.left_colour  设置左边框颜色
border.right_colour 设置右边框颜色
border.top_colour  设置上边框颜色
border.bottom_colour  设置下边框颜色
xlwt.Pattern()  创建背景颜色样式
pattern.pattern  设置背景样式
xlwt.XFStyle()  设置总样式对象,用于应用到单元格
xlwt.easyxf()  设置总样式对象


代码


字体

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
ft = xlwt.Font()
ft.name = '微软雅黑' # 设置字体
ft.height = 30*20 # 设置字体大小
ft.bold = True # 设置字体加粗
ft.underline = True # 设置字体下划线
ft.italic = True # 设置字体斜体
ft.colour_index = 2 # 设置字体颜色
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.font = ft
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/03_excel样式.xlsx')


边框

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
boder = xlwt.Borders()
# 线的种类
# 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
boder.top = 1
boder.bottom = 6
boder.left = 4
boder.right = 5
# 线的颜色
boder.top_colour = 3
boder.bottom_colour = 4
boder.left_colour = 7
boder.right_colour = 6
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.borders = boder
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/04_excel样式_边框.xlsx')


内容位置

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
align = xlwt.Alignment()
# 设置 上下位置 0 上 1 中 2 下
align.vert = 1
# 设置 左右位置 1左 2中 3右
align.horz = 2
# 设置单元格大小
# 如果要设置单元格高度,需要开启设置高度属性
ws.row(2).height_mismatch= True # 开启设置高度权限
ws.row(2).height = 50 *256
ws.col(2).width = 50 * 50
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.alignment = align
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
# 保存数据
wb.save('./create_data/05_excel样式_内容位置.xlsx')


背景颜色

import xlwt
# 创建一个excel文件
wb = xlwt.Workbook()
# 创建一个工作薄
ws = wb.add_sheet('数据')
# 设置样式
# 创建一个字体样式
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
 # 实心颜色
pattern.pattern_fore_colour = 6
# 创建一个样式对象
style1 =  xlwt.XFStyle()
style1.pattern = pattern
# 通过easyxf()设置样式
style2 = xlwt.easyxf('font:boldon,colour_index 5;align: vert center,horizcenter')
# 增加内容
ws.write(1,1,'吕小布')
ws.write(2,2,'吕小布',style1)
ws.write(3,3,'吕小布',style2)
# 保存数据
wb.save('./create_data/06_excel样式_背景颜色.xlsx')
目录
相关文章
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1月前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
74 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
45 2
|
1月前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
70 3
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
115 2

热门文章

最新文章

推荐镜像

更多