C#之NPOI处理Excel

NPOI是.NET平台上的一个用于读写Excel文档的库,源自Java的POI项目。它无需预装Office环境,适合在服务器上使用。尽管在大量数据时渲染性能可能较慢,但可以通过DLL引用和命名空间导入来实现Excel的读写操作。
摘要由CSDN通过智能技术生成

简介:

NPOI是源于一个用于读取xls,doc,ppt文档的POI 项目,POI是Java项目,后面因为有.Net的市场,于是将POI移植到.Net上便是NPOI。

特点:

对环境没有过多要求,不需要Windows系统预装office环境。特别适用于服务器上,一般服务器不会装office。

缺点:

 在Excel数据量大的情况下,渲染Excel样式性能较慢。

具体实现:

1、dll下载以及引用

下载地址:https://npoi.codeplex.com/releases。或者通过NuGet直接搜索下载。

引用下面几个dll

2、引用命名空间

using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

3、具体实现

1、全局变量

        #region 私有变量
        /// <summary>
        /// Excel文件工作簿
        /// </summary>
        private static IWorkbook _workbook;

        /// <summary>
        /// Excel文件工作表
        /// </summary>
        private static ISheet _worksheet;
        
        /// <summary>
        /// Excel文件路径
        /// </summary>
        private static string _filePath = string.Empty;

        /// <summary>
        /// excel版本
        /// 默认为2007
        /// </summary>
        private static string _excelVersion = "2007";
        #endregion

2、调用方法

/// <summary>
        /// 创建一个空白的Excel文件
        /// 用于写Excel
        /// 写的时候,还需要添加Sheet
        /// </summary>
        /// <param name="strFilePath">文件路径</param>
        public static void CreateExcel(string strFilePath)
        {
            _filePath = strFilePath;
            using (FileStream fs = new FileStream(strFilePath, FileMode.Create, FileAccess.ReadWrite))
            {
                if (strFilePath.EndsWith(".xls"))//97-2003低版本的
                {
                    _workbook = new HSSFWorkbook();
                    _excelVersion = "2003";
                }
                else//高版本的2007
                {
                    _workbook = new XSSFWorkbook();
                    _excelVersion = "2007";
                }
                CreateSheet();

                fs.Close();
            }
        }




        /// <summary>
        /// 保存Excel
        /// </summary>
        public static void SaveExcel()
        {
            if (!File.Exists(_filePath))
            {
                throw new Exception(string.Format("文件:{0},不存在!", _filePath));
            }
            using (FileStream fsOut = new FileStream(_filePath, FileMode.Create, FileAccess.Write))
            {
                _workbook.Write(fsOut); //写入到当前已经打开的excel文件
                fsOut.Close();
            }
        }

        /// <summary>
        /// Excel文件另存为
        /// </summary>
        /// <param name="strSavePath">文件命名</param>
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值