C#Winform使用NPOI获取word中的内容

本文介绍了如何使用NPOI库处理Word文档,通过创建实体类`WaterData`,提取表格和段落内容,然后将数据存储到数据库或Excel。作者展示了从特定文件读取、解析和存储数据的具体步骤。

需求

想要获取word里面的内容,如下图所示:

在这里插入图片描述

有一张表和一段文本,并将它们存入数据库或者Excel

步骤

添加NPOI的库,如下图所示:

在这里插入图片描述

输入NPOI,如下图所示:

在这里插入图片描述

选择安装

安装完成之后,需要引用NPOI.XWPF.UserModel

在窗体上添加一个button按钮,如下图所示:

在这里插入图片描述

按钮点击事件的代码如下:

 private void button1_Click(object sender, EventArgs e)
        {
            using (FileStream fs = new FileStream("你的word文件路径", FileMode.Open, FileAccess.Read))
            {
                XWPFDocument doc = new XWPFDocument(fs);
                var text = doc.Paragraphs[0].Text;
                XWPFTable table = doc.Tables[0];
                foreach (var row in table.Rows)
                {
                    Debug.WriteLine("Row:");
                    foreach (var cell in row.GetTableCells())
                    {
                        string cellText = cell.GetText();
                        Debug.WriteLine("Cell Text: " + cellText);
                    }
                }
            }
        }

其中 using (FileStream fs = new FileStream(“你的word文件路径”, FileMode.Open, FileAccess.Read))中第一个参数为word文件路径,第二个参数为文件模式,第三个参数为文件权限。

运行的结果,如下图所示:

在这里插入图片描述

查看doc,如下图所示:

在这里插入图片描述

可以发现整个文档,有两个元素

其实第一个元素是一个表,如下图所示:

在这里插入图片描述

总共有14行

另一个元素是段落,如下图所示:

在这里插入图片描述

表的文本内容如下所示:

在这里插入图片描述

段落的文本内容如下:

在这里插入图片描述

确定了doc中有我们需要的内容,现在是想着怎么把内容提取出来

我的方案是建一个实体类,将数据导入到实体类中,修改之后的代码如下所示:

using NPOI.SS.UserModel;
using NPOI.XWPF.UserModel;
using System.Diagnostics;
using System.IO;
namespace WordDemo
{
    //创建一个需要的数据类
    public class WaterData
    {
        public string? name { get; set; }
        public string? date { get; set; }
        public string? wl { get; set; }
        public string? fr { get; set; }
        public string? source { get; set; }
    }

    public partial class Form1 : Form
    {
        //创建一个WaterData对象列表
        List<WaterData> WaterDataList = new List<WaterData>();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (FileStream fs = new FileStream("D:\\学习路线\\网络爬虫\\港口水情项目\\20231106水情.docx", FileMode.Open, FileAccess.Read))
            {
                XWPFDocument doc = new XWPFDocument(fs);
                var text = doc.Paragraphs[0].Text;
                XWPFTable table = doc.Tables[0];
                for (int i = 1; i < table.Rows.Count; i++)
                {
                    var waterData = new WaterData();
                    var tableCells = table.Rows[i].GetTableCells();
                    waterData.name = tableCells[0].GetText();
                    waterData.date = tableCells[1].GetText();
                    waterData.wl = tableCells[2].GetText();
                    waterData.fr = tableCells[3].GetText();
                    waterData.source = text;
                    WaterDataList.Add(waterData);
                }

            }
        }
    }
}

运行之后,WaterDataList中的内容如下所示:

在这里插入图片描述

实现了我们的需求,现在可以将WaterDataList中的内容存入数据库或者Excel了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值