Python pptx合并表行
我在powerpoint中有一个表,其中(使用其他函数渲染后)每隔一行都保持完全空。我试图通过将每一个空行与它下面的行合并来解决这个问题,如下所示:Python pptx合并表行,python,python-3.x,python-pptx,Python,Python 3.x,Python Pptx,我在powerpoint中有一个表,其中(使用其他函数渲染后)每隔一行都保持完全空。我试图通过将每一个空行与它下面的行合并来解决这个问题,如下所示: def is_empty_row(row): for cell in row.cells: if len(cell.text): return False return True def merge_empty_row(table,index): # Assumes no
def is_empty_row(row):
for cell in row.cells:
if len(cell.text):
return False
return True
def merge_empty_row(table,index): # Assumes no 2 consecutive rows are empty!
row = table.rows[index]
try:
next_row = table.rows[index+1]
except:
return
cell_1 = row.cells[0]
cell_2 = next_row.cells[len(next_row.cells)-1]
cell_1.merge(cell_2)
def fix_tables(document):
ppt = Presentation(document)
for slide in ppt.slides:
for shape in slide.shapes:
if shape.shape_type == MSO_SHAPE_TYPE.TABLE:
for index in range(len(shape.table.rows)):
if is_empty_row(shape.table.rows[index]):
merge_empty_row(shape.table, index)
docname = "".join(document.split(".")[0])
ppt.save(docname+'.out.pptx')
我在模板pptx文件上从Django调用此函数,结果得到以下错误:
Exception Type: XMLSyntaxError at /amas/analysis/1178/report/download/34
Exception Value: Opening and ending tag mismatch: r line 2 and t, line 2, column 11532 (<string>, line 2)
异常类型:XMLSyntaxError at/amas/analysis/1178/report/download/34
异常值:开始和结束标记不匹配:r第2行和t第2行第11532列(,第2行)
有什么想法吗?我的第一选择是避免插入空行。但是,如果由于某种原因无法执行此操作,您可以尝试删除空行,如下所示:
def delete_row(row):
tr = row._tr
tr.getparent().remove(tr)
rows = [table.rows[i] for i in range(len(rows))]
empty_rows = [r for r in rows if row_is_empty(r)]
for row in empty_rows:
delete_row(row)
需要预先识别空行,否则在迭代过程中删除它们会破坏引用(更改行<代码>行[i] < /COD>指向)。我已经设法避免(几乎)总是插入空行,所以我认为我可以这样做。谢谢你的回复!