Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonDocx:更改一个表的行距会更改所有表中的行距_Python_Openxml_Python Docx - Fatal编程技术网

PythonDocx:更改一个表的行距会更改所有表中的行距

PythonDocx:更改一个表的行距会更改所有表中的行距,python,openxml,python-docx,Python,Openxml,Python Docx,我对pythondocx比较陌生。我试图更改现有文档中表格的行距,但它会更改文档中所有表格的行距 下面是一个最小的、可复制的示例,从头创建一个包含三个表的文档: 来自docx导入文档 从docx.shared导入英寸 从docx.shared导入Pt 从docx.enum.text导入WD_行间距 文件=文件() #要添加到表中的一些示例文本 记录=( (3、‘101’、‘垃圾邮件’), (7,'422,'蛋'), (4,'631','垃圾邮件,垃圾邮件,鸡蛋和垃圾邮件') ) #创建表0 表格

我对pythondocx比较陌生。我试图更改现有文档中表格的行距,但它会更改文档中所有表格的行距

下面是一个最小的、可复制的示例,从头创建一个包含三个表的文档:

来自docx导入文档
从docx.shared导入英寸
从docx.shared导入Pt
从docx.enum.text导入WD_行间距
文件=文件()
#要添加到表中的一些示例文本
记录=(
(3、‘101’、‘垃圾邮件’),
(7,'422,'蛋'),
(4,'631','垃圾邮件,垃圾邮件,鸡蛋和垃圾邮件')
)
#创建表0
表格=文档。添加表格(行=1,列=3)
hdr_cells=表。行[0]。单元格
hdr_单元格[0]。文本='Qty'
hdr_单元格[1]。文本='Id'
hdr_单元格[2]。文本='Desc'
对于记录中的数量、id、描述:
行\单元格=表格。添加\行()。单元格
行\单元[0]。text=str(数量)
行\单元[1]。文本=id
行\单元[2]。text=desc
文档。添加页眉()
#创建表1
表格=文档。添加表格(行=1,列=3)
hdr_cells=表。行[0]。单元格
hdr_单元格[0]。文本='Qty'
hdr_单元格[1]。文本='Id'
hdr_单元格[2]。文本='Desc'
对于记录中的数量、id、描述:
行\单元格=表格。添加\行()。单元格
行\单元[0]。text=str(数量)
行\单元[1]。文本=id
行\单元[2]。text=desc
#创建表2
表格=文档。添加表格(行=1,列=3)
hdr_cells=表。行[0]。单元格
hdr_单元格[0]。文本='Qty'
hdr_单元格[1]。文本='Id'
hdr_单元格[2]。文本='Desc'
对于记录中的数量、id、描述:
行\单元格=表格。添加\行()。单元格
行\单元[0]。text=str(数量)
行\单元[1]。文本=id
行\单元[2]。text=desc
#打印所有表格的行距
对于索引,枚举中的表(document.tables):
打印(索引、表格、样式、段落格式、行距)
输出:

0 None
1 None
2 None
0 88900
1 88900
2 88900
然后,我尝试仅在最终表格中更改行距:

table=document.tables[2]
table.style.paragration_format.line_space_rule=WD_line_space
table.style.paragration_format.line_间距=Pt(7)
#打印所有表格的行距
对于索引,枚举中的表(document.tables):
打印(索引、表格、样式、段落格式、行距)
输出:

0 None
1 None
2 None
0 88900
1 88900
2 88900
您可以看到它改变了所有表格的行距-它们现在都是7磅(12点是
152400
)。如果我尝试更改其他表格中的重置行间距,则所有表格都会更新为最后要更改的值

以下是我的会话信息:

Session info --------------------------------------------------------------------
Platform: Windows-7-6.1.7601-SP1 (64-bit)
Python: 3.7
Date: 2020-09-21
Packages ------------------------------------------------------------------------
python-docx==0.8.10
reprexpy==0.3.0

这是一个bug还是我做错了什么?

样式就像是一个格式化模板,您只需设置一次,然后应用于任意数量的文档对象,以获得一致的格式。应用该样式的每个对象都会获得相同的格式设置集。当您调整表格样式(所有表格似乎都在共享)时,您将得到您所看到的结果

我认为您要做的是直接在相关表格的段落上设置段落行距。您可以设置一个新的段落样式,如果需要,可以将其应用于这些段落