背景:工作上,经常需要从数据库产出报表,由于这种报表需要提交给领导看,所以对格式的要求要比平常高不少,每次设置格式虽然花的时间不算太多,但是长期下来,积少成多,花在格式上的时间就会太多,为了方便调整格式,我写了下面的脚本,主要功能是设置中国式报表,具体为:表格上面有一行合并居中的标题,标题下面左边是查询日期,单位,表格最下面有合计行。

#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"

原格式:

调整后:

主要改动格式如下:

  1. 合并居中
  2. 设置单元格的值
  3. 设置边框
  4. 自动调整行高列宽
  5. 设置字体类型和字体大小
  6. 把文本转数字
  7. 设置数字的小数位数
  8. 设置单元格的公式

几个心得体会:

  1. xlwings可以直接调用windows中的api,所以好多强大 的功能都是通过这个实现。
  2. 有些关键的操作,要注意放置的位置 ,比插入行。插入行后,有些单元格的位置就变了,这时设置格式的区域就要相应变化,因此为了程序能反复测试运行,最好是在插入行前加一个判断 。

每日10行代码169:使用xlwings修改excel格式,设置中国式报表相关推荐

  1. 每日10行代码31:爬取人民日报一日的所有文章并存入数据库

    今天又增加了存入数据库的功能,至此,爬取人民日报的项目已经结束,下一步我将跟另一篇文章的博主比较下代码,从他那学一些有用的东西. import requests import re from bs4 ...

  2. 每日10行代码60: 天猫双11自动撸猫得喵币

    今年的双11又到了,其中有个游戏挺无脑,就是不断的点猫来获取喵币,我写了个程序帮助我自动撸猫.为了不被后台检测到,我对点击的速度和点击的位置做了一定的随机变动.也正因为加了这点随机性,所以程序看起来稍 ...

  3. 每日10行代码82:网上购物活动满减凑单计算器

    马上又到双十二了,我也在当当网上选了一些书准备下单了,但是有个问题难住我了,我选了9多本价格不同的书,并且领了一张满200减40的券,怎么让我这40块券最大化利用呢,也就是说买的商品要比200块高,但 ...

  4. 每日10行代码57: appium测试坚果手机出现socket hang up报错的解决

    今天在用appium测试的时候,老是出现socket hang up的报错,在网上搜索了下,找到了答案,原来是手机的系统自动把appium需要的后台进程给优化掉了. 解决办法也很简单,就是设置系统,不 ...

  5. 每日10行代码47:python自动领取淘金币完整代码:基于坐标的模拟点击(2020年10月10日可用)

    今天把领淘金币的代码写完了,目前可以适应不同的分辨率,原理是模拟手去点击,就相当于手机上运行个按键精灵. 使用前提: 电脑上配置好了adb工具. 手机打开了开发者选项. 安装了手机淘宝. 手机淘宝是标 ...

  6. 每日10行代码67:openpyxl指定工作表(sheet)的5种方法

    20210330更新了部分内容. 今天工作时,写了一小段代码,大概功能就是比对excel里的数据与数据库里的数据差异,具体实现就是根据excel里维度列(就是sql中where后的部分)到数据库查找相 ...

  7. 每日10行代码44:用python操作手机点击淘金币

    大概需要的基础知识如下: 找到当前程序的package和launch activity adb shell dumpsys window windows | findstr "Current ...

  8. 每日10行代码65:python操作淘宝做淘金币能量任务(11月7日可用)

    淘宝里的淘金币有很多任务可以做,做了之后增加第二天获取的淘金币数量,为了得到更多的淘金币,我做了一个脚本,辅助做任务. import os import time import random impo ...

  9. 每日10行代码156:Python实现简单的文件加密解密

    我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级.有一天,我突然想起来自己是不是可以用Python写一个加密的工具.于是就动手开是写了. ...

最新文章

  1. ThinkPHP导入第三方类库Vendor
  2. 【C语言】13-指针和字符串
  3. 关于 微软必应词典客户端(pc) 的案例分析
  4. android 常用方法集合
  5. mui app webview 沉浸式导航_AR实景导航 轻松找到网约车!高崎机场推出网约车专属上车区等便民举措...
  6. Dapper试用简例
  7. PHP date_sunrise,php中 date_sunrise函数具有哪些功能呢?
  8. android field 类型,Gradle buildConfigField 使用Hashmap ArrayList 等类型
  9. python链表逆序实例_python 单链表翻转的简单示例
  10. 如何创建计算机的桌面快捷方式,怎样创建桌面快捷方式 创建桌面快捷方式N种方法...
  11. 见证人人的衰落,讲一句活该
  12. 2022年第七届IEEE云计算与大数据分析国际会议
  13. 通过GCN来实现对Cora数据集节点的分类
  14. c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...
  15. github远程仓库使用,将本地代码推送到github远程仓库遇到的问题解决方案
  16. PXE实现批量安装部署(win与linux系统)
  17. 计算机网络统考在线试题打不开,电脑上通用考试客户端打不开怎么办
  18. Kubernetes学习之Helm包管理器
  19. FBTFT driver St7789v LCD 移植简介
  20. 自动化连接远程服务器并执行指令

热门文章

  1. 【转载】使用花生壳5.0在自己电脑上搭建FTP服务器
  2. [cesium] | 建筑光效 | 基于3dtileset的建筑物效果插件 | 支持自定义着色器
  3. 【u盘量产】u盘不可读,需要安装驱动器。。。等问题解决
  4. 小米手环NFC读不了卡_售价169元的小米手环4实测 开启你智能生活的第一把钥匙...
  5. matlab小猪程序,matlab描绘小猪佩奇为字符串
  6. 做视频影视混剪,这些点要特别注意,做到了能让你收入翻倍
  7. 从《遇见大咖》看董明珠有感
  8. 线程取消pthread_cancle、取消选项
  9. 闲鱼转转跳转APP源码+独立后台管理
  10. 【Django | 开发】面试招聘信息网站(快速搭建核心需求)