NPOI帮助类

Npoi操作word文档的完整帮助类 NPOI创建DOCX常用操作,网上一直没有什么可用的例子供大家参考。我特意写了这个帮助类,亲测可用。 立即下载

ExcelHelper.cs

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

namespace BaiduMap
{
    public class ExcelHelper
    {
        private bool disposed;
        private readonly string fileName; //文件名
        private FileStream fs;
        private IWorkbook workbook;

        public ExcelHelper(string fileName)
        {
            this.fileName = fileName;
            disposed = false;
        }

        /// <summary>
        /// 将DataTable数据导入到excel中
        /// </summary>
        /// <param name="data">要导入的数据</param>
        /// <param name="isColumnWritten">DataTable的列名是否要导入</param>
        /// <param name="sheetName">要导入的excel的sheet的名称</param>
        /// <returns>导入数据行数(包含列名那一行)</returns>
        public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten)
        {
            var i = 0;
            var j = 0;
            var count = 0;
            ISheet sheet = null;

            fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                workbook = new XSSFWorkbook();
            else if (fileName.IndexOf(".xls") > 0) // 2003版本
                workbook = new HSSFWorkbook();

            try
            {
                if (workbook != null)
                {
                    sheet = workbook.CreateSheet(sheetName);
                }
                else
                {
                    return -1;
                }

                if (isColumnWritten) //写入DataTable的列名
                {
                    var row = sheet.CreateRow(0);
                    for (j = 0; j < data.Columns.Count; ++j)
                    {
                        row.CreateCell(j).SetCellValue(data.Columns[j].ColumnName);
                    }
                    count = 1;
                }
                else
                {
                    count = 0;
                }

                for (i = 0; i < data.Rows.Count; ++i)
                {
                    var row = sheet.CreateRow(count);
                    for (j = 0; j < data.Columns.Count; ++j)
                    {
                        row.CreateCell(j).SetCellValue(data.Rows[i][j].ToString());
                    }
                    ++count;
                }
                workbook.Write(fs); //写入到excel
                return count;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
                return -1;
            }
        }

        /// <summary>
        ///     将excel中的数据导入到DataTable中
        /// </summary>
        /// <param name="sheetName">excel工作薄sheet的名称</param>
        /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
        /// <returns>返回的DataTable</returns>
        public DataTable ExcelToDataTable(string sheetName, bool isFirstRowColumn)
        {
            ISheet sheet = null;
            var data = new DataTable();
            var startRow = 0;
            try
            {
                fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                    workbook = new XSSFWorkbook(fs);
                else if (fileName.IndexOf(".xls") > 0) // 2003版本
                    workbook = new HSSFWorkbook(fs);

                if (sheetName != null)
                {
                    sheet = workbook.GetSheet(sheetName);
                    if (sheet == null) //如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet
                    {
                        sheet = workbook.GetSheetAt(0);
                    }
                }
                else
                {
                    sheet = workbook.GetSheetAt(0);
                }
                if (sheet != null)
                {
                    var firstRow = sheet.GetRow(0);
                    int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数

                    if (isFirstRowColumn)
                    {
                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                        {
                            var cell = firstRow.GetCell(i);
                            if (cell != null)
                            {
                                cell.SetCellType(CellType.String);
                                var cellValue = cell.StringCellValue;
                                if (!string.IsNullOrEmpty(cellValue))
                                {
                                    var column = new DataColumn(cellValue);
                                    data.Columns.Add(column);
                                }
                            }
                        }
                        startRow = sheet.FirstRowNum + 1;
                    }
                    else
                    {
                        //生成列
                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                        {
                            var column = new DataColumn("列"+i);
                            data.Columns.Add(column);
                        }
                        startRow = sheet.FirstRowNum;
                    }

                    //最后一列的标号
                    var rowCount = sheet.LastRowNum;
                    for (var i = startRow; i <= rowCount; ++i)
                    {
                        var row = sheet.GetRow(i);
                        if (row == null) continue; //没有数据的行默认是null       

                        var dataRow = data.NewRow();
                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                        {
                            if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                                dataRow[j] = row.GetCell(j).ToString();
                        }
                        data.Rows.Add(dataRow);
                    }
                }

                return data;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
                return null;
            }
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (fs != null)
                        fs.Close();
                }

                fs = null;
                disposed = true;
            }
        }
    }
}

使用

 var filePath=Environment.CurrentDirectory + "\\test.xlsx"
 var dt = new DataTable();
 dt= new ExcelHelper(filePath).ExcelToDataTable("test", false);
NPOIHelper 用于C#操作Execl类 NPOIHelper 用于C#操作Execl类 导入Execl 导出Execl 读取Sheet 立即下载

相关推荐

GNSS接收机性能测试全攻略:从实验室到真实场景

本文系统介绍了GNSS接收机从实验室到真实场景的完整性能测试流程。首先通过GNSS模拟器进行射频传导测试,评估接收机的基础性能;其次进行天线OTA测试,考察整机系统表现;最后通过精心设计的外场路测,在复杂环境中验证其实际定位精度与可靠性。文章强调,只有结合可控的实验室验证与多变的外场挑战,才能对接收机性能做出全面、真实的评价。

weixin_28365523的博客 510

c# 基于NPOI的Excel通用帮助类库

【代码】c# 基于NPOI的Excel通用帮助类库。

一个编程的同学 593

飞书多维表格+影刀RPA:我如何用3个指令搞定每周的销售数据自动汇总(附完整配置截图)

本文详细介绍了如何利用飞书多维表格和影刀RPA实现销售数据的自动化汇总,通过三个核心指令(建立链接、列出记录、更新记录)简化繁琐的手工操作。文章包含完整的配置截图和实战指南,帮助用户快速部署自动化流程,提升工作效率。

weixin_29273849的博客 284

C#经常操作excel使用的NPOI帮助类

1、nuget NPOI 2、excel帮助类代码如下: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Globalization; using System.IO; using .

IT_ziliang的博客 1331

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1939

Multisim 14.0实战:从零搭建可调幅多波形信号发生器(附仿真文件)

本文详细介绍了如何在Multisim 14.0中从零搭建一个可调幅多波形信号发生器,涵盖方波、三角波和正弦波的生成原理与实现步骤。通过核心电路架构解析、关键参数设计及Multisim实战操作,帮助电子工程学习者和硬件工程师掌握信号发生器的设计与调试技巧,并提供仿真文件供实践验证。

nokia的博客 1073

WPF中,基于MVVM框架,使用NPOI导出数据库赋值的excel表格

WPF中,基于MVVM框架,使用NPOI导出数据库赋值的excel表格

zhaohongyun55555的博客 707

【Windows Server 2019】活动目录 (Active Directory) ——将计算机加入域和脱离域

博文介绍了如何将计算机加入AD域和脱离AD域,包括加入域,验证客户机加入到域后的信息,使用域账户用户在客户机上登录,使用本地账户用户在计算机上登录,脱离域。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6169

轻松处理Excel文件:基于NPOI的xls帮助类推荐

轻松处理Excel文件:基于NPOI的xls帮助类推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在日常开发中,处理Excel文件是一个常见的需求,无论是数据导入还是导出,Excel文件的格式兼容性和操作便捷性都是开发者关注的重点。为了解决这一问题,我们推荐一个基于NPOI的xls帮助类,该帮助类支持Excel 2003(.xls)和Excel 2007(.xls...

gitblog_09759的博客 900

【华为OD机试真题】458、堆内存申请 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

题目描述 >有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。

KJ.JK 1万+

(第100天)Oracle GoldenGate 常见故障处理指南

OGG 运维的核心在于细致的配置管理和主动的问题排查。熟悉常见错误、掌握关键操作流程、并善用日志和调试工具,是保障数据同步任务稳定运行的关键。希望这份指南能帮助您更高效地解决 OGG 同步中遇到的问题。祝您运维顺利!

LuciferLiu_DBA 300

C# NPOI导出导入Excel帮助类 - 实用 - lbx

1、准备工作 在管理NuGet程序包中搜索 NPOI,安装 NPOI 到要项目中。 2、帮助类 /// &amp;lt;summary&amp;gt; /// DataTable写入Excel /// &amp;lt;/summary&amp;gt; /// &amp;lt;param name=&quot;dt&quot;&amp;gt;&amp;lt;/param&amp;gt; /// &amp;lt;par

lbx_15887055073的博客 2678

【STM32实物】基于STM32+ESP32+手机APP设计的智能宠物喂食系统

本文以STM32单片机为主控MCU,配有压力传感器、温湿度传感器、光照强度传感器、蜂鸣器等,设计了一款可以远程控制的宠物智能喂食系统。用户可以通过APP下达指令,控制宠物的喂食。每天可以根据设置的数据进行精准喂食,成本相对较低的宠物喂食装置。该装置使用步进电机控制投食仓门的开闭,通过压力传感器和时钟系统控制每日的投喂量和投喂时间。每次投食后蜂鸣器会提醒宠物进食,树立每日定点进食的习惯。经测试得出,该设备确实能实现每日定时定量投喂。系统整体运行顺畅,所有预期功能得以实现。它非常适合解决宠物主人不在家时影响宠物

嵌入式阿齐Archie 2万+

NET npoi帮助类

nuget添加npoi /// <summary> /// npoi帮助类 /// </summary> public static class NpoiHelper { /// <summary> /// 根据文件路径,获取表格集合 /// &...

a1346236的博客 248

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NPOI数据导入导出帮助管理类

NPOI数据导入导出帮助管理类

枫林街末 1442

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NPOI帮助类-数据集写入Excel

使用NPOI.2.4.1版本 资源地址:https://download.youkuaiyun.com/download/qq_33556442/11955462 环境:Win10+VS2019 1.创建一个应用程序 2.安装NPOI,打开程序包管理控制台,输入 Install-Package NPOI,按回车 3.创建一个类,命名为NpoiHelper 4.撰写帮助类(...

七海桑城 692

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

使用NPOI、泛型、反射实现的通用excel帮助类

现在的项目基本都会使用一些主流的orm框架,几乎不会再用到datable 所以个人使用npoi、泛型、反射写了一个适用于主流orm框架的excel导入、导出帮助类,可以根据实体自动反射出需要导入导出的列名,导入excel时直接生成List<T> 可使用ef、dapper等orm框架直接批量插入List<T> 使用ado.net 的话个人还是觉得写datatable做批量导入好一点 第一步:nuget包安装npoi 第二步:新建ExcelHelper类: 然后直接.

lvpeng6的博客 686

Npoi导入和导出帮助类

#region Npoi导入导出 /// &lt;summary&gt; /// Excel导入成Datable /// &lt;/summary&gt; /// &lt;param name="file"&gt;导入路径(包含文件名与扩展名)&lt;/param&gt; /// &lt;returns&gt;&lt;/retu..

qq_28017061的博客 876

c# NPOI 操作 Excel 帮助类

【代码】c# NPOI 操作 Excel 帮助类。

qq_36522188的博客 513

npoi html富文本,代码片段: 分享代码片段。有access 帮助类,sqlsugar 帮助类,NPOI帮助类,上传帮助类, kindeditor 帮助类...

代码片段分享代码片段。有access 帮助类,sqlsugar 帮助类等。AccessHelperaccess数据库帮助类, crud方法,含有分页方法。SqlServerHelperSqlServer Sql帮助类和扩展方法,包含分页方法和动态条件。SqlSugarExtensions基于sqlsugar orm,自己封装的简易扩展方法类。代码末尾含有使用示例。FreeSqlHelper基于fr...

weixin_29616999的博客 211
上一篇: 百度地图爬虫(c#)
下一篇: oracle正则表达式regexp_like的用法详解
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值