从微软 Word 中提取数据

从 Microsoft Word 文档中提取数据可以通过编程来实现,有几种常见的方法,其中之一是使用 Python 和 python-docx 库。python-docx 是一个处理 .docx 文件(Microsoft Word 文档)的 Python 库,可以读取和操作 Word 文档的内容。以下就是我如何使用 python-docx 库从 Word 文档中提取数据的步骤和示例代码:

在这里插入图片描述

1、问题背景

我们需要从微软 Word 文件中提取数据到数据库中,以便可以从网络界面中查看这些数据。当前公司的情况是在 Word 文件中记录了大量会议纪要,由于过去的操作习惯和延续性,这种做法一直保留了下来。

但是,这种做法给我们带来了许多不便,需要将会议纪要中的任务提取出来,将任务变成数据库中的记录,并且当任务完成时需要在数据库中更新其状态。我们希望找到一种最佳的方法来完成这一任务。

2、解决方案

我们提出了几种可能的解决方案来完成这一任务:

  • 使用 Word 中的 VBA 宏来创建 CSV 文件,然后将 CSV 文件上传到数据库中。
  • 使用 Word 中的 VBA 宏连接到数据库,然后将数据直接插入到数据库中。
  • 使用 Python 脚本通过 win32com 来提取数据,然后将数据上传到数据库中。

对于最后一种方法,由于需要使用 Django 来开发网络界面,因此我们倾向于采用这种方法。但是,这需要我们在 Python 中使用 win32com 来操作 Word 文件,这是我们从未使用过的。我们希望找到一种方法来解决这个问题。

此外,我们还在提取数据的过程中遇到了一个小问题,当我们从 Word 表格中提取字符串时,在每个字符串的末尾都会出现一个奇怪的小方框字符。我们希望找到一种方法来解决这个问题。

根据以上所述,我们可以选择下面这些方案:

  1. 使用 OpenOffice 来打开 Word 文件,然后使用 Python 宏来提取数据。
  2. 使用 VBA 宏从 Word 中提取数据,并使用 Left() 函数来去除字符串末尾的小方框字符。
  3. 使用 win32com 从 Word 中提取数据,并使用 Left() 函数来去除字符串末尾的小方框字符。

对于第一种方案,使用 OpenOffice 来打开 Word 文件,然后使用 Python 宏来提取数据。这种方案的好处是,OpenOffice 可以直接打开 Word 文件,并且可以使用 Python 宏来提取数据,这对于我们来说比较简单。

对于第二种方案,使用 VBA 宏从 Word 中提取数据,并使用 Left() 函数来去除字符串末尾的小方框字符。这种方案的好处是,我们可以直接在 Word 中运行 VBA 宏,并且使用 Left() 函数来去除字符串末尾的小方框字符,这对于我们来说也比较简单。

对于第三种方案,使用 win32com 从 Word 中提取数据,并使用 Left() 函数来去除字符串末尾的小方框字符。这种方案的好处是,我们可以使用 Python 脚本来提取数据,并且使用 Left() 函数来去除字符串末尾的小方框字符,这对于我们来说也比较简单。

我们最终选择第三种方案,使用 win32com 从 Word 中提取数据,并使用 Left() 函数来去除字符串末尾的小方框字符。这种方案的好处是,我们可以使用 Python 脚本来提取数据,并且使用 Left() 函数来去除字符串末尾的小方框字符,这对于我们来说也比较简单。

以下是一个使用 Python 脚本从 Word 中提取数据的示例代码:

import win32com.clientword = win32com.client.Dispatch('Word.Application')
doc = word.Open('d:\\stuff\\myfile.doc')
doc.SaveAs(FileName='d:\\stuff\\text\\myfile.txt', FileFormat=?)  # not sure what to use for ?

这段代码的功能是,使用 win32com 打开 Word 文件并将其另存为纯文本文件。然后,我们可以使用 Python 来读取纯文本文件并提取数据。

全部代码:

1、安装库
确保你已经安装了 python-docx 库。如果没有安装,可以使用以下命令进行安装:

pip install python-docx

2、编写代码
使用 python-docx 库打开并读取 Word 文档中的文本。以下是一个基本示例:

from docx import Documentdef extract_text_from_docx(file_path):# 打开文档doc = Document(file_path)# 存储所有文本的列表full_text = []# 遍历文档中的每一个段落for paragraph in doc.paragraphs:full_text.append(paragraph.text)# 合并所有段落文本return '\n'.join(full_text)# 指定 Word 文件的路径
file_path = 'example.docx'
text = extract_text_from_docx(file_path)
print(text)

在这个示例中,我们定义了一个函数 extract_text_from_docx,该函数接受 Word 文档的文件路径作为参数,使用 Document 类打开文档,并遍历文档中的每个段落,将段落文本提取并存储到一个列表中,最后合并所有段落文本并返回。

如果你需要提取特定的内容,例如表格数据、特定样式的段落或带有特定格式的文本,可以在遍历文档时添加更多的逻辑处理。例如,下面是一个提取表格数据的示例:

def extract_tables_from_docx(file_path):# 打开文档doc = Document(file_path)tables_data = []# 遍历文档中的每一个表格for table in doc.tables:table_data = []for row in table.rows:row_data = [cell.text for cell in row.cells]table_data.append(row_data)tables_data.append(table_data)return tables_data# 指定 Word 文件的路径
file_path = 'example.docx'
tables = extract_tables_from_docx(file_path)
for table in tables:for row in table:print('\t'.join(row))

在这个示例中,extract_tables_from_docx 函数提取了文档中的所有表格数据,并将其存储为列表的列表(每个表格是一个列表,每个表格的每一行是一个子列表)。最后,打印表格内容。

我们可以根据需要扩展这些示例代码,以提取和处理更多类型的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语雀平替,一款私有化功能丰富的开源知识库系统

背景介绍 现代企业面临的文档管理挑战日益严峻,包括信息冗余,存在多份数据,难以做到统一 ,文档数量激增,查找麻烦,知识的信息安全问题频发以及团队协作需求不断上升。同时,随着知识管理在企业运…

洞察插槽和 v-slot:组件插槽案例的分类解读

目录 插槽和v-slot介绍 组件插槽 默认插槽 具名插槽 条件插槽 动态插槽 作用域插槽 插槽和v-slot介绍 Vue插槽(Slot)是Vue.js框架中用于实现组件间内容传递和模板通信的一种机制。通过插槽,父组件可以向子组件的指定位置插入HTML结构或内容,从而实现更灵活和…

华为HCIP Datacom H12-821 卷31

1、PBR(Policy-Based-Route)可以执行以下哪些操作 A、修改匹配数据包的LSP B、修改匹配流量的下一跳地址 C、修改匹配流量的出接口 D、修改匹配流量的Qos信息 正确答案: A,B,C,D 解析:PBR可以设置本地路由策略动作&#x…

文章SameStr(二):图2代码

title: “Publication Figure 2” 百度云盘链接: https://pan.baidu.com/s/15g7caZp354zIWktpnWzWhQ 提取码: 4sh7 Libraries Standard Import library(tidyverse) library(cowplot) library(scales) library(ggpubr)Special library(lme4) library(sjPlot) library(sjst…

根据https链接点击按钮下载文件

filePreview(row) {fetch(row.attachmentContent.url).then(res >res.blob().then(blob > {var a document.createElement(a);var url window.URL.createObjectURL(blob);var name row.attachmentContent.name;a.href url;a.download name; // 下载名称a.click();wi…

数据仓库之命名规范

数据仓库命名规范旨在确保数据仓库中的各种对象(如数据库、表、列、索引、视图等)具有一致、清晰且有意义的名称。这些规范有助于提高数据的可读性、可维护性和可理解性。以下是一些常见的数据仓库命名规范,涵盖了数据库对象的各个方面。 一…

基于Java中的SSM框架实现学生网上请假系统项目【项目源码+论文说明】计算机毕业设计

摘要 本学生网上请假系统是针对目前学生网上请假系统的实际需求,从实际工作出发,对过去的学生网上请假系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流…

大文件切片上传 So Easy?分享 1 段优质 JS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 1100 字,整篇阅读约需 2 分钟。 大文件切片上传,我一般会分为4步来搞&#xf…

liosam编译问题

编译过程 因为lego安装时已经安装了gtsam因子图优化库,所以不需要再安装 直接编译即可 catkin_make -j8 报错实例 示例:[lio_sam_imuPreintegration-2] process has died,[lio_sam_mapOptmization-5] process has died 解决方法 实际问题是库文件libmetis.so 的位置。…

数据结构与算法:顺序表和链表

目录 一、线性表 二、顺序表 三、链表 一、线性表 线性表( linear list )是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线…

MyBatis框架学习笔记(一):MyBatis入门

1 MyBatis 介绍 1.1 官方文档 MyBatis 中文手册: (1)https://mybatis.org/mybatis-3/zh/index.html (2)https://mybatis.net.cn/ Maven 仓库: https://mvnrepository.com/ 仓库作用:需要…

(三)前端javascript中的数据结构之集合

集合的特点 1.无序 2.唯一性 3.不可重复 集合相对于前面几种数据结构,比较简单好理解,看看代码实现就能知道他的用法了 集合的创建 function MySet() {this.item {}; } MySet.prototype.has function (value) {return value in this.item; };//增 M…

编程范式之函数式编程

目录 前言1. 函数式编程的定义2. 函数式编程的特点2.1 纯函数2.2 不可变性2.3 高阶函数2.4 惰性求值 3. 函数式编程的应用场景3.1 并行计算3.2 数据分析3.3 Web开发 4. 函数式编程的优缺点4.1 优点4.2 缺点 5. 代表性的编程语言5.1 Haskell5.2 Scala5.3 Clojure 6. 示例代码结语…

Java中常见的消息中间件有哪些,各自的优缺点是那些?

1、ActiveMQ 优点: Apache基金会开发的开源消息中间件,支持JMS规范。 提供多种集群模式和高可用机制。 易于使用,并且与多种编程语言交互良好。 缺点: 在处理大量消息和并发连接时,性能可能不如其他中间件。 对于大型…

状态模式在金融业务中的应用及其框架实现

引言 状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为。状态模式通过将状态的相关行为分离到独立的状态类中,使得状态转换更加明确和简洁。在金融业务中,状态模式可以用于实现交易状…

legoloam算法环境配置和调试笔记

安装gtsam 参考 Ubuntu20.04安装gtsam记录_gtsam安装-CSDN博客 mkdir buildcd buildcmake .. make -

简谈设计模式之设计原则

设计模式是软件工程中解决特定问题的通用解决方案。这些模式提供了设计结构和最佳实践,帮助开发者创建灵活、可重用和可维护的代码。 设计模式分类 创建型模式 用于描述"如何创建对象", 它的特点是“将对象的创建和使用分离”. 包括单例, 原型, 工厂方…

负载均衡(Load Balancing)、集群(Cluster)和分布式(Distributed)

负载均衡(Load Balancing) 定义:负载均衡是指将网络流量或计算任务均匀地分配到多个服务器或计算资源上,以提高系统的整体处理能力、可靠性和响应速度。 特点: 流量分配:负载均衡器根据一定的算法&#x…

HTML5新增的input元素属性:placeholder、required、autofocus、min、max等

HTML5 大幅度地增加与改良了 input 元素的属性,可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本list为文本框添加选…

React+TS前台项目实战(二十七)-- 首页响应式构建之banner、搜索、统计模块布局

文章目录 前言一、 效果展示二、相关模块1. Statistic统计模块功能分析代码详细注释使用方式 2. Search搜索模块功能分析代码详细注释使用方式 3. banner模块功能分析代码详细注释使用方式 总结 前言 前面我们已经封装了这个项目基本要用到的全局组件了,现在就开始…