表格在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中,不错通过【视图】 > 【宏】> 【检讨宏】,聘用这个宏艳母全集,然后点击【驱动】即可。
二、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.docx,要是想批量索要多个文献中的表格则还需要添加for轮回来遍历所有的word文献。
好啦今儿共享到这里,祝大家好运!心爱的同鞋请转发、点赞!扫描下方二维码,加入微信辩论群~ 本站仅提供存储功绩,所有实践均由用户发布,如发现存害或侵权实践,请点击举报。