前面讲了很多关于xlwings的根本操作,将这些操作组合起来,灵活贯穿,才是算咱们使用这个库到位了。下面从网上找一些数据来制作。

选取一个表格

从查找成果里随机取得一张表格类型的图片。

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

请先思考下这个图片该如何完成


分析结构

简略分析,从上到下的看,这格表格首要分为两格部分,标题区域和数据区域。

标题区域每一行都不一样,数据区域有重复的行。

根据图片显现,能够设置表格的形状为8列14行。数据区域限制为Range((1,1),(14,8))

绘制表头

先将前三行合并

ws.range((1, 1), (1, 8)).merge()
ws.range((2, 1), (2, 8)).merge()
ws.range((3, 1), (3, 8)).merge()

设置对齐方式

笔直居中是默认的,所以不需要额定设置

榜首行水平居中,第二行靠右,第三行靠左

ws.range((1, 1), (1, 8)).api.HorizontalAlignment = -4108
ws.range((2, 1), (2, 8)).api.HorizontalAlignment = -4152
ws.range((3, 1), (3, 8)).api.HorizontalAlignment = -4131

填入文字

将图片上的文字填入对应的单元格区域

ws.range((1, 1), (1, 8)).value = 出库单 **
ws.range((2, 1), (2, 8)).value = ‘_____ ___ ___
ws.range((3, 1), (3, 8)).value = 主管: 库房: 领料人:

设置字型

给榜首行标题列加粗和增大字号

ws.range((1, 1), (1, 8)).api.Font.Bold = True
ws.range((1, 1), (1, 8)).api.Font.Size = 18

设置背景色

经过网上的软件,能够读取原图中的色彩,就能够设置相关的色彩

ws.range((1, 1), (1, 8)).color = ‘#fed966’**
**ws.range((2, 1), (2, 8)).color = ‘#fed966’

目前的显现如下

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

绘制数据区域

数据区域首尾行有区别,其他都一样,金额列有个短线,设置首尾行文字及款式及金额列文字如下。

ws.range((4, 1), (14, 8)).api.HorizontalAlignment = -4108

ws.range((4, 1), (4, 8)).value = [ 出库时刻 , 物料称号 , 类型 , 单位 , 数量 , 单价 , 金额 , 用处或原因 ]
ws.range((14, 1), (14, 2)).merge()
ws.range((14, 1), (14, 2)).value = 算计 **
ws.range((14, 3), (14, 6)).merge()
ws.range((14, 3), (14, 6)).value = 零元整

ws.range((5, 7), (14, 7)).value = ‘ – ‘
ws.range((4, 1), (4, 8)).color = ‘#fed966’
**ws.range((14, 1), (14, 8)).color = ‘#fed966’

当时效果如:

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

设置边框

数据区域是全边框,大表格是粗边框

数据区域设置上边框和内部水平与笔直边框,不需要重复设置下底和左右两边。

ws.range((4, 1), (14, 8)).api.Borders(8).LineStyle = 1
ws.range((4, 1), (14, 8)).api.Borders(11).LineStyle = 1
ws.range((4, 1), (14, 8)).api.Borders(12).LineStyle = 1

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

全区域设置粗框线的四个边界

ws.range((1, 1), (14, 8)).api.Borders(7).LineStyle = 1
ws.range((1, 1), (14, 8)).api.Borders(8).LineStyle = 1
ws.range((1, 1), (14, 8)).api.Borders(9).LineStyle = 1
ws.range((1, 1), (14, 8)).api.Borders(10).LineStyle = 1

ws.range((1, 1), (14, 8)).api.Borders(7).Weight = 4
ws.range((1, 1), (14, 8)).api.Borders(8).Weight = 4
ws.range((1, 1), (14, 8)).api.Borders(9).Weight = 4
ws.range((1, 1), (14, 8)).api.Borders(10).Weight = 4

调整列宽和行高

行高几乎是一致的,设为32

ws.range((1, 1), (14, 8)).row_height = 32

列宽前6格设置为9,后两个格子分别设为11,15

ws.range((1, 1), (14, 8)).row_height = 32
ws.range((1, 1), (1, 6)).column_width = 9
ws.range((1, 7)).column_width = 11
ws.range((1, 8)).column_width = 15

导出后发现离一张A4纸差的还挺远的。你们有打印机的能够直接设置纸张大小和查看打印预览,我没有只好先生产PDF再看。

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

从头增加行高和列宽,大致在50左右能够充满一个页面,再稍调整主管行的空格,使其对其。

如出一辙肯定还要接着调整,但是根本效果已经达到了。

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践

Python 使用xlwings库操作excel的简明实践分享之出库单表格操作实践