Word控件Spire.Doc 【文本】教程(5) ;从 Word 文档中的文本框中提取文本

news/2024/5/20 4:45:09/文章来源:https://blog.csdn.net/m0_67129275/article/details/127526626

文本框的目的是允许用户输入程序要使用的文本信息。也可以从文本框中提取现有的文本信息。以下指南重点介绍如何通过Spire.Doc for .NET从 C# 中 Word 文档的文本框中提取文本。

Spire.Doc for.NET 最新下载(qun:767755948)icon-default.png?t=M85Bhttps://www.evget.com/product/3368/download

首先,查看word文档中的文本框信息。

其次,下载Spire.Doc 并安装在您的系统上。Spire.Doc 安装干净、专业,并包含在 MSI 安装程序中。

然后通过以下路径在下载的 Bin 文件夹中添加 Spire.Doc.dll 作为参考:“..\Spire.Doc\Bin\NET4.0\ Spire.Doc.dll”。

现在介绍如何从文本框中提取文本的步骤。

第 1 步:从文件中加载一个 word 文档。

Document document = new Document();
document.LoadFromFile(@"..\..\Test.docx");

第 2 步:检查文档中是否存在文本框。

//Verify whether the document contains a textbox or not
if (document.TextBoxes.Count > 0)

第 3 步:初始化 StreamWriter 类以保存接下来要提取的文本

using (StreamWriter sw = File.CreateText("result.txt"))

第 4 步:从文本框中提取文本。

//Traverse the document
foreach (Section section in document.Sections)
{
foreach (Paragraph p in section.Paragraphs)
{
foreach (DocumentObject obj in p.ChildObjects)//Extract text from paragraph in TextBox
if (objt.DocumentObjectType == DocumentObjectType.Paragraph)
{
sw.Write((objt as Paragraph).Text)
}
//Extract text from Table in TextBox
if (objt.DocumentObjectType == DocumentObjectType.Table)
{
Table table = objt as Table;
ExtractTextFromTables(table, sw);
}
//Extract text from Table
static void ExtractTextFromTables(Table table, StreamWriter sw)
{
for (int i = 0; i < table.Rows.Count; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
TableCell cell = row.Cells[j];
foreach (Paragraph paragraph in cell.Paragraphs)
{
sw.Write(paragraph.Text);
}
}
}
}

完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Doc;
using Spire.Doc.Fields;
using System.IO;
using Spire.Doc.Documents;
namespace ExtractTextFromTextBoxes
{
class Program
{
static void Main(string[] args)
{
Document document = new Document();
document.LoadFromFile(@"..\..\Test.docx");//Verify whether the document contains a textbox or not
if (document.TextBoxes.Count > 0)
{
using (StreamWriter sw = File.CreateText("result.txt"))
{
foreach (Section section in document.Sections)
{
foreach (Paragraph p in section.Paragraphs)
{
foreach (DocumentObject obj in p.ChildObjects)
{
if (obj.DocumentObjectType == DocumentObjectType.TextBox)
{
TextBox textbox = obj as TextBox;
foreach (DocumentObject objt in textbox.ChildObjects)
{
if (objt.DocumentObjectType == DocumentObjectType.Paragraph)
{
sw.Write((objt as Paragraph).Text);
}if (objt.DocumentObjectType == DocumentObjectType.Table)
{
Table table = objt as Table;
ExtractTextFromTables(table, sw);
}
}
}
}
}
}
}
}
}
static void ExtractTextFromTables(Table table, StreamWriter sw)
{
for (int i = 0; i < table.Rows.Count; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
TableCell cell = row.Cells[j];
foreach (Paragraph paragraph in cell.Paragraphs)
{
sw.Write(paragraph.Text);
}
}
}
}
}
}

 

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

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

相关文章

3、Java对象相关

目录JVM内存分配机制对象的创建对象大小与指针压缩java对象的指针压缩指针压缩的原因分代回收机制分代GC分类对象内存分配栈上分配逃逸分析标量替换标量与聚合量Eden区分配大对象分配老年代分配对象动态年龄判断老年代空间分配担保机制对象的内存布局对象的访问定位对象内存回收…

WebDAV之葫芦儿·派盘+一刻日记

一刻日记 支持webdav方式连接葫芦儿派盘。 是一款强大的记录软件,通过平台可以随意的记录重要的事情,让用户在平台里能获得更多的帮助,实时的解决你的记录需求,让你可以更好的进行使用;在使用的过程中,用户可以记录当天重要的事情,把你的感想更好的记录在平台里,让用…

js-键盘事件

onkeydown:按键被按下 onkeyup:按键被松开 事件绑定的对象&#xff1a;键盘事件一般绑定给可以获取焦点的对象或者document对象 焦点&#xff1a;光标在闪的&#xff1a;比如input标签 如果一直按按键不松手&#xff0c;按键会一直被触发 当&#xff1a;onkeydown连续触发时…

后端php项目和数据库启动

有两种方法可以启动 1.使用小皮面板 ①启动php项目开启后端网站 可去官网下载 下载后就能使用了 官网地址&#xff1a;小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; 下载完成后打开 php项目需要启动apache 创建一个php项目的网站 注意这里要写public 点击…

亚马逊云 RDB数据库故障转移(多可用区)

RDB关系数据库(Relational Database,RDB) 创建名为VPC for RDS的vpc 两个可用区,两组公内网创建安全组创建RDS数据库实例用的数据库子网组创建RDS数据库实例创建数据库连接RDS数据库实例并给数据库test添加数据 1.创建安全组2.创建用来连接数据库实例的EC2选择vpc for rds那…

MyBatis 环境搭建配置全过程【IDEA】

文章目录一、MyBatis 介绍二、MyBatis 环境搭建1.MyBatis 下载2.配置 jdk 版本3.创建 Maven 工程4.IDEA 连接数据库5.项目文件构架6.引入相关依赖7.命令行创建数据库8.数据库配置文件9.核心配置文件三、入门测试程序1.创建表准备数据2.创建 POJO 实体3.创建映射文件4.修改核心配…

將一個react+nodejs聊天軟件前後端項目進行docker打包並運行

文章目录1概述2将react前端打包入docker2.1打包react项目2.2nginx配置2.3创建Docker镜像2.4打包和运行2.5上传dockerhub3将nodejs打包入dockerDockerfile文件.dockerignore 文件打包和运行上传dockerhub1概述 https://gitee.com/chuge325/practise–chat-app-react-nodejs.git…

爱上源码,重学Spring IoC深入

回答&#xff1a; 我们为什么要学习源码&#xff1f; 1、知其然知其所以然 2、站在巨人的肩膀上&#xff0c;提高自己的编码水平 3、应付面试1.1 Spring源码阅读小技巧 1、类层次藏得太深&#xff0c;不要一个类一个类的去看&#xff0c;遇到方法该进就大胆的进 2、更不要一行…

左程云老师算法课笔记( 四)

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 啊啊&#xff0c;才发现二被我挤掉了&#xff0c;有空补下&#xff01; 一、图&#xff1a; 图的深度优先遍历&#xff1a;&#xff08;和二叉树的区别就是有环&#xff0c;不能重复打印&#xff09;&#xff08;Queue队…

网课搜题接口-查题校园题库系统

网课搜题接口-查题校园题库系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&…

全球名校AI课程库(28)| MIT麻省理工 · 基因组学机器学习课程『Machine Learning for Genomics』

&#x1f3c6; 课程学习中心 | &#x1f6a7; AI生物医疗课程合辑 | &#x1f30d; 课程主页 | &#x1f4fa; 中英字幕视频 | &#x1f680; 项目代码解析 课程介绍 MIT 6.047/6.878是全球顶校麻省理工开设的基因组学与机器学习的交叉专业课程。课程以基因组学为主要应用领域…

智慧城市万亿级蓝海赛道机遇何在?

工商业的发展&#xff0c;为人类居住历史增添了“城市”这一全新的选项。从春秋战国时期的“货市”&#xff0c;到13世纪地中海沿岸星罗棋布的都市&#xff0c;风格迥异的城市为身处不同时代的居民提供了栖居之地。仅在中国&#xff0c;城市就以不到6%的土地面积&#xff0c;维…

个人征信预测

个人征信预测 --数据分析项目报一、项目概述 通过脱敏的现有数据&#xff0c;如&#xff1a;用户基本身份信息&#xff0c;消费行为&#xff0c;银行还款等&#xff0c;进行数据处理特征&#xff0c;选取并建立逾期预测模型&#xff0c;预测用户是否会逾期还款。二、项目概述数…

SSD目标检测网络ONNX推理,为tensorrt推理做准备【附代码】

本篇文章是实现SSD的onnx推理&#xff0c;主要是为后期tensorrt推理打下基础&#xff0c;YOLOv4以及YOLOv5的tensorrt推理可以看我之前的文章。 SSD的代码我这里下载的是b站up主Bubbliiiing的pytorch版SSD&#xff0c;大家可自行下载【我这里就不传代码了&#xff0c;等最近把…

期货开户用心服务每个客户

用心服务每一个客户&#xff01;以信为本&#xff0c;点石成金&#xff01; 蓄之既久&#xff0c;其发必速 如果价格连续多天在—个狭窄的幅度内升降&#xff0c;在图表上形成一幅有如建筑地盘布满地基桩的图景&#xff0c;习惯上称之为密集区&#xff0c;亦即专家所说的技术…

【GraphQL】Node + Postgres + adminer实现demo应用

1、程序目录 在第一级目录下存在三个文件&#xff0c; db.sql用于创建tables和demo数据&#xff0c;可以直接在adminer里登录执行sql语句进行创建&#xff0c;可以看到如下图绿色部分的执行结果 docker-compose.yaml用于为node、postgres和adminer分别创建一个容器&#xff0…

数明SLM27517能驱动MOSFET和IGBT功率开关 低侧栅极驱动器兼容UCC27517

SLM27517 单通道&#xff0c;高速&#xff0c;低侧栅极驱动器器件可以有效地驱动MOSFET和IGBT功率开关。使用设计其固有地最小化击穿电流&#xff0c;可以源汇高峰值电流脉冲转换为电容性负载轨对轨驱动能力非常小传播延迟通常为15ns。可提供4 A电源&#xff0c;5 A接收器12 V …

语音识别 CTC Loss

(以下内容搬运自 PaddleSpeech) Derivative of CTC Loss 关于CTC的介绍已经有很多不错的教程了&#xff0c;但是完整的描述CTCLoss的前向和反向过程的很少&#xff0c;而且有些公式推导省略和错误。本文主要关注CTC Loss的梯度是如何计算的&#xff0c;关于CTC的介绍这里不做…

泛海微告诉你电压检测IC主要用途会是什么呢

泛海微告诉你电压检测IC主要用途会是什么呢&#xff1a; FS61CN3302MR电压检测IC(芯片)是一款高精度,低功耗的电压检测器芯片,并采用了CMOS生产工艺和激光微调技术。XC61C温度漂移特性的影响很小,电压检测精度很高。 ​ ①充电电池配电设备的开关电源一部分。 ②鼠标&#x…

MaxViT:多轴视觉Transformer

论文链接&#xff1a;https://arxiv.org/abs/2204.01697 代码链接&#xff1a;https://github.com/google-research/maxvit 如果进入不了github就直接在这里下载&#xff0c;不过没有权重文件&#xff0c;免费的&#xff1a;https://download.csdn.net/download/weixin_4491103…