NPOI 操作Excel

一、NPOI组件导入

右键项目菜单,“管理NuGet程序包”

直接搜索“NPOI”即会出现列表,下载第一个进行安装即可

安装完成后项目引用会出现以下几项

二、基础使用

添加引用

using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

Excel操作开始

HSSFWorkbook hssfworkbook = new HSSFWorkbook();//先创建Workbook
ISheet sheet= hssfworkbook.CreateSheet("Sheet1");//创建sheet页
IRow row1=sheet.CreateRow(0);//创建行
row1.CreateCell(0).SetCellValue("test");//创建单元格并设置值

文件导出

FileStream file = new FileStream(sFilePath, FileMode.Create);
hssfworkbook.Write(file);
file.Close();

测试代码(以MVC实例):

        /// <summary>
        /// 读取xls内容
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            string sFilePath = @"C:	ext.xls";
            //根据路径获取读取xls文件
            HSSFWorkbook wb = new HSSFWorkbook(new FileStream(sFilePath, FileMode.Open));
            //获取sheet对象
            ISheet sheet1 = wb.GetSheet("Sheet1");
            //获取行
            IRow row = sheet1.GetRow(1);
            //获取单元格
            ICell cell = row.GetCell(0);
            ICell cell1 = row.GetCell(1);

            var cellValue = cell.ToString();
            return View();
        }

        /// <summary>
        /// NPIO导出excel
        /// </summary>
        /// <returns></returns>
        public FileResult DownFile()
        {
            string sFilePath = @"C:	ext.xls";
            HSSFWorkbook hssfworkbook = new HSSFWorkbook();//先创建Workbook
            ISheet sheet = hssfworkbook.CreateSheet("Sheet1");//创建sheet页
            IRow row1 = sheet.CreateRow(0);//创建行
            row1.CreateCell(0).SetCellValue("test");//创建单元格并设置值

            //设置列宽(字符宽度)
            sheet.SetColumnWidth(0, 10 * 256);//第一列,10个字符宽度
            //设置行高
            row1.HeightInPoints = 40;//高度(像素)
            //设置网格的默认行高和列框
            sheet.DefaultColumnWidth = 100 * 256;
            sheet.DefaultRowHeightInPoints = 30;

            //设置单元格样式 
            //样式创建
            ICellStyle style = hssfworkbook.CreateCellStyle();
            style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//文字横向居中
            style.VerticalAlignment = VerticalAlignment.Center;//文字纵向居中
            IFont font = hssfworkbook.CreateFont();//字体
            font.FontHeight = 20 * 20;
            style.SetFont(font);

            ICell cell = row1.Cells[0];//获取单元格对象
            cell.CellStyle = style;//绑定样式

            //单元格合并
            sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 8));//合拼了A1到I1

            //设置文件的详细信息
            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "公司名称";//公司
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Subject = "主题";//主题
            hssfworkbook.DocumentSummaryInformation = dsi;
            hssfworkbook.SummaryInformation = si;

            FileStream file = new FileStream(sFilePath, FileMode.Create);
            hssfworkbook.Write(file);
            file.Close();
            return File(sFilePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "text.xls");
        }
作者:chenze
出处:https://www.cnblogs.com/chenze-Index/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
原文地址:https://www.cnblogs.com/chenze-Index/p/11381078.html