Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Python pptx合并表行_Python_Python 3.x_Python Pptx - Fatal编程技术网

Python pptx合并表行

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

我在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 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>指向)。我已经设法避免(几乎)总是插入空行,所以我认为我可以这样做。谢谢你的回复!