表格在word文档中常见的文档元素之一。操作word文献时无意需要索求文献中多个表格的执行到一个新的文献,甚而无意还会要索求题注信息。
今天,给众人共享两种批量索求文档中表格的两种挨次,永诀是VBA法和Python法两种。
一、VBA法索求word中的表格1. 代码终了VBA(Visual Basic for Applications)操作Word文献时,不错实行包括创建、翻开、保存、修改文本和花式等多种任务。今天,咱们使用VBA来批量索求现时文献中的表格,在每个表格中间添加一个空行。终了代码如下:
Sub ExtractTablesAndPreviousRowToNewFile() Dim docSource As Document Dim docTarget As Document Dim tbl As Table Dim rng As Range Dim outputPath As String Dim fileName As String ' 拓荒输出文献名和旅途 fileName = 'output.docx' outputPath = ActiveDocument.Path & '\' & fileName ' 现时文档拓荒为源文档 Set docSource = ActiveDocument ' 创建一个新文档看成见识文档 Set docTarget = Documents.Add For Each tbl In docSource.Tables ' 复制表格 tbl.Range.Copy docTarget.Content.InsertParagraphAfter docTarget.Content.Paragraphs.Last.Range.Paste ' 在表格后添加一个空行 docTarget.Content.InsertParagraphAfter docTarget.Content.Paragraphs.Last.Range.InsertParagraphAfter Next tbl ' 删除见识文档中的第一个空段落 If docTarget.Paragraphs.Count > 0 Then docTarget.Paragraphs(1).Range.Delete End If ' 保存新文档到指定旅途 docTarget.SaveAs2 fileName:=outputPath, FileFormat:=wdFormatXMLDocument docTarget.Close MsgBox '表格特等上方一排执行照旧顺利索求到 ' & outputPath, vbInformationEnd Sub2. 代码分析以上代码最初激活现时文档看成源文档,然后创建一个新文档output.docx用来放手索求的表格和题注。它会遍历源文档中的通盘表格,关于每个表格,尝试复制表格自己到见识文档中。
每个表格背面,还会插入一个空行以保捏文献中多个表格间明晰的视觉分隔。
3. 使用挨次最初,在Word中翻开你想索求表格的文档,然后按下 Alt + F11 翻开VBA剪辑器。在【技俩】窗格中,聘请你的文档,然后插入一个新的模块(右键点击你的文档称呼,聘请【插入】 > 【模块】)。将以上VBA代码复制并粘贴到新模块中。关闭VBA剪辑器,然后脱手宏(在Word中,不错通过【视图】 > 【宏】> 【检察宏】91porn.,聘请这个宏,然后点击【脱手】即可。
二、Python法Python在office办公自动化方面有异常平淡的用途,它有特意的库来处分office中的各个组件,而且这些王人是开源免费使用的。操作word文献就要用到python-docx这个库,在编写设施之前要装配新版的Python设施,然后在cmd底下用pip install python-docx来装配这个库,也不错在thonny这个轻量版的集成拓荒环境中装配python-docx用于操作word文献。
1.代码终了咱们最初从docx中导入Document模块,然后读取指定的word文献,索求表格特等执行到一个新的文献当中并保存。终了代码如下:
from docx import Documentimport osdef extract_tables(doc_path, output_path): # 加载原始文档 doc = Document(doc_path) new_doc = Document() # 索求表格并添加到新文档 for i, table in enumerate(doc.tables): t = new_doc.add_table(rows=1, cols=len(table.columns)) t.style = 'Table Grid' # 使用内置的表格样式,这么会自动添加框线 # 复制表头 for j, cell in enumerate(table.rows[0].cells): t.cell(0, j).text = cell.text # 复制其他行 for row in table.rows[1:]: new_row = t.add_row() for j, cell in enumerate(row.cells): new_row.cells[j].text = cell.text # 除了临了一个表格外,在每个表格后添加一个空行(空段落) if i < len(doc.tables) - 1: new_doc.add_paragraph() # 保存新文档 new_doc.save(output_path)# 使用示例extract_tables('example.docx', 'output.docx')2. 代码分析
以上代码把example.docx文献中的通盘表格索求到了output.docx文献中,同期使用了表格的内置样式,给重生成的表格自动添加框线,基本终了表格文本执行的索求,关联词表格中的字体神采、大小和边框样式均无法索求。同期这里也莫得索求题注,这时咱们需要对代码进一步修改,以使其不错索求表格上方的题注。
本代码把表格上方居中的翰墨默意识别为表格的题注,索求表格执行时会一并索求出来。
from docx import Documentfrom docx.enum.text import WD_ALIGN_PARAGRAPHimport osdef extract_tables_with_titles(doc_path, output_path): # 加载原始文档 doc = Document(doc_path) new_doc = Document() # 索求表格并添加到新文档 for i, table in enumerate(doc.tables): # 尝试定位并复制表格上方的居中翰墨 # 查找表格前的段落 para = table._element.getprevious() if para is not None and para.tag.endswith('p'): # 查验该段落的花式是否为居中 p = para.getparent() para_obj = [p for p in doc.paragraphs if p._element == para][0] if para_obj.alignment == WD_ALIGN_PARAGRAPH.CENTER: # 添加居中的段落到新文档 new_para = new_doc.add_paragraph(para_obj.text) new_para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 添加表格 t = new_doc.add_table(rows=1, cols=len(table.columns)) t.style = 'Table Grid' # 使用内置的表格样式,这么会自动添加框线 # 复制表头 for j, cell in enumerate(table.rows[0].cells): t.cell(0, j).text = cell.text # 复制其他行 for row in table.rows[1:]: new_row = t.add_row() for j, cell in enumerate(row.cells): new_row.cells[j].text = cell.text # 除了临了一个表格外,在每个表格后添加一个空行(空段落) if i < len(doc.tables) - 1: new_doc.add_paragraph() # 保存新文档 new_doc.save(output_path)# 使用示例extract_tables_with_titles('example.docx', 'output.docx')以上代码在原有代码基础上加多了题注执行的索求,通过调用extract_tables_with_titles这个函数,批量把example.docx文献中的表格和题录索求出来,并放到了output.docx当中,何况每个表格之间会有一个空行。
三、演示视频
本东谈主录制了有关视频,供众人参考使用。
图片
四、学后反念念哄骗VBA和Python均不错终了表格执行索求的功能,关联词关于翰墨和表格的样式无法完满索求。后期会进一步探索如何把表格执行和样式完满拷贝出来,关联词由于触及字体等特殊花式,索求样式会有一定的难度。
上头两种挨次的上风在于不错批量、高效地索求表格执行,关联词无法索求样式,因此在索求复杂表格时可能会报错。
爸爸与女儿以上代码默许是把表格批量索求到现时目次,VBA代码应用的是现时的word文献,而python则条目索求的文献名为example.docx91porn.,若是想批量索求多个文献中的表格则还需要添加for轮回来遍历通盘的word文献。
好啦今儿共享到这里,祝众人好运!心爱的同鞋请转发、点赞!扫描下方二维码,加入微信雷同群~ 本站仅提供存储做事,通盘执行均由用户发布,如发现存害或侵权执行,请点击举报。