怎么在指定标题下面添加新的标题?

有修改后的代码案例吗。可以发我一下吗

@Tiaohh 要取得这样的结果并不简单。我将分析是否有实现这一结果的最佳方法。但您需要使用 table.parent_node.node_type == aw.NodeType.HEADER_FOOTERtable.parent_node.node_type == aw.NodeType.BODY 来查找页眉/页脚或真正的表格。

可以给我一个demo的案例吗

还有我插入的表格内容怎么插入到标题段落后面呢

@Tiaohh 在您提供的代码中,表格位于段落标题下。

我需要插入段落内容后面。标题下面可能有文本段落内容。需要插入到文本段落内容后面

页眉页脚那里有结果啦吗?????

你好有结果了吗????????

@Tiaohh 对不起,给您带来不便。但正如我所说,这不是一种琐碎的方式。当它准备好的时候,我会把任何发现通知你。此外,我需要回答其他论坛线程。根据我们的政策,我们需要在12小时内提供答案。

table_list = []
_tables = _doc.get_child_nodes(aw.NodeType.TABLE, True)
for section in _doc.sections:
    # 读取页眉
    section = section.as_section()
    if section.headers_footers.header_primary:
        heard = section.headers_footers.header_primary.get_text()
        print(f"页眉 (heard) 内容: {heard}")
        table_list.append(heard)

    # 读取正文中的表格
    _tables = section.body.get_child_nodes(aw.NodeType.TABLE, True)
    for table in _tables:
        table = table.as_table()
        for row in table.rows:
            _row = ""
            for cell in row.as_row().cells:
                if _row:
                    _row = (
                        _row
                        + "\t"
                        + cell.as_cell().get_text().strip()
                    )
                else:
                    _row = cell.as_cell().get_text().strip()
            table_list.append(row)
    if section.headers_footers.footer_primary:
        fooot = section.headers_footers.footer_primary.get_text()
        print(f"页脚(fooot) 内容: {fooot}")
        table_list.append(fooot)
    # 读取页脚

_tables = table_list

我处理了一下 我怎么把table_list转换成table对象呢

可以回答我一下吗??????????

@Tiaohh 我认为您需要在表格列表中收集节点,而其中一些元素是字符串。否则,您可能需要收集导入的节点,以获得正确的插入。

for node in table_list:
    para.parent_node.insert_after(node)
    para = builder.insert_paragraph()

请问这个是回答的那个问题。但是我不想改变样式呀

就是页面页脚的问题 如果抽离出来样式就变动了 所以我要怎么做呢

or section in _doc.sections:
# 读取页眉
section = section.as_section()
if section.headers_footers.header_primary:
heard = section.headers_footers.header_primary.get_text()
print(f"页眉 (heard) 内容: {heard}")
headers.append(heard)

                    # 读取正文中的表格
                    _tables = section.body.get_child_nodes(aw.NodeType.TABLE, True)
                    for table in _tables:
                        table_list.append(table)
                        table = table.as_table()
                        for row in table.rows:
                            _row = ""
                            for cell in row.as_row().cells:
                                if _row:
                                    _row = (
                                        _row
                                        + "\t"
                                        + cell.as_cell().get_text().strip()
                                    )
                                else:
                                    _row = cell.as_cell().get_text().strip()
                            # table_list.append(row)
                    if section.headers_footers.footer_primary:
                        fooot = section.headers_footers.footer_primary.get_text()
                        print(f"页脚(fooot) 内容: {fooot}")
                        fooots.append(fooot)帮我看一下这个怎么移动节点信息呢

@Tiaohh 最终结果需要页脚吗?

需要需要页面和页脚的。。。。

最终结果需要页面页脚。顺序 页面表格页脚

@Tiaohh 我们可以这样做吗?

for table in _tables:
    if table.get_ancestor(aw.NodeType.BODY):
        i = _tables.index(table)
        temp = _tables[i]
        _tables[i] = _tables[i - 1]
        _tables[i - 1] = temp

还可使用 para = para.parent_node.append_child(imported_table) 在段落后设置内容

以下是我的完整测试代码:

header_list = ["APPENDICES"]
doc_main = aw.Document("111.docx")
paragraphs = doc_main.get_child_nodes(aw.NodeType.PARAGRAPH, True)
for para in paragraphs:
    para = para.as_paragraph()
    para_content = para.to_string(aw.SaveFormat.TEXT)
    para_content = para_content.replace("\r", "")
    para_content = para_content.strip()  # 特殊地方,发现目录中有这个符号,暂时不知道符号是干啥的
    if para_content in header_list or para_content.capitalize() in header_list:
        table_header = aw.Paragraph(doc_main)
        table_header.paragraph_format.style_identifier = aw.StyleIdentifier.NORMAL
        table_header.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
        if para_content in ["APPENDICES", "REFERENCES"]:
            _doc = aw.Document("t_ae_1.docx"))
            _tables = _doc.get_child_nodes(aw.NodeType.TABLE, True)
            _tables = [t for t in _tables]
            for table in _tables:
                if table.get_ancestor(aw.NodeType.BODY):
                    i = _tables.index(table)
                    temp = _tables[i]
                    _tables[i] = _tables[i - 1]
                    _tables[i - 1] = temp

            for table in _tables:  # 将table 信息反向的插入到word文件中。TODO 表格美化
                table_clone = table.clone(True)
                imported_table = doc_main.import_node(table_clone, True)
                if imported_table.node_type == aw.NodeType.TABLE:
                    imported_table = imported_table.as_table()
                    imported_table.preferred_width = aw.tables.PreferredWidth.from_percent(100)
                    for index, row in enumerate(imported_table.rows):
                        row = row.as_row()
                        # if (
                        #     "Source:" in row.get_text().strip()
                        #     or not row.get_text().strip()
                        # ):
                        #     row.remove()

                        for cell_index, cell in enumerate(row.cells):
                            cell = cell.as_cell()
                            cell.cell_format.vertical_alignment = (
                                aw.tables.CellVerticalAlignment.BOTTOM
                            )
                            for paragraph in cell.paragraphs:
                                paragraph = paragraph.as_paragraph()
                                # 居中对齐
                                for run in paragraph.runs:
                                    run = run.as_run()
                                    run.font.name = "Courier New"
                                    run.font.name_far_east = "宋体"
                                    run.font.size = 8

                    para = para.parent_node.append_child(imported_table)

doc_main.save("Result.docx")

Result.docx (26.6 KB)

对于页眉/页脚,您可以使用类似的方法:

if table.parent_node.node_type == aw.NodeType.HEADER_FOOTER:
    section = para.get_ancestor(aw.NodeType.SECTION).as_section()
    section.headers_footers.clear()
    footer = aw.HeaderFooter(doc_main, aw.HeaderFooterType.FOOTER_PRIMARY)
    section.headers_footers.add(footer)
    footer.append_paragraph(imported_table.get_text())

为什么你插入的数据没有页脚呢