前面讲了很多关于xlwings的根本操作,将这些操作组合起来,灵活贯穿,才是算咱们使用这个库到位了。下面从网上找一些数据来制作。
选取一个表格
从查找成果里随机取得一张表格类型的图片。
请先思考下这个图片该如何完成
分析结构
简略分析,从上到下的看,这格表格首要分为两格部分,标题区域和数据区域。
标题区域每一行都不一样,数据区域有重复的行。
根据图片显现,能够设置表格的形状为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’
目前的显现如下
绘制数据区域
数据区域首尾行有区别,其他都一样,金额列有个短线,设置首尾行文字及款式及金额列文字如下。
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’
当时效果如:
设置边框
数据区域是全边框,大表格是粗边框
数据区域设置上边框和内部水平与笔直边框,不需要重复设置下底和左右两边。
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
全区域设置粗框线的四个边界
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再看。
从头增加行高和列宽,大致在50左右能够充满一个页面,再稍调整主管行的空格,使其对其。
如出一辙肯定还要接着调整,但是根本效果已经达到了。