有修改后的代码案例吗。可以发我一下吗
@Tiaohh 要取得这样的结果并不简单。我将分析是否有实现这一结果的最佳方法。但您需要使用 table.parent_node.node_type == aw.NodeType.HEADER_FOOTER
和 table.parent_node.node_type == aw.NodeType.BODY
来查找页眉/页脚或真正的表格。
可以给我一个demo的案例吗
还有我插入的表格内容怎么插入到标题段落后面呢
我需要插入段落内容后面。标题下面可能有文本段落内容。需要插入到文本段落内容后面
页眉页脚那里有结果啦吗?????
你好有结果了吗????????
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 我们可以这样做吗?
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())
为什么你插入的数据没有页脚呢