python docx 表格样式修改 Package not found at ‘*.docx‘; “no style with name ‘Table Grid‘“

做一个小demo的时候遇到了几个和docx有关的问题,简记如下。

使用python包docx进行doc文件编写的时候,如果想插入一个style为’Table Grid’的表格,那么就先新建一个空文档’test.docx’,然后在同目录的test.py下写如下代码并运行:

import docx 

doc = docx.Document('test.docx') 

table=doc.add_table(rows=3, cols=4)
table.style = doc.styles["Table Grid"]

doc.save('test.docx') 

这时候会遇到第一个问题,报错如下:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    doc = docx.Document('test.docx')
  File "D:\Anaconda3\lib\site-packages\docx\api.py", line 25, in Document
    document_part = Package.open(docx).main_document_part
  File "D:\Anaconda3\lib\site-packages\docx\opc\package.py", line 116, in open
    pkg_reader = PackageReader.from_file(pkg_file)
  File "D:\Anaconda3\lib\site-packages\docx\opc\pkgreader.py", line 32, in from_file
    phys_reader = PhysPkgReader(pkg_file)
  File "D:\Anaconda3\lib\site-packages\docx\opc\phys_pkg.py", line 31, in __new__
    "Package not found at '%s'" % pkg_file
docx.opc.exceptions.PackageNotFoundError: Package not found at 'test.docx'

这是因为这是个空文档,文档里啥都没有导致的,我们打开test.docx,在里面敲几个空格然后删掉,重新执行就不会报这个错了,可以参考这篇博客。然而会报另一个错:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    table.style = doc.styles["Table Grid"]
  File "D:\Anaconda3\lib\site-packages\docx\styles\styles.py", line 57, in __getitem__
    raise KeyError("no style with name '%s'" % key)
KeyError: "no style with name 'Table Grid'"

啥意思呢,意思就是没有’Table Grid’这个style,起初以为是我的docx或者是word版本有问题而缺少这个style,就参照网上的这类博客改了好多style,然而都报同样的错。

后来参考上一个bug的解决思路,感觉问题可能出在我的word文档里没有出现过’Table Grid’的style的表格。
我们都知道word里面的表格是可以设计表格样式的,而且word内置了许多样式,我立马查了下’Table Grid’是什么意思,百度翻译给的结果是“表格网格”,我打开word随便插个表格立马就明白了,各位请看:
在这里插入图片描述
内置样式的第一个的名字就是“网格型”,我打赌五毛钱英文版的word这里显示的就是“Table Grid”。我给我新建的表格选了这个样式,然后删掉,然后代码就可以正常运行了。

表格修改样式

对于默认的样式比如“Table Grid”,我们怎么修改呢?或者在用docx插入表格的时候我们不想用代码去设置各种单元格格式,该怎么统一修改style呢?答案是直接在word里改“Table Grid”的格式。

右键修改表格样式
在这里插入图片描述
然后“将格式应用于”这里可以选择若干我们要编辑的对象,比如首末行、首末列等等。在这里插入图片描述
选好编辑对象后,下面有一些选项用于修改边框、字体、背景、线条、对齐等等,很方便
在这里插入图片描述
左下角格式里还有更多选项可以选择,还可以选择应用于当前文档还是所有文档。
在这里插入图片描述

编辑完这些之后,我往这个test.docx里插入的所有style为“Table Grid”的表格都是我这里设计好的样式了,比如我把表头背景设为蓝色,取消了左右边框,后面所有插入的表格都是这样子的了。是不是很方便很机智!?完美实现了我想要的功能!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值