每日10行代码169:使用xlwings修改excel格式,设置中国式报表
背景:工作上,经常需要从数据库产出报表,由于这种报表需要提交给领导看,所以对格式的要求要比平常高不少,每次设置格式虽然花的时间不算太多,但是长期下来,积少成多,花在格式上的时间就会太多,为了方便调整格式,我写了下面的脚本,主要功能是设置中国式报表,具体为:表格上面有一行合并居中的标题,标题下面左边是查询日期,单位,表格最下面有合计行。
#python3import xlwings as xw
path = r'E:\当前工作\分单位0624b1.xlsx'
wb = xw.Book(path)
sht = wb.sheets['SQL Results']# 开始格式调整# 1. 设置字体大小为14
sht['A1:L17'].font.size = 14
# 2.自动调整行高列宽
sht.autofit('c')# 4.在开始插入两行
if sht['A2'].value is not None:sht.api.Rows(1).Insert()sht.api.Rows(1).Insert()# 5. 输入表头
sht['A1'].value='分单位'
sht['A1'].font.size= 18
sht.range('A1:L1').api.Merge() # 把文字居中
sht['A1'].api.HorizontalAlignment = -4108 sht['A1'].font.name= '黑体'
sht['A2'].value='查询日期:2022年6月24日'
sht['A2'].font.name= '黑体'
sht['A2'].font.size= 14sht['L2'].value='单位:户,万元'
sht['L2'].api.HorizontalAlignment=-4152 # 把文字右对齐
sht['L2'].font.name= '黑体'
sht['L2'].font.size= 14# 3.把文本转成数字
# sht['c2'].value = int(sht['c2'].value)+0
# sht.range('C2').api.NumberFormatLocal = "0"for i in sht.range('c4:l17'):if i.value is None:i.value=0else:i.value=float(i.value)+0columns_letters = ['C','D','E','F','G','H','I','J','K','L']
for c in columns_letters:sht[c+'18'].value= "=sum({}4:{}17)".format(c,c)for i in range(7,13):sht.range('A3:l18').api.Borders(i).LineStyle=1sht['b18'].value='合计'
sht['h18'].value='=G18/F18*100'
sht['h18'].api.NumberFormatLocal = "0.00"
原格式:
调整后:
主要改动格式如下:
- 合并居中
- 设置单元格的值
- 设置边框
- 自动调整行高列宽
- 设置字体类型和字体大小
- 把文本转数字
- 设置数字的小数位数
- 设置单元格的公式
几个心得体会:
- xlwings可以直接调用windows中的api,所以好多强大 的功能都是通过这个实现。
- 有些关键的操作,要注意放置的位置 ,比插入行。插入行后,有些单元格的位置就变了,这时设置格式的区域就要相应变化,因此为了程序能反复测试运行,最好是在插入行前加一个判断 。
每日10行代码169:使用xlwings修改excel格式,设置中国式报表相关推荐
- 每日10行代码31:爬取人民日报一日的所有文章并存入数据库
今天又增加了存入数据库的功能,至此,爬取人民日报的项目已经结束,下一步我将跟另一篇文章的博主比较下代码,从他那学一些有用的东西. import requests import re from bs4 ...
- 每日10行代码60: 天猫双11自动撸猫得喵币
今年的双11又到了,其中有个游戏挺无脑,就是不断的点猫来获取喵币,我写了个程序帮助我自动撸猫.为了不被后台检测到,我对点击的速度和点击的位置做了一定的随机变动.也正因为加了这点随机性,所以程序看起来稍 ...
- 每日10行代码82:网上购物活动满减凑单计算器
马上又到双十二了,我也在当当网上选了一些书准备下单了,但是有个问题难住我了,我选了9多本价格不同的书,并且领了一张满200减40的券,怎么让我这40块券最大化利用呢,也就是说买的商品要比200块高,但 ...
- 每日10行代码57: appium测试坚果手机出现socket hang up报错的解决
今天在用appium测试的时候,老是出现socket hang up的报错,在网上搜索了下,找到了答案,原来是手机的系统自动把appium需要的后台进程给优化掉了. 解决办法也很简单,就是设置系统,不 ...
- 每日10行代码47:python自动领取淘金币完整代码:基于坐标的模拟点击(2020年10月10日可用)
今天把领淘金币的代码写完了,目前可以适应不同的分辨率,原理是模拟手去点击,就相当于手机上运行个按键精灵. 使用前提: 电脑上配置好了adb工具. 手机打开了开发者选项. 安装了手机淘宝. 手机淘宝是标 ...
- 每日10行代码67:openpyxl指定工作表(sheet)的5种方法
20210330更新了部分内容. 今天工作时,写了一小段代码,大概功能就是比对excel里的数据与数据库里的数据差异,具体实现就是根据excel里维度列(就是sql中where后的部分)到数据库查找相 ...
- 每日10行代码44:用python操作手机点击淘金币
大概需要的基础知识如下: 找到当前程序的package和launch activity adb shell dumpsys window windows | findstr "Current ...
- 每日10行代码65:python操作淘宝做淘金币能量任务(11月7日可用)
淘宝里的淘金币有很多任务可以做,做了之后增加第二天获取的淘金币数量,为了得到更多的淘金币,我做了一个脚本,辅助做任务. import os import time import random impo ...
- 每日10行代码156:Python实现简单的文件加密解密
我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级.有一天,我突然想起来自己是不是可以用Python写一个加密的工具.于是就动手开是写了. ...
最新文章
- ThinkPHP导入第三方类库Vendor
- 【C语言】13-指针和字符串
- 关于 微软必应词典客户端(pc) 的案例分析
- android 常用方法集合
- mui app webview 沉浸式导航_AR实景导航 轻松找到网约车!高崎机场推出网约车专属上车区等便民举措...
- Dapper试用简例
- PHP date_sunrise,php中 date_sunrise函数具有哪些功能呢?
- android field 类型,Gradle buildConfigField 使用Hashmap ArrayList 等类型
- python链表逆序实例_python 单链表翻转的简单示例
- 如何创建计算机的桌面快捷方式,怎样创建桌面快捷方式 创建桌面快捷方式N种方法...
- 见证人人的衰落,讲一句活该
- 2022年第七届IEEE云计算与大数据分析国际会议
- 通过GCN来实现对Cora数据集节点的分类
- c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...
- github远程仓库使用,将本地代码推送到github远程仓库遇到的问题解决方案
- PXE实现批量安装部署(win与linux系统)
- 计算机网络统考在线试题打不开,电脑上通用考试客户端打不开怎么办
- Kubernetes学习之Helm包管理器
- FBTFT driver St7789v LCD 移植简介
- 自动化连接远程服务器并执行指令
热门文章
- 【转载】使用花生壳5.0在自己电脑上搭建FTP服务器
- [cesium] | 建筑光效 | 基于3dtileset的建筑物效果插件 | 支持自定义着色器
- 【u盘量产】u盘不可读,需要安装驱动器。。。等问题解决
- 小米手环NFC读不了卡_售价169元的小米手环4实测 开启你智能生活的第一把钥匙...
- matlab小猪程序,matlab描绘小猪佩奇为字符串
- 做视频影视混剪,这些点要特别注意,做到了能让你收入翻倍
- 从《遇见大咖》看董明珠有感
- 线程取消pthread_cancle、取消选项
- 闲鱼转转跳转APP源码+独立后台管理
- 【Django | 开发】面试招聘信息网站(快速搭建核心需求)