从微软 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,一经查实,立即删除!

相关文章

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

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

文章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…

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

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

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

目录 一、线性表 二、顺序表 三、链表 一、线性表 线性表( 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. 示例代码结语…

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

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

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

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

ScreenAI ——能理解从信息图表到用户界面的图像和文本算法解析

概述 论文地址:https://arxiv.org/pdf/2402.04615.pdf 信息图表(图表、示意图、插图、地图、表格、文档布局等)能够将复杂的数据和想法转化为简单的视觉效果,因此一直以来都被视为传播的重要元素。这种能力来自于通过布局和视觉线…

普通人必看!AI绘画商业变现全攻略(附教程)

大部分的设计师除了主业以外,都会利用空余时间去接单做副业。 单子包括但不限于产品/品牌LOGO、电商产品图设计、海报、室内设计图等等,单价在几十到上千不等 引起了我的思考,我们普通人有没有机会,也能像他们一样去接单赚钱吗&a…

pytorch- RNN循环神经网络

目录 1. why RNN2. RNN3. pytorch RNN layer3.1 基本单元3.2 nn.RNN3.2.1 函数说明3.2.2 单层pytorch实现3.2.3 多层pytorch实现 3.3 nn.RNNCell3.3.1 函数说明3.3.2 单层pytorch实现3.3.3 多层pytorch实现 4.完整代码 1. why RNN 以淘宝的评论为例,判断评论是正面…

matplotlib颜色对照表

matplotlib的色彩设置: #------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------------------------------------------------------------…

【JavaWeb】登录校验-会话技术(二)JWT令牌

JWT令牌 介绍 JWT全称:JSON Web Token (官网:https://jwt.io/) 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。 简洁&#xff1a…

vue和react你怎么选择?

在选择Vue和React之间,其实没有一个绝对的“最佳选择”,因为这取决于你的项目需求、团队熟悉度、开发环境、以及你对这两个框架的个人偏好。下面是一些可以帮助你做出决策的因素: 1. 学习曲线 Vue:Vue的学习曲线相对平缓&#xf…

借助软件资产管理系统,优化Solidworks软件许可证管理

在当今数字化的企业环境中,软件许可证的有效管理对于业务的顺畅运行至关重要。然而,IT 运维部门常常面临着诸如用户部门 SW 许可证不够用、使用紧张等问题,而由于缺乏可靠的数据支持,难以准确判断许可证的短缺程度,这给…

MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)

本文将详细介绍,如何基于鲲鹏CPU(arm64)和操作系统 Kylin V10 SP2/SP3,利用 KubeKey 制作 KubeSphere 和 Kubernetes 离线安装包,并实战部署 KubeSphere 3.3.1 和 Kubernetes 1.22.12 集群。 服务器配置 主机名IPCPUOS用途master-1192.168.10…

【linux高级IO(二)】多路转接之select详解

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux高级IO 1. 前言2. 初识s…

SCI丨返修一作+通讯

中科四区,JCR2 返修转让一作通讯,5个月左右录用 题目:通过机器学习算法XXXXXXXxxx混凝土力学性能的可靠方法