分享

用 Python 批量修改 Excel 文件,只几个模块就可以了

 我本无我O 2018-12-17


介绍采用 xlrd 模块读取 excel 文件、采用 xlwt 模块写入 excel 文件的基本技巧。Python 已有几个模块可处理 word 文档、excel 表格、以及 ppt 演示文稿。首先,汇总列出各模块对不同版本文件的处理能力:

docx 模块:可读取、写入 .docx 文档(不支持.doc文档!!!)

xlrd 模块:可读取 .xls、.xlsx 表格

xlwt 模块:可写入 .xls 表格(不可写入.xlsx文件!!!)

pptx 模块:可读取 .pptx,可写入 .ppt、.pptx(.ppt 演示文稿,只能读取 

pptx  模块自身输出的,对其他方式生成的不支持!!!)


首先介绍 xlrd、xlwt 模块中如何描述 excel 表格。


两个模块对 excel 表格的结构定义都非常直观,和平时使用 excel 表格的习惯基本一致。


总体分为三个级别:工作簿——工作表——单元格。

  • 一个 excel 表格就是一个工作簿。

  • 一个工作簿可包含多个工作表,工作表可通过索引或名字访问。

  • 一个工作表包含多行、多列,行列交叉位置的基本单元就是单元格,内容都写入在单元格中。单元格可通过行、列索引访问。

另外,可对单元格内容的格式进行设置,包括类型(日期等)、字体、颜色等。


下面介绍 xlrd 模块读取 excel 表格。


1、打开表格(工作簿):

wb = xlrd.open_workbook('1.xls') #打开excel表格1.xls


2、读取工作表:

  • wb.sheets() 返回工作表(sheet)实例构成的 list,可通过索引读取工作表

  • ws = wb.sheet_by_name('xxx')  通过名字打开工作簿

  • ws = wb.sheet_by_index(i) 通过编号(索引,从0开始)打开工作表


3、读取单元格内容:

注意 xlrd 读取 excel 工作簿的行、列索引都是从 0 开始。

  • row = ws.row_values(i, ca, cb)  读取第 i 行中 [ca, cb) 列内容,返回 list。注意不含第 cb 列

  • col = ws.col_values(i, ra, rb) 读取第 i 列中 [ra, rb) 行内容,返回 list。注意不含第 rb 行

  • cell= ws.cell_value(r, c)  读取第 i 行第 j 列单元格内容


4、单元格数据格式转换:

  • cell = xlrd.xldate_as_datetime(cell,0)  对 excel 的日期格式单元格,xlrd 读入的是浮点数,可通过 xldate_as_datetime() 转为 datetime.datetime 日期格式实例。

  • cell = xlrd.xldate_as_tuple(cell,0) 转为日期

tuple(year,month,day,hour,min,second),注意 1≤cell≤60 时,xldate_as_tuple() 报错 XLDateAmbiguous,也即 1900-3-1 之前的日期无法转为 tuple。


下面介绍 xlwt 模块写入 excel 表格。


1、新建表格(工作簿):

wb = xlwt.Workbook() 

新建一个空的表格,用于写入


2、新建工作表:

ws = wb.add_sheet('Sheet1') 

在表格中建立 Sheet1 工作表


3、写入单元格内容:

注意 xlwt 读取 excel 工作簿的行、列索引也是从0开始。

ws.write(r, c, content, style) 

在 ws 工作簿实例的第 r 行第 c 列单元格中写入内容 content,并按照指定数据格式 style(xlwt.XFStyle 实例)写入(比如日期、字体等)


4、设定单元格数据格式:

mf = xlwt.XFStyle() 

返回用于设定单元格格式的实例


mf.num_format_str = 'yyyy/mm/dd' 

将数字转换为日期格式


mf.font = '宋体' 

设置字体

需在 ws.write() 时指定 style 实例才能生效


5、保存表格:

wb.save('1.xls') 

保存以上表格实例到1.xls

注意只能写入.xls 表格,不能写入.xlsx 表格(写入后无法打开)。


看完了吗,是不是很方便,几天的工作量一下子就可以搞定!


来源|http:///EUrfaog





最新课程招生信息


docker + k8s

此课程为网络直播课程,一共 10 个课时,每周上一个全天,历时两个多月。
附加:录播视频+笔记+除课堂外的答疑时间(7次+)
2019-1-13 开课,
原价 5800 现在周年活动 100 定金抵 800



课程主讲师


GY 老师:

10年一线软件开发经验,先后经历了传统安全公司,以及多家互联网公司;在安全开发方面,曾开发过 Linux 防火墙、web 应用防火墙、Linux 安全内核加固,基于大流量的 Web 安全威胁分析等项目;在互联网公司工作时,曾基于 DPDK 高性能网络开发框架开发过基于全流量的网络流量分析平台和基于 Sflow 网络流量分析平台,基于Golang 开发SmartDNS 等;开发语言也是从C -> python -> golang 的转变过程?现从事基于 K8S 和 Docker在私有云平台建设方面的研发工作;具备丰富的Linux系统开发经验、网络开发经验以及项目管理经验;目前开发工作90+% 都在用 Golang,Golang 是一门简洁、高效、强大且灵活的编程语言。


关于课程的具体内容想要了解的, 扫码加小助手咨询


www.51reboot.com

任何问题扫码咨询

长按扫码可咨询


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多