前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你不一定知道这个用 Python 快速设置 Excel 表格边框的技巧

你不一定知道这个用 Python 快速设置 Excel 表格边框的技巧

作者头像
用户1564362
发布2019-12-02 11:19:59
3.5K0
发布2019-12-02 11:19:59
举报
文章被收录于专栏:飞总聊IT

呆鸟云:本篇虽然是 Pandas 百问百答系列的开篇,但其实用的并不是 Pandas,而是 xlwings,但讲的是如何处理 Pandas 输出的 Excel 文件,为啥呢?因为,很多数据分析结果的用户,比如,部门领导、业务人员他们不会用 Python、Jupyter、Pandas,除非你有 BI 系统,否则大部分人都是看 Excel 的,但 Pandas 的 to_excel 函数输出的 xlsx 文件是不带格式的。

给领导或同事看 Excel,总不能一点格式都不设置吧,这也有点太 low 了,呆鸟就习惯把字体设为微软雅黑、字号设为 10,根据内容自适应列宽、短的文字列设置为居中,数字设置成带千分号的,当然还有百分比和日期格式也要设置,但本篇介绍的是如何快速设置边框

这里特别要说一下,别小看这个技巧,呆鸟可是研究了好久才解决,openpyxl、xlwings、xlsxwriter,这几个支持库呆鸟找了一溜够也没找到快速设置边框的方法,之前只好用 for 循环,速度超级慢,让人没法接受,不过好在通过一番研究找到了这个快速设置边框的方式,现在分享给大家,当然,如果有朋友有更好的方式,或者也有类似的方式,还请不吝赐教,至于联系方式,简书也可以,去严小样儿的群里也可以。

文归正传,下面就来看下这个功能是怎么实现的。假设这是一家叫小蜜蜂的超市,这家超市刚刚开业,只有苹果、梨、葡萄这三样产品,领导想看下销售情况,直接用 Pandas 输出是 Excel 这样的:

大家可以看到,这个表有几个问题:

  1. 边框不完整,只有部分单元格有边框
  2. 字体不美观,宋体不如微软雅黑看着好看
  3. 列宽不合适,有的列过宽,有的列窄了,比如日期列,都看不见日期了
  4. 居中未设置,比如产品列该居中,但居左了。

如果不经常处理格式也就罢了,但如果一天几十上百个表,还手动调整就很头疼了,今天就给大家解决第一个问题,快速设置 Excel 文件边框。

  1. 安装 xlwings

直接安装用 pip install xlwings,用 anaconda 的,已经内置了,见下图。

  1. 导入 xlwings
代码语言:javascript
复制
import xlwings as xw
  1. 打开 Excel 文件
代码语言:javascript
复制
# 打开存好的 Excel
app = xw.App() # 设置应用
wb = xw.Book('data/小蜜蜂超市销售报表.xlsx') # 打开文件
ws = wb.sheets['Sheet1']  # 选择表格

注意:要养成良好的习惯,数据文件与程序文件要分开存储,一般数据文件存储在 data 子目录里。

  1. 获取表格行列
代码语言:javascript
复制
last_column = ws.range(1, 1).end('right').get_address(0, 0)[0] # 获取最后一列
last_row = ws.range(1, 1).end('down').row # 获取最后一行

a_range = f'A1:{last_column}{last_row}'  # 生成表格的数据范围 

这里 a_range 输出的范围是 A1:D6,即数据表的整个内容。

  1. 设置 a_range,也就是 A1:D6 的表格边框
代码语言:javascript
复制
# 设置边框
ws.range(a_range).api.Borders(8).LineStyle = 1  # 上边框
ws.range(a_range).api.Borders(9).LineStyle = 1  # 下边框
ws.range(a_range).api.Borders(7).LineStyle = 1  # 左边框
ws.range(a_range).api.Borders(10).LineStyle = 1  # 右边框
ws.range(a_range).api.Borders(12).LineStyle = 1  # 内横边框
ws.range(a_range).api.Borders(11).LineStyle = 1  # 内纵边框

说明:

Borders() 里的参数,详见下表。

边框位置

说明

xlEdgeTop

8

上边框

xlEdgeBottom

9

下边框

xlEdgeLeft

7

左边框

xlEdgeRight

10

右边框

xlInsideHorizontal

12

内横边框

xlInsideVertical

11

内纵边框

LineStyle = 1,这里的 1 指的是边框为实线。

边框样式

说明

Transparent

0

透明

Solid

1

实线

Dashes

2

虚线

Double solid

8

双实线

看看下图,是不是已经有边框了。

到这里还不算完,还要关闭 Excel,保存 xlsx 文件。

代码语言:javascript
复制
# 保存并关闭 Excel
wb.save('data/小蜜蜂超市销售报表.xlsx')
wb.close()
app.quit()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档