C#使用NPOI进行Excel和Word文件处理(二)

news2024/11/25 7:10:31

文章目录

      • 使用NPOI在C#中处理Excel和Word文件
        • 1. 什么是NPOI?
        • 2. 安装NPOI
          • 2.1 VisualStudio2019引入NPOI
        • 3. 处理Excel文件
          • 读取Excel文件
          • 写入Excel文件
        • 4. 处理Word文件
          • 读取Word文件
          • 写入Word文件
      • 总结
      • Github 地址链接
      • 参考例子

使用NPOI在C#中处理Excel和Word文件

在C#开发中,处理Microsoft Office文件(如Excel和Word)是一个常见的需求。NPOI是一个强大的开源库,它基于Apache POI项目,为.NET平台提供了读取和写入这些文件的能力。本文将介绍如何使用NPOI在C#中处理Excel和Word文件,并提供一些示例代码。

1. 什么是NPOI?

NPOI是一个.NET库,用于读取和写入Microsoft Office格式文件,包括Excel (.xls, .xlsx)和Word (.doc, .docx)。NPOI使开发者可以在不依赖于Office组件的情况下操作Office文件,非常适合在服务器端应用中使用。

2. 安装NPOI

在开始之前,你需要在你的项目中安装NPOI。可以通过NuGet包管理器来安装。打开Visual Studio的“包管理器控制台”,然后运行以下命令:

Install-Package NPOI
2.1 VisualStudio2019引入NPOI

在这里插入图片描述

3. 处理Excel文件
读取Excel文件

以下示例展示了如何读取Excel文件并输出其内容:

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

class Program
{
    static void Main(string[] args)
    {
        string filePath = "example.xlsx";

        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            IWorkbook workbook = new XSSFWorkbook(file);
            ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表

            for (int row = 0; row <= sheet.LastRowNum; row++)
            {
                IRow currentRow = sheet.GetRow(row);

                for (int col = 0; col < currentRow.LastCellNum; col++)
                {
                    ICell cell = currentRow.GetCell(col);
                    Console.Write(cell.ToString() + "\t");
                }
                Console.WriteLine();
            }
        }
    }
}
写入Excel文件

以下示例展示了如何创建并写入一个新的Excel文件:

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

class Program
{
    static void Main(string[] args)
    {
        IWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        IRow row = sheet.CreateRow(0);
        row.CreateCell(0).SetCellValue("Name");
        row.CreateCell(1).SetCellValue("Age");

        row = sheet.CreateRow(1);
        row.CreateCell(0).SetCellValue("John Doe");
        row.CreateCell(1).SetCellValue(30);

        using (FileStream file = new FileStream("output.xlsx", FileMode.Create, FileAccess.Write))
        {
            workbook.Write(file);
        }
    }
}
4. 处理Word文件
读取Word文件

以下示例展示了如何读取Word文件并输出其内容:

using System;
using System.IO;
using NPOI.XWPF.UserModel;

class Program
{
    static void Main(string[] args)
    {
        string filePath = "example.docx";

        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            XWPFDocument doc = new XWPFDocument(file);
            foreach (var para in doc.Paragraphs)
            {
                Console.WriteLine(para.Text);
            }
        }
    }
}
写入Word文件

以下示例展示了如何创建并写入一个新的Word文件:

using System;
using System.IO;
using NPOI.XWPF.UserModel;

class Program
{
    static void Main(string[] args)
    {
        XWPFDocument doc = new XWPFDocument();
        XWPFParagraph para = doc.CreateParagraph();
        XWPFRun run = para.CreateRun();
        run.SetText("Hello, World!");

        using (FileStream file = new FileStream("output.docx", FileMode.Create, FileAccess.Write))
        {
            doc.Write(file);
        }
    }
}

总结

通过NPOI,你可以轻松地在C#中处理Excel和Word文件,无需依赖Office组件。本文提供的示例代码展示了如何读取和写入这些文件的基本操作。你可以根据自己的需求扩展这些示例,以实现更多功能。

希望这篇文章能帮助你更好地理解如何在C#中使用NPOI进行Excel和Word文件的处理。如果你有任何问题或建议,欢迎在评论区留言讨论。

Github 地址链接

https://github.com/nissl-lab/npoi-examples.git
https://github.com/nissl-lab/npoi.git

参考例子

 try
            {
                string fileName = Application.StartupPath + @"\aramexConfig\docx\templateWord.docx";//模板
                Dictionary<string, object> aramexShippmentMap = (Dictionary<string, object>)obj;
                AramexShippment aramexShippment = (AramexShippment)aramexShippmentMap["aramexShippment"];
                string wordPath = aramexShippmentMap["wordPath"].ToString();
                string wordToPngName = aramexShippmentMap["wordToPngName"].ToString();
                if (File.Exists(wordPath + wordToPngName + ".JPG"))
                {//文件存在就删除
                    File.Delete(wordPath + wordToPngName + ".JPG");
                }
                //string saveFile = @"D:\testPng\案例1.docx";
                XWPFDocument document = null;
                using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
                {
                    document = new XWPFDocument(file);//将模板加载进新的word中
                }
                #region 表格
                document.Tables[0].Rows[0].GetCell(1).SetText("test1");
                document.Tables[0].Rows[1].GetCell(1).SetText("test2");
                document.Tables[0].Rows[2].GetCell(1).SetText("test3");
                document.Tables[0].Rows[3].GetCell(1).SetText(DateTime.Now.ToString("yyyy-MM-dd"));
 
                document.Tables[0].Rows[4].GetCell(1).SetText("test4");
                document.Tables[0].Rows[0].GetCell(4).SetText("test5");
                #endregion 
//保留到本地
                //FileStream fs = new FileStream(wordPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
                //document.Write(fs);
                //fs.Close();
                //document.Close();
//保留到缓存流中
                MemoryStream stream = new MemoryStream();
                document.Write(stream);
                stream.Close();
                document.Close();
 
            }
            catch (Exception ex)
            {
                string error = ex.Message.ToString();
            }

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

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

相关文章

软件生命周期(二)

1. 软件生命周期定义 软件生命周期&#xff08;SDLC&#xff09;是软件开始研制到最终废弃不用所经历的各个阶段 – 软件开发模型 2. 瀑布型生命周期模型 瀑布模型规定自上而下&#xff0c;相互衔接的固定次序&#xff0c;如同瀑布流水&#xff0c;逐级下落&#xff0c;具有…

探索全光网技术 | 全光网络技术方案选型建议三(医院场景)

目录 一、场景设计需求二、医院场景拓扑三、部署方式四、产品相关规格说明五、方案优势与特点 注&#xff1a;本文章参考资料为&#xff1a;华三官方资料 - “新华三全光网络3.0解决方案&#xff08;教育&#xff09;”与 锐捷官方资料 - “【锐捷】高校极简以太全光3.X方案设计…

c++ + linux+cmake编译动态库+so调用

步骤如下&#xff1a; 1. 创建动态库2. 编译动态库3. 使用动态库4. 编译程序并链接动态库5. 运行程序 1. 创建动态库 // hello.cpp #include <iostream> #include <string> using namespace std; int hello(string a) {cout << "hello "<< …

树状数组基础知识以及相关习题

文章目录 什么是树状数组&#xff1f;如何理解树状数组如何理解精髓lowbit二叉树和树状数组的结构树状数组的优点树状数组模板单点修改&#xff0c;区间查询区间修改&#xff0c;单点查询区间修改&#xff0c;区间查询树状数组法线段树法 树状数组基础练习题逆序对动态求连续区…

C语言进阶版第六课—操作符

文章目录 1. 操作符的分类2. 原码、反码、补码3. 移位操作符4. 位操作符4.1 位操作符详解4.2 练习4.2.1 不能创建临时变量&#xff0c;实现两个整数的交换4.2.2 求一个整数存储在内存中的二进制1的个数4.2.3 判断一个数是不是2的次方数4.2.4 将二进制第n位置0或置1 5. 逗号表达…

git拉代码

第一步 第二步 第三步

Mysql原理与调优-InnoDB页结构

目录 1.绪论 2.Mysql的数据页组成 2.1 基本组成 2.1 文件头 2.2 页头部&#xff08;Page Header&#xff09; 3.3 infimum supremum 3.4 用户记录 和 空闲空间 3.4.1 用户插入数据步骤 3.4.2 删除数据 3.5 页目录 3.5.1 插入时维护槽的步骤 3.5.2 查询元素的步骤 …

为之“毫厘”、追之“千里”,“仅退款”的存废之争

文丨郭梦仪 橘子&#xff08;化名&#xff09;看到了待审核的起诉书&#xff0c;气不打一处来。这次白嫖行为橘子不打算再忍了。 橘子是拼多多商家&#xff0c;经营化妆品公司&#xff0c;5月份&#xff0c;一个顾客收到货4天说用了过敏&#xff0c;直接退款没有退回产品。橘…

Project Euler_Problem 587_Concave Triangle (背包问题)

原问题&#xff1a; 代码&#xff1a; void solve() {ll i, j, k, p, q, u, v, l, r, x, y, z, z1;z 0;double a, b, c;N 1e9;n 250250;p 1e16;z 250;for (i 1; i < n; i) {C[i] M.NT.prime_pow(i, i, z);}A[0] 1;for (i 1; i < n; i) { x C[i];for (j …

潮流时尚,音质在线的悠律ringbuds pro开放式耳机体验评测

选购耳机时你最看重的要素是什么&#xff1f;对笔者来说&#xff0c;“音质”绝对排在了第一位。然而&#xff0c;当前市场上多数开放式蓝牙耳机音质和舒适性欠佳&#xff0c;让人难以抉择。最近悠律声学品牌推出全新的 OWS 蓝牙耳机ringbuds pro&#xff0c;它以卓越音质、时尚…

streamlit (python构建web)之环境搭建

目录 前言 1. 什么是Streamlit&#xff1f; 2. Streamlit的原理 2.1 demo1-运行计时程序 2.2 demo2-随即密码生成器 3. 安装Streamlit 3.1 安装方式一 3.2 安装方式二 3.2.1 安装 conda 3.2.2 新建一个 conda 环境 3.2.3 激活 conda 环境 3.2.4 安装 Streamlit 库 …

微信小程序教程011-2:京西购物商城实战之TabBar实现

2、tabBar 2.0 创建tabBar分支 运行如下命令,基于master分支,创建本地tabBar子分支,用来开发和tabBar相关的功能 git checkout -b tabbar2.1 创建tabBar页面 在pages目录中,创建首页(home)、分类(cate)、购物车(cart)、我的(my)这4个tabBar页面,在HBuilderX中…

PADS文件与AD文件如何相互转换?

大家好&#xff0c;我是山羊君Goat。 在电子硬件设计中&#xff0c;常常用用到3款EDA设计软件&#xff1a;Altium Designer, Pads, cadence。 Altium Designer: 在高校中使用非常普遍&#xff08;相信很多硬件工程师接触的第一款设计软件就是Altium Designer&#xff09;&…

Python 用户输入和while循环

1、input()函数的工作原理&#xff08;用户输入&#xff09; input()函数让程序暂停运行&#xff0c;等待用户输入一些文本。获取用户输入后&#xff0c;Python将其赋给变量&#xff0c;以其使用。 在input()函数接受一个参数&#xff0c;既要向用户显示的提示&#xff0c;为了…

Flink 实时数仓(八)【DWS 层搭建(二)流量域、用户域、交易域搭建】

前言 今天的任务是完成流量域最后一个需求、用户域的两个需求以及交易域的部分需求&#xff1b; 1、流量域页面浏览各窗口汇总表 任务&#xff1a;从 Kafka 页面日志主题读取数据&#xff0c;统计当日的首页和商品详情页独立访客数。 注意&#xff1a;一般我们谈到访客&…

广东省造林绿化施工丙级资质2024年9月开通申报

关于广东省造林绿化施工丙级资质2024年9月的申报情况&#xff0c;可以归纳如下&#xff1a; 一、申报时间 具体时间&#xff1a;2024年9月1日至9月30日。在此期间&#xff0c;相关企业可以在网上提交申请。 二、申报条件 资历和信誉 1、独立企事业法人资格&#xff1a;申请…

程序跟随系统主题色切换主题

如果程序要跟随系统主题色进行切换&#xff0c;需监听当前系统的主题色&#xff0c;下面介绍Windows和MacOS下获取当前系统主题的方法 Windows 系统切换主题 以win10为例&#xff0c;点击右键选择个性化&#xff0c;进入个性化页面&#xff0c;选择左侧颜色的Tab&#xff0c…

mp3格式转换器哪个好用?汇总七款音频格式转换方法(无损转换)

音乐已经成为我们生活中不可或缺的一部分。但是在播放的时候&#xff0c;可能会遇到音频格式不兼容的情况。特别是在一些下载站或音乐平台获取的音频&#xff0c;有些特殊格式在播放器上无法正常播放&#xff0c;一般这种情况我们需要借助mp3转换器解决。 mp3是一种常见的数字音…

三更的springsecurity课程个人笔记总计4万字,全部测试通过,代码cv即可

SpringSecurity b站 40.源码讲解部分说明_哔哩哔哩_bilibili BV1mm4y1X7Hc 以下全为个人总结&#xff0c;不能代表官方&#xff0c;有错误还请指出&#xff08;全部测试通过&#xff09;&#xff08;1刷视频&#xff09; 1-简介 tip 接下来的所有类不会包含import信息&am…

爬虫代理教程:爬虫代理池部署+高并发实现方法

在数据爬取的世界里&#xff0c;代理IP就像是爬虫的隐身衣&#xff0c;帮助我们在网络上自由穿梭&#xff0c;避免被目标网站识别封禁。今天我就来分享一下爬虫代理池的部署和高并发实现的技巧&#xff0c;希望能对大家有所帮助。 什么是爬虫代理池&#xff1f; 首先&#xf…