返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#基于NPOI操作Excel
  • 246
分享到

C#基于NPOI操作Excel

2024-04-02 19:04:59 246人浏览 泡泡鱼
摘要

NPOI简介 NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或excel文档进行读写操作。 NPOI是一个开源的C#读写Ex

NPOI简介

NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Wordexcel文档进行读写操作。

NPOI是一个开源C#读写Excel、WORD等微软OLE2组件文档的项目

优势

(一)传统操作Excel遇到的问题:

1、如果是.net,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。

2、Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。

3、导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。

4、Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。

(二)使用NPOI的优势

1、您可以完全免费使用该框架

2、包含了大部分EXCEL的特性(单元格样式、数据格式、公式等等)

3、专业的技术支持服务(24*7全天候) (非免费)

4、支持处理的文件格式包括xls, xlsx, docx.

5、采用面向接口的设计架构( 可以查看 NPOI.SS 的命名空间)

6、同时支持文件的导入和导出

7、基于.net 2.0 也支持xlsx 和 docx格式(当然也支持.net 4.0)

8、来自全世界大量成功且真实的测试Cases

9、大量的实例代码

11、你不需要在服务器上安装微软的Office,可以避免版权问题。

12、使用起来比Office PIA的api更加方便,更人性化。

13、你不用去花大力气维护NPOI,NPOI Team会不断更新、改善NPOI,绝对省成本。

14、不仅仅对与Excel可以进行操作,对于doc、ppt文件也可以做对应的操作

NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能“理解”OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常,读入并理解结构远比导出来得复杂,因为导入你必须假设一切情况都是可能的,而生成你只要保证满足你自己需求就可以了,如果把导入需求和生成需求比做两个集合,那么生成需求通常都是导入需求的子集,这一规律不仅体现在Excel读写库中,也体现在pdf读写库中,目前市面上大部分的pdf库仅支持生成,不支持导入。

操作Excel

        /// <summary>
        /// 基于NPOI操作Excel
        /// </summary>
        public void ExportExcel()
        {
            string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Excel\\";
            string fileName = filePath + "TestExcel_" + DateTime.UtcNow.ToString("yyyyMMddHHmmss") + ".xlsx";
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }

            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                XSSFWorkbook workbook = new XSSFWorkbook();

                //创建单元格样式
                ICellStyle cellStyle = workbook.CreateCellStyle();

                //设置为文本格式,也可以为 text,即 dataFORMat.GetFormat("text");
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;    //下边框线
                cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;      //左边框线
                cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;     //右边框线
                cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;       //上边框线

                //设置页签名
                ISheet sheet = workbook.CreateSheet("导出号段");

                //设置列宽
                sheet.SetColumnWidth(4, 10 * 500);//第五列 BTMac
                sheet.SetColumnWidth(5, 10 * 500);//第六列 WifiMAC1
                sheet.SetColumnWidth(6, 10 * 500);//第七列 WifiMAC2
                sheet.SetColumnWidth(7, 10 * 500);//第八列 HARD_CODE
                sheet.SetColumnWidth(8, 10 * 500);//第九列 QR_CODE

                //Excel表头栏位
                string[] excelHeader = new string[] { "IMEI1", "IMEI2", "MEID", "MSN编号", "蓝牙MAC地址", "无线MAC地址1", "无线MAC地址2", "HARD_CODE", "QR_CODE", "TOKEN", "KEYMASTER" };
                //设置表头字段
                IRow headerRow = sheet.CreateRow(0);
                for (int i = 0; i < excelHeader.Length; i++)
                {
                    headerRow.CreateCell(i).SetCellValue(excelHeader[i]);
                }

                //展开的数量
                int count = int.Parse(LoginInfo.QtY);

                //十六进制转为十进制
                Int64 StarthardCode = Int64.Parse(LoginInfo.HardCode, NumberStyles.HexNumber);
                Int64 StartbtMAC = Int64.Parse(LoginInfo.BTMAC, NumberStyles.HexNumber);
                Int64 StartWifiMAC1 = Int64.Parse(LoginInfo.WiFiMAC1, NumberStyles.HexNumber);
                Int64 StartWifiMAC2 = 0;
                if (LoginInfo.IsEnableWiFiMAC2)
                {
                    StartWifiMAC2 = Int64.Parse(LoginInfo.WiFiMAC2, NumberStyles.HexNumber);
                }


                //填充Excel
                for (int i = 0; i < count; i++)
                {
                    IRow row = sheet.CreateRow(i + 1);
                    //BTMAC
                    Int64 current_btMAC = StartbtMAC + i;
                    //转回十六进制,大写
                    //string strCurrent_btMAC = Convert.ToString(current_btMAC, 16).ToUpper();
                    string strCurrent_btMAC = current_btMAC.ToString("X").ToUpper();
                    row.CreateCell(4).SetCellValue(strCurrent_btMAC);


                    //WifiMAC1
                    Int64 current_WifiMAC1 = StartWifiMAC1 + i;
                    //转回十六进制,大写
                    string strCurrent_WifiMAC1 = current_WifiMAC1.ToString("X").ToUpper();
                    row.CreateCell(5).SetCellValue(strCurrent_WifiMAC1);


                    //WifiMAC2
                    if (LoginInfo.IsEnableWiFiMAC2)
                    {
                        Int64 current_WifiMAC2 = StartWifiMAC2 + i;
                        //转回十六进制,大写
                        string strCurrent_WifiMAC2 = current_WifiMAC2.ToString("X").ToUpper();
                        row.CreateCell(6).SetCellValue(strCurrent_WifiMAC2);

                    }

                    //HardCode
                    Int64 current_HardCode = StarthardCode + i;
                    //转回十六进制,小写
                    string strCurrent_HardCode = current_HardCode.ToString("X").ToLower();
                    row.CreateCell(7).SetCellValue(strCurrent_HardCode);

                }

                workbook.Write(fs);           //写入到Excel中          
            }
        }

到此这篇关于C#基于NPOI操作Excel的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#基于NPOI操作Excel

本文链接: https://lsjlt.com/news/147734.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C# 基于NPOI操作Excel
    目录1 单元格下拉框 2 添加批注 3 读取数据 结语 常见问题解决NPOI 导出添加批注功能POI导出Excel时下拉列表值超过255的问题日期格式导入混乱注意1 单元格下拉框 ...
    99+
    2024-04-02
  • C#基于NPOI操作Excel
    NPOI简介 NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写Ex...
    99+
    2024-04-02
  • C#基于NPOI怎么操作Excel
    这篇文章主要介绍“C#基于NPOI怎么操作Excel”,在日常操作中,相信很多人在C#基于NPOI怎么操作Excel问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#基于NPOI怎么操作Excel”的疑惑有所...
    99+
    2023-06-30
  • C#中怎么用NPOI操作Excel
    这篇“C#中怎么用NPOI操作Excel”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中怎么用NPOI操作Excel”文...
    99+
    2023-06-29
  • C#利用NPOI操作Excel(单元格设置)
    本文实例为大家分享了C#利用NPOI操作Excel的单元格设置,供大家参考,具体内容如下 一.合并单元格 NOPI支持对单元格进行合并,还有单元格格式设置! 注意: 在进行单元格合并...
    99+
    2024-04-02
  • C#操作NPOI实现Excel数据导入导出
    目录1.NpoiExcelHelper.cs  Npoi操作Excel类2.WEB项目的调用方法首先在项目中引用NPOI,通过管理NuGet程序包,搜索NPOI,...
    99+
    2023-02-15
    C# NPOI Excel数据导入导出 C# Excel数据导入导出 C# NPOIExcel
  • 基于NPOI用C#开发的Excel以及表格设置
    本文为大家分享了基于NPOI用C#开发的Excel以及表格设置,供大家参考,具体内容如下 最近在项目中需要导出Excel。在这里做个记录。在网上查阅了一些资料。将自己最终的代码分享在...
    99+
    2024-04-02
  • 关于Python操作Excel的基本方法
    目录写入Excel1. 安装第三方模块2. 编写代码读取Excel1. 安装第三方模块小结写入Excel 1. 安装第三方模块 修改excel可以使用xlwt模块 pip insta...
    99+
    2023-05-18
    Python Excel Python操作Excel
  • C#使用NPOI导出Excel类封装
    NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写Excel、WOR...
    99+
    2024-04-02
  • C#使用NPOI读取excel转为DataSet
    本文实例为大家分享了C#使用NPOI读取excel转为DataSet的具体代码,供大家参考,具体内容如下 NPOI读取excel转为DataSet /// <summary&g...
    99+
    2024-04-02
  • C#使用NPOI库读写Excel文件
    本文实例为大家分享了C#使用NPOI库读写Excel文件的具体代码,供大家参考,具体内容如下 第一步添加程引用: 右键项目工程 — 管理 NuGet程序包 —...
    99+
    2024-04-02
  • C#实现NPOI的Excel导出详解
    技术点: 1.自定义attribute属性 2.通过反射取类及其属性的attribute属性值 3.NPOI包常用属性及方法(我也仅仅知道用到过的,陌生的要么见名知意,要么百度查) ...
    99+
    2024-04-02
  • C#用NPOI导出导入Excel帮助类
    本文实例为大家分享了C#用NPOI导出导入Excel帮助类的具体代码,供大家参考,具体内容如下 1、准备工作 在管理NuGet程序包中搜索 NPOI,安装 NPOI 到要项目中。 2...
    99+
    2024-04-02
  • C#通过NPOI导入导出数据EXCEL
    本文实例为大家分享了C#通过NPOI导入导出数据EXCEL的具体代码,供大家参考,具体内容如下 其实从数据库到服务器导入导出有很多方法,但是比较简单的有NPOI这个方法 准备工作,先...
    99+
    2024-04-02
  • C#使用NPOI设置Excel下拉选项
    本文实例为大家分享了C#使用NPOI设置Excel下拉选项的具体代码,供大家参考,具体内容如下 最近在做一个导出模板的功能,需要限制用户的某些单元格输入的内容。 期望达到的效果:单元...
    99+
    2024-04-02
  • 怎么用C#实现NPOI的Excel导出
    这篇文章主要讲解了“怎么用C#实现NPOI的Excel导出”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C#实现NPOI的Excel导出”吧!技术点:自定义attribute属性通过反...
    99+
    2023-06-26
  • C#读取Excel的操作
    这篇文章主要讲解了“C#读取Excel的操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#读取Excel的操作”吧!C# 操作Excel之读取Excel操作的由来:看到论坛里面不断有人提...
    99+
    2023-06-17
  • python3编程基础:操作excel(
    目录 前言 安装模块 例1:创建一个excel 文件,并写入不同类的内容 例2:写入时间 例3:创建sheet 例4 :操作单元格 例5 :操作行/列/指定区域 例6:显示小数 例7:获取所有的行对象 例8:获取所有的列对象 例9:单元格...
    99+
    2023-01-31
    操作 基础 excel
  • 关于Python自动化操作Excel
    目录一、Python 操作 Excel 的常用库1. 使用第三方库 openpyxl2. 使用第三方库 xlrd 和 xlwt3. 使用 pandas 库二、Python 操作 ex...
    99+
    2023-05-15
    Python自动化 Python操作Excel Python自动化Excel
  • C#使用NPOI实现Excel和DataTable的互转
    什么是NPOI? NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作