文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#基于NPOI怎么操作Excel

2023-06-30 11:55

关注

这篇文章主要介绍“C#基于NPOI怎么操作Excel”,在日常操作中,相信很多人在C#基于NPOI怎么操作Excel问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#基于NPOI怎么操作Excel”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

NPOI简介

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

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

优势

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

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

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

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

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

(二)使用NPOI的优势

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

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

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

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

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

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

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

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

大量的实例代码

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

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

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

不仅仅对与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”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯