C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)
【概述】
Word中可插入文本框,在文本框中可添加文本、图片、表格等内容。本篇文章通过C#程序代码介绍如何来读取文本框中的文本、图片和表格等内容。附VB.NET代码,有需要可作参考。
【程序环境】
程序中所需必要的程序集文件Spire.Doc.dll,及其他相关dll文件(见下文)。
用于测试的Word源文档如图:

【程序代码】
1.读取文本框中的文本
所需程序集:

【C#】
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.IO;
using System.Text; namespace ExtractText
{
class Program
{
static void Main(string[] args)
{
//加载Word源文档
Document doc = new Document();
doc.LoadFromFile("test.docx"); //获取文本框
TextBox textbox = doc.TextBoxes[0]; //创建StringBuilder类的对象
StringBuilder sb = new StringBuilder(); //遍历文本框中的对象,获取文本
foreach (object obj in textbox.Body.ChildObjects)
{
if (obj is Paragraph)
{
String text = ((Paragraph)obj).Text;
sb.AppendLine(text);
}
} //保存写入的txt文档到指定路径
File.WriteAllText("ExtractedText.txt", sb.ToString());
System.Diagnostics.Process.Start("ExtractedText.txt");
}
}
}
【vb.net】
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.IO
Imports System.Text Namespace ExtractText
Class Program
Private Shared Sub Main(args As String())
'加载Word源文档
Dim doc As New Document()
doc.LoadFromFile("test.docx") '获取文本框
Dim textbox As TextBox = doc.TextBoxes(0) '创建StringBuilder类的对象
Dim sb As New StringBuilder() '遍历文本框中的对象,获取文本
For Each obj As Object In textbox.Body.ChildObjects
If TypeOf obj Is Paragraph Then
Dim text As [String] = DirectCast(obj, Paragraph).Text
sb.AppendLine(text)
End If
Next '保存写入的txt文档到指定路径
File.WriteAllText("ExtractedText.txt", sb.ToString())
System.Diagnostics.Process.Start("ExtractedText.txt")
End Sub
End Class
End Namespace
文本读取结果:

2.读取文本框中的图片
所需程序集:

【C#】
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System; namespace ExtractImg
{
class Program
{
static void Main(string[] args)
{
//加载Word源文档
Document doc = new Document();
doc.LoadFromFile("test.docx"); //获取文本框
TextBox textbox = doc.TextBoxes[0]; int index = 0 ;
//遍历文本框中所有段落
for (int i = 0 ; i < textbox.Body.Paragraphs.Count;i++)
{
Paragraph paragraph = textbox.Body.Paragraphs[i];
//遍历段落中的所有子对象
for (int j = 0; j < paragraph.ChildObjects.Count; j++)
{
object obj = paragraph.ChildObjects[j]; //判定对象是否为图片
if (obj is DocPicture)
{
//获取图片
DocPicture picture = (DocPicture) obj;
String imageName = String.Format("Image-{0}.png", index);
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
} }
}
}
【vb.net】
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields Namespace ExtractImg
Class Program
Private Shared Sub Main(args As String())
'加载Word源文档
Dim doc As New Document()
doc.LoadFromFile("test.docx") '获取文本框
Dim textbox As TextBox = doc.TextBoxes(0) Dim index As Integer = 0
'遍历文本框中所有段落
For i As Integer = 0 To textbox.Body.Paragraphs.Count - 1
Dim paragraph As Paragraph = textbox.Body.Paragraphs(i)
'遍历段落中的所有子对象
For j As Integer = 0 To paragraph.ChildObjects.Count - 1
Dim obj As Object = paragraph.ChildObjects(j) '判定对象是否为图片
If TypeOf obj Is DocPicture Then
'获取图片
Dim picture As DocPicture = DirectCast(obj, DocPicture)
Dim imageName As [String] = [String].Format("Image-{0}.png", index)
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png)
index += 1
End If
Next
Next End Sub
End Class
End Namespace
图片读取结果:

3.读取文本框中的表格
所需程序集:

【C#】
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.IO;
using System.Text; namespace ExtractTable
{
class Program
{
static void Main(string[] args)
{
//加载Word文档
Document doc = new Document();
doc.LoadFromFile("test.docx"); //获取文本框
TextBox textbox = doc.TextBoxes[0]; //获取文本框中表格
Table table = textbox.Body.Tables[0] as Table; StringBuilder sb = new StringBuilder(); //遍历表格中的段落并提取文本
foreach (TableRow row in table.Rows)
{
foreach (TableCell cell in row.Cells)
{
foreach (Paragraph paragraph in cell.Paragraphs)
{
sb.AppendLine(paragraph.Text);
}
}
}
File.WriteAllText("ExtractedTable.txt", sb.ToString());
}
}
}
【vb.net】
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.IO
Imports System.Text Namespace ExtractTable
Class Program
Private Shared Sub Main(args As String())
'加载Word文档
Dim doc As New Document()
doc.LoadFromFile("test.docx") '获取文本框
Dim textbox As TextBox = doc.TextBoxes(0) '获取文本框中表格
Dim table As Table = TryCast(textbox.Body.Tables(0), Table) Dim sb As New StringBuilder() '遍历表格中的段落并提取文本
For Each row As TableRow In table.Rows
For Each cell As TableCell In row.Cells
For Each paragraph As Paragraph In cell.Paragraphs
sb.AppendLine(paragraph.Text)
Next
Next
Next
File.WriteAllText("ExtractedTable.txt", sb.ToString())
End Sub
End Class
End Namespace
表格数据读取结果:

【最后】
以上是本文关于通过C#程序读取Word中的文本框的方法。另推荐阅读《Java 读取Word文本框中的文本、图片和表格》
(本文完,如需转载,请务必注明出处!!)
C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)的更多相关文章
- Java 读取Word文本框中的文本/图片/表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- 面试题之请写出用于校验 HTML 文本框中输入的内容全部为数字 的 javascript 代码
<input type="text" id="d1" onblur=" chkNumber(this)"/> <scrip ...
- 请写出用于校验HTML文本框中输入的内容全部为数字的javascript代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...
- C# 设置Word文本框中的文字旋转方向
在Word中可插入文本框,默认情况下插入的文本框中的文字方向为横向排列,对于一些特殊文档的设计要求,需要改变文字方向,如本次测试中的文档排版为考生试卷类型,考生信息栏的内容为下图中的这种, 本文将以C ...
- Java 设置Word文本框中的文字旋转方向
Word文档中可添加文本框,并设置文本框为横向文本排列或是纵向文本排列,或者设置文本框中的文字旋转方向等.通过Java程序代码,也可以实现以上文本框的操作.下面以Java代码示例展示具体的实现步骤.另 ...
- Java 获取、删除Word文本框中的表格
本文介绍如何来获取Word文本框中包含的表格,以及删除表格. 程序测试环境包括: IDEA JDK 1.8.0 Spire.Doc.jar 注:jar导入,可通过创建Maven程序项目,并在pom.x ...
- jQuery文本框中的事件应用
jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...
- Js控制显示、隐藏文本框中的密码
Js控制显示.隐藏文本框中的密码,也可称为是一款小型的JavaScript星号密码破解器,点击会显示出密码类型的文本框中的真实信息,再次点击则还原,程序 主要是获取HTML元素对象,然后强制更改元素属 ...
- DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)
//在窗口关闭或隐藏时,清楚文本框中的内容(核心代码) function(s, e) { ASPxClientEdit.ClearGroup('entryGroup'); } <asp:Cont ...
随机推荐
- CF1465-C. Peaceful Rooks
CF1465-C. Peaceful Rooks 预备小知识: Rook(国际象棋中的车). 国际象棋中的棋子.每人有2个,他只能直走,不能斜走,除王车易位外不能越子. -- 来自<百度百科&g ...
- CF1462-E1. Close Tuples (easy version)
题意: 给出一个由n个数字组成的数组,先让你找出符合下列条件的子集的数量: 每个子集包含的数字个数为m = 3 这三个数字中的最大值减去最小值不超过k = 2 思路: 首先对给出的数组进行排序,现在假 ...
- XV6学习(16)Lab net: Network stack
最后一个实验了,代码在Github上. 这一个实验其实挺简单的,就是要实现网卡的e1000_transmit和e1000_recv函数.不过看以前的实验好像还要实现上层socket相关的代码,今年就只 ...
- Excel导出时设置单元格的格式为文本
问题: 用excel导出数据时,如何设置单元格格式的数字分类为"文本",默认是"常规"? 比如:导出编码0235A089,在Excel查看默认显示的是没有前面的 ...
- Shpfile文件的字段类型说明
Shpfile文件的字段类型设置如下表所示: 字段类型 字符 字段长度 长整型 N 9 短整型 N 4 浮点型 F 13 双精度 F 19 文本 C 50 特别需要注意的是字段长度,在导出SHP的时候 ...
- int、long long等的取值范围
unsigned int 0-4294967295 int -2147483648-2147483647 unsigned long 0-4294967295long -21474 ...
- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
既然已经可以通过 RTSP 获取h264 裸流了.那么通过 FFmpeg 将其保存到文件中怎么做呢? 一.首先RTSP获取 h264 裸流 我们上面两篇文章主要讲的是通过 rtsp://Your ip ...
- docker-compose -----单机多容器管理
Compose是用于定义和运行多容器Docker应用程序的工具.通过Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用一个命令,就可以从配置中创建并启动所有服务. Docker-C ...
- mssql 2005安装
SQL Server 2005详细安装过程及配置 说明:个人感觉SQL Server 2005是目前所有的SQL Server版本当中最好用的一个版本了,原因就是这个版本比起其它版本来说要安装简单 ...
- u-boot 移植 --->7、u-bootl流程粗线条梳理
通过前面的调试了解到s5pv210这个芯片的启动流程是需要将u-boot分为两部分的分别为SPL和u-boot.这里我使用网上的方式不直接使用u-boot的SPL连接脚本单独生成SPL的image而是 ...