C# 将 Word 转文本存储到数据库并进行管理

news2024/12/28 6:05:30

目录

前言

1. 创建数据库表格

2. 安装必需的 NuGet 包

3. 转换 Word 文档为文本

4. 将文本存储到数据库

5. 完整示例



前言

C# 是一种通用的编程语言,可以用于开发各种类型的应用程序,包括处理文本和数据库管理。在这篇文章中,我将向您介绍如何使用 C# 将 Word 文档转换为文本并将其存储到数据库中,并提供相应的代码示例。

1. 创建数据库表格

首先,我们需要创建一个数据库表格来存储转换后的文本。假设我们使用的是 Microsoft SQL Server 数据库,我们可以使用以下 SQL 语句创建一个包含两个列的表格:

CREATE TABLE Document
(
    ID INT PRIMARY KEY IDENTITY,
    Content NVARCHAR(MAX)
)

这个表格包含一个自增的 ID 列和一个 NVARCHAR(MAX) 类型的 Content 列,用于存储文本内容。

2. 安装必需的 NuGet 包

接下来,我们需要安装两个必需的 NuGet 包:`Microsoft.Office.Interop.Word` 和 `System.Data.SqlClient`。

在 Visual Studio 中,右键单击您的项目,然后选择 "管理 NuGet 程序包"。在 "浏览" 标签页中搜索并安装这两个包。

3. 转换 Word 文档为文本

使用 Microsoft Office Interop 库提供的功能,我们可以打开 Word 文档并将其转换为纯文本。以下是一个示例方法,可以完成这项任务:

using Microsoft.Office.Interop.Word;

public string ConvertWordToText(string filePath)
{
    Application wordApplication = new Application();
    Document wordDocument = wordApplication.Documents.Open(filePath);
    string text = wordDocument.Content.Text;
    wordDocument.Close();
    wordApplication.Quit();
    
    return text;
}

这个方法创建一个 Word 应用程序实例,并使用 `Documents.Open` 方法打开指定路径的 Word 文档。然后,我们可以使用 `Content.Text` 属性获取文档的纯文本内容。最后,我们记得关闭文档并退出应用程序。

4. 将文本存储到数据库

一旦我们获取到了转换后的文本,我们可以使用 ADO.NET 提供的功能将其存储到数据库中。以下是一个示例方法,可以完成这项任务:

using System.Data.SqlClient;

public void StoreTextToDatabase(string text)
{
    string connectionString = "Data Source=your_server;Initial Catalog=your_database;Integrated Security=True";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        string query = "INSERT INTO Document (Content) VALUES (@Content)";
        SqlCommand command = new SqlCommand(query, connection);
        command.Parameters.AddWithValue("@Content", text);
        command.ExecuteNonQuery();
    }
}

这个方法创建一个 SqlConnection 对象,并使用提供的连接字符串连接到数据库。然后,我们可以使用 INSERT 语句将文本内容插入到 Document 表格中。

在这个示例中,我们使用了参数化查询,以避免 SQL 注入攻击。我们使用 `@Content` 占位符来代替文本内容,并在执行命令之前将实际文本值添加到参数集合中。

5. 完整示例

下面是将上述步骤整合在一起的完整示例:

using Microsoft.Office.Interop.Word;
using System.Data.SqlClient;

public class WordToTextConverter
{
    public void ConvertAndStore(string filePath)
    {
        string text = ConvertWordToText(filePath);
        StoreTextToDatabase(text);
    }

    private string ConvertWordToText(string filePath)
    {
        Application wordApplication = new Application();
        Document wordDocument = wordApplication.Documents.Open(filePath);
        string text = wordDocument.Content.Text;
        wordDocument.Close();
        wordApplication.Quit();
        
        return text;
    }

    private void StoreTextToDatabase(string text)
    {
        string connectionString = "Data Source=your_server;Initial Catalog=your_database;Integrated Security=True";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string query = "INSERT INTO Document (Content) VALUES (@Content)";
            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Content", text);
            command.ExecuteNonQuery();
        }
    }
}

您可以将上述代码添加到您的 C# 项目中,并使用以下代码调用转换和存储方法:

WordToTextConverter converter = new WordToTextConverter();
converter.ConvertAndStore("path_to_word_document.docx");

请注意,您需要将 `your_server` 和 `your_database` 替换为实际的服务器和数据库名称,并确保 Word 文档的路径正确。

这就是将 Word 转换为文本并存储到数据库的基本过程。您可以根据您的实际需求进一步扩展和优化代码。希望对您有所帮助!

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

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

相关文章

10.2024

使用选择排序将{2,9,5,0,1,3,6,8}排序 代码&#xff1a; public class 第十题 {public static void main(String[] args) {int a[]{2,9,5,0,1,3,6,8};int begin0;int enda.length-1;while (begin<end){int mina[begin];int tbegin;for (int ibegin;i<end;i){if(min>…

瑞吉外卖实战学习--完善登录功能

完善登录功能 1、创建自定义过滤器LoginCheckFiler1.1通过WebFilter创建过滤器1.2 验证是否可以拦截请求1.3 代码 2、在启动类加入注解ServletComponentScan 用来扫描过滤器触发所有的过滤器ServletComponentScan 3、完善过滤器的处理逻辑3.1判断是否需要是要放行的请求3.2判断…

基于nodejs+vue考研互助交流系统python-flask-django-php

同时还能为用户提供一个方便实用的考研互助交流系统&#xff0c;使得用户能够及时地找到合适自己的考研信息。管理员在使用本系统时&#xff0c;可以通过后台管理员界面管理用户的信息&#xff0c;也可以发布系统公告&#xff0c;让用户及时了解考研信息。这样&#xff0c;用户…

javaSwing超级玛丽游戏

一、摘要 摘要 近年来&#xff0c;Java作为一种新的编程语言&#xff0c;以其简单性、可移植性和平台无关性等优点&#xff0c;得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序…

EPSON推出RX8804CE为工业机器提供稳定且精准的时钟信号

工业机器是智能工厂的关键主体组成部分&#xff0c;工业机器的时钟稳定性和精确性直接关系到整个系统的生产高效性和稳定性。EPSON推出了面向工业机器、手持设备、室外机等领域的实时时钟模块RX8804CE&#xff0c;可选择32.768 KHz、1024 Hz、1 Hz三种频率输出&#xff0c;温度…

Android视角看鸿蒙第九课-鸿蒙的布局

鸿蒙的四大布局 导读 前面八篇文章描述了鸿蒙app的配置文件&#xff0c;关于版本号&#xff0c;开发版本&#xff0c;桌面图标等等配置方式。从这一篇文章开始学习鸿蒙的UI使用方式。 前面我们学习到鸿蒙有ability和page的区分&#xff0c;ability类似Activity但又不完全一样…

获取高德安全码SHA1

高德开发者平台上给的三种方法 获取安全码SHA1&#xff0c;这里我自己使用的是第三种方法。 1、通过Eclipse编译器获取SHA1 使用 adt 22 以上版本&#xff0c;可以在 eclipse 中直接查看。 Windows&#xff1a;依次在 eclipse 中打开 Window -> Preferances -> Androi…

8节点空间壳单元Matlab有限元编程 | 曲壳单元 | 模态分析 | 3D壳单元 | 板壳理论| 【源代码+理论文本】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

如何安全地添加液氮到液氮罐中

液氮是一种极低温的液体&#xff0c;它在许多领域广泛应用&#xff0c;但在处理液氮时需谨慎小心。添加液氮到液氮罐中是一个常见的操作&#xff0c;需要遵循一些安全准则以确保操作人员的安全和设备的完整性。 选择合适的液氮容器 选用专业设计用于存储液氮的容器至关重要。…

选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

文章目录 1、前言2、 图像处理工具效果对比2.1 Graphics2D实现2.2 Thumbnailator实现2.3 ImageJ实现2.4 JAI&#xff08;Java Advanced Imaging&#xff09;实现2.5 OpenCV实现 3、图像处理工具结果 1、前言 SVD(stable video diffusion)开放了图生视频的API&#xff0c;但是限…

CI/CD实战-jenkins结合docker 5

实验准备&#xff1a; 在docker主机要下载git工具 禁掉key的校验 确保在立即构建项目时不会出现任何报错&#xff1a; 自动化构建docker镜像 在server3上安装docker-ce 修改内核参数 拷贝证书 添加默认仓库 添加harbor仓库的解析 测试拉取 登录harbor私有仓库 在jenkins安装d…

WPF使用外部字体,思源黑体,为例子

1.在工程中新建文件夹&#xff0c;命名为“Font"。 2.将下载好的字体文件复制到Font文件夹。 3.在工程中&#xff0c;加入静态资源 <Window.Resources><FontFamily x:Key"SYBold">/AnalyzeImage;Component/Font/#思源黑体 CN Bold</FontFamily…

k8s的单pod单ip网络模型

背景 在k8s中&#xff0c;不再是每个docker容器一个ip地址&#xff0c;而是每个pod一个ip地址&#xff0c;docker容器只是pod里面的其中一个进程&#xff0c;可能拥有对外的端口号&#xff0c;但是不在为docker容器单独分配ip地址&#xff0c;pod里面的容器共享pod的ip地址 单…

解決flask-restful提示Did not attempt to load JSON data 问题

在使用flask-restfull进行API开发的时候。一旦我使用类似下面的代码从url或者form中获得参数就会出现报错&#xff1a;Did not attempt to load JSON data because the request Content-Type was not ‘application/json’。 代码如下&#xff1a; # Flask_RESTFUl数据解析 f…

2024-03-25 作业

作业要求&#xff1a; 整理思维导图定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转有以下定义&#xff0c;说…

ESCTF-Web赛题WP

0x01-初次见面-怦然心动:your name? 随便输入一个字 根据提示可以看到 我们需要看源代码 直接 搜索 secret 关键字或者 ESCTF flag ESCTF{K1t0_iS_S0_HAPPy} 0x02-小k的请求 更安全的传参 post 参数为ESCTF 值为 love 自己的ip 同时还有个要求 是需要从度娘转过来 https://www…

辅助功能IOU(交并比)_3.2

实现两个目标框的交并比候选框在多目标跟踪中的表达方式及相应转换方法 IOU(Intersection over Union)&#xff0c;“交并比”&#xff0c;是计算机视觉和图像处理中常用的一个评价指标&#xff0c;尤其在目标检测任务中用来衡量模型预测的目标框与真实目标框的重合程度。 具体…

每日一练:LeeCode-200、岛屿数量【DFS递归+BFS队列】

给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的四条边…

以XX大学校园为例的智慧能源管理系统建设方案【能源物联网+智能微电网数字校园、节能校园、低碳校园】

建设背景 贯彻落实《中共中央 国务院关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》和《国务院关于印发2030年前碳达峰行动方案的通知》要求&#xff0c;把绿色低碳发展纳入国民教育体系。 2021年3月26日为推动信息技术与教育教学深度融合&#xff0c;教育部印…

Qt 计算两条直线QLineF的重叠部分,如何存在则返回该直线

计算两条直线QLineF的重叠部分 效果 使用示例 QLineF intersection;bool isSuccess getOverlapSegment(line1, line2, intersection);源码 bool getOverlapSegment(const QLineF& line1, const QLineF& line2, QLineF& overlap) {qreal slope1 (line1.p2().y()…