当前位置: 首页 > news >正文

湘潭做网站建设的公司淘宝app官方下载

湘潭做网站建设的公司,淘宝app官方下载,浙江网站建设而,有什么电商网站做推广赚佣金的表格在word文档中常见的文档元素之一。操作word文件时有时需要提取文件中多个表格的内容到一个新的文件,甚至有时还会要提取题注信息。 今天,给大家分享两种批量提取文档中表格的两种方法,分别是VBA法和Python法两种。 一、VBA法提取word中…

表格在word文档中常见的文档元素之一。操作word文件时有时需要提取文件中多个表格的内容到一个新的文件,甚至有时还会要提取题注信息。

今天,给大家分享两种批量提取文档中表格的两种方法,分别是VBA法和Python法两种。

一、VBA法提取word中的表格

1. 代码实现

VBA(Visual Basic for Applications)操作Word文件时,可以执行包括创建、打开、保存、修改文本和格式等多种任务。今天,我们使用VBA来批量提取当前文件中的表格,在每个表格中间添加一个空行。实现代码如下:

 Sub ExtractTablesAndPreviousRowToNewFile()Dim docSource As DocumentDim docTarget As DocumentDim tbl As TableDim rng As RangeDim outputPath As StringDim fileName As String' 设置输出文件名和路径fileName = "output.docx"outputPath = ActiveDocument.Path & "\" & fileName' 当前文档设置为源文档Set docSource = ActiveDocument' 创建一个新文档作为目标文档Set docTarget = Documents.AddFor Each tbl In docSource.Tables' 复制表格tbl.Range.CopydocTarget.Content.InsertParagraphAfterdocTarget.Content.Paragraphs.Last.Range.Paste' 在表格后添加一个空行docTarget.Content.InsertParagraphAfterdocTarget.Content.Paragraphs.Last.Range.InsertParagraphAfterNext tbl' 删除目标文档中的第一个空段落If docTarget.Paragraphs.Count > 0 ThendocTarget.Paragraphs(1).Range.DeleteEnd If' 保存新文档到指定路径docTarget.SaveAs2 fileName:=outputPath, FileFormat:=wdFormatXMLDocumentdocTarget.CloseMsgBox "表格及其上方一行内容已经成功提取到 " & outputPath, vbInformation
End Sub

2. 代码分析

以上代码首先激活当前文档作为源文档,然后创建一个新文档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 Document
import 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文件中,同时使用了表格的内置样式,给新生成的表格自动添加框线,基本实现表格文本内容的提取,但是表格中的字体颜色、大小和边框样式均无法提取。同时这里也没有提取题注,这时我们需要对代码进一步修改,以使其可以提取表格上方的题注。

3. 提取题注和表格内容

本代码把表格上方居中的文字默认识别为表格的题注,提取表格内容时会一并提取出来。

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
import 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提取Word中的表格

四、学后反思

  1. 利用VBA和Python均可以实现表格内容提取的功能,但是对于文字和表格的样式无法完整提取。后期会进一步探索如何把表格内容和样式完整拷贝出来,但是由于涉及字体等特殊格式,提取样式会有一定的难度。
  2. 上面两种方法的优势在于可以批量、高效地提取表格内容,但是无法提取样式,因此在提取复杂表格时可能会报错。
  3. 以上代码默认是把表格批量提取到当前目录,VBA代码应用的是当前的word文件,而python则要求提取的文件名为example.docx,如果想批量提取多个文件中的表格则还需要添加for循环来遍历所有的word文件。
http://www.khdw.cn/news/50669.html

相关文章:

  • 银川专业做网站东莞疫情最新消息今天中高风险区
  • wordpress子站点404seo竞价
  • 3yx这个网站做刷单网站收录登录入口
  • 大埔县住房和城乡规划建设局网站网络营销工程师是做什么的
  • 广州市住房和城乡建设委员会官方网站360线上推广
  • 做网站聊城一键识图找原图
  • 大连哪家科技公司做网站好百度云盘网官网
  • 怎么在网站里添加cnzz统计中国品牌策划公司排名
  • 导航网站 win8风格旅游景区网络营销案例
  • 有自己域名主机怎么做网站外链免费发布平台
  • 哪种语言做网站最合适营销网址
  • wordpress 微信关注插件网站推广与优化平台
  • C语言开发网站开发语言站长查询域名
  • 做实验学编程的网站优化设计五年级下册语文答案
  • 做枪网站子域名查询工具
  • 提供医疗网站建设小说百度风云榜
  • 建设网站需要什么样的服务器专注于品牌营销服务
  • 哈尔滨营销网站制作最近的新闻摘抄
  • 网站做营销推广公司宁波seo外包哪个品牌好
  • 工信部 网站备案查询电商培训机构推荐
  • 一笔签名设计在线网站搜索排名优化价格
  • 大理石在哪些网站做宣传站长工具域名查询ip
  • 广州网站制作到诺然网站seo搜索
  • 网页快速开发平台登封搜索引擎优化
  • 各种网站开发工具上海百度公司地址在哪里
  • 哪有做企业网站百度网盘网页登录入口
  • 建设银行网站地址全国疫情一览表
  • 网站开发公司php工资windows优化大师下载安装
  • 揭阳市建设局网站seo黑帽技术工具
  • 网站建设的功能都需要有哪些方面上海推广seo