首页 > 其他分享 >NPOI 操作Excel

NPOI 操作Excel

时间:2023-02-24 16:36:53浏览次数:37  
标签:sheet Excel NPOI cell var new workbook 操作 row

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

//导入
 public void upload(HttpPostedFileBase file)
        {
            if (file != null)
            {
                string houzui = System.IO.Path.GetExtension(file.FileName).ToLower();
                byte[] fileBytes = new byte[file.ContentLength];
                file.InputStream.Read(fileBytes, 0, file.ContentLength);
                MemoryStream excelFileStream = new MemoryStream(fileBytes);
                IWorkbook workbook = null;
                if (houzui == ".xls")
                {
                    workbook = new HSSFWorkbook(excelFileStream);
                }
                else if (houzui == ".xlsx")
                {
                    workbook = new XSSFWorkbook(excelFileStream);
                }
                ISheet sheet = workbook.GetSheetAt(0);
                //行数
                int rowCount = sheet.LastRowNum;
                //第一行第一列
                sheet.GetRow(0).GetCell(0);
            }
        }

  

  public FileResult Export()
        {
                // 创建工作簿
                var workbook = new HSSFWorkbook();
                // 创建表
                var sheet = workbook.CreateSheet();
                //设置列宽
                sheet.SetColumnWidth(0, 25 * 256);
                sheet.SetColumnWidth(1, 140 * 256);
                sheet.SetColumnWidth(2, 15 * 256);
                // CreateFont:创建字体样式
                var headFont = workbook.CreateFont();
                headFont.IsBold = true;

                // CreateCellStyle:创建单元格样式
                var headStyle = workbook.CreateCellStyle();
                headStyle.Alignment = HorizontalAlignment.Center; 
                headStyle.VerticalAlignment = VerticalAlignment.Center;
                headStyle.SetFont(headFont);

                // CreateRow:操作指定表的指定行。
                var rowIndex = 0;
                var row = sheet.CreateRow(rowIndex);
                row.Height = 20 * 20;
                ICell cell; ;
                List<string> titles = new List<string>() { "编码", "标题1", "标题2", "开始时间", "结束时间" };
                for (int i = 0; i < titles.Count; i++)
                {
                    cell = row.CreateCell(i);
                    // 为单元格赋予值和样式。此处为表头
                    cell.SetCellValue(titles[i]);
                    cell.CellStyle = headStyle;
                }

                // 实际数据部分的单元格样式
                var cellStyle = workbook.CreateCellStyle();

                foreach (var item in fxlist)
                {
                    row = sheet.CreateRow(++rowIndex);
                    //行高
                    row.Height = 20 * 20;
                    cell = row.CreateCell(0);
                    cell.SetCellValue(item.ProjectCode);
                    cell.CellStyle = cellStyle;

                    cell = row.CreateCell(1);
                    cell.SetCellValue(GetProjectFullName(list, item.ProjectCode));
                    cell.CellStyle = cellStyle;
                }


                // bs用于存储文件数据的字节数组,一般给前端下载的文件都需要用这种方式传递
                byte[] bs;
                // 导出内存流并通过内存流读取为byte[]
                using (MemoryStream ms = new MemoryStream())
                {
                    workbook.Write(ms);
                    bs = ms.GetBuffer();
                }
                // 返回给前端下载:File(存储文件数据的字节数组, 对应文件content-type, 文件名)
                return File(bs, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "BIM形象进度设置模板.xls");
            
        }            

 

标签:sheet,Excel,NPOI,cell,var,new,workbook,操作,row
From: https://www.cnblogs.com/siyisiyue/p/17151957.html

相关文章

  • 操作系统储存管理(页式、段式、段页式)
    某计算机系统的内存大小为128k,采用可变分区分配方式进行内存分配,当前系统的内存分块情况如下图所示,现有作业4申请内存9k,几种不同的存储分配算法在分配中,会产生什么样的结果......
  • 自己从零写操作系统GrapeOS——3.GrapeOS参考资料
    站在巨人的肩膀上才能看的更远。我写GrapeOS主要参考了以下4本书:《30天自制操作系统》作者川合秀实《操作系统真象还原》作者郑刚《一个64位操作系统的设计与实现》作......
  • redis list操作 set&sortedset操作
               ......
  • 自己从零写操作系统GrapeOS——2.学习写GrapeOS的前提条件
    学习写GrapeOS需要的前提条件主要有以下3点:1.会x86汇编2.会C语言3.会用Linux以上要求都不需要多么熟练,其中x86汇编懂基本的指令,C语言懂基本的语法,会在虚拟机中安装Linu......
  • typora快捷操作总结
    标题等级ctrl+1一级标题ctrl+2二级标题ctrl+3三级标题ctrl+4四级标题ctrl+5五级标题ctrl+0段落ctrl+=提高标题等级ctrl+-降低标题等级......
  • jedis快速入门 String数据结构操作
    jedis一款java操作redis数据库的工具使用步骤下载jedis的jar包  使用获取连接Jedisjedis=newJedis("localhost",6379)操作je......
  • typora快捷操作总结
    标题等级ctrl+1一级标题ctrl+2二级标题ctrl+3三级标题ctrl+4四级标题ctrl+5五级标题ctrl+0段落ctrl+=提高标题等级ctrl+-降低标题等级......
  • python网页中下拉框的操作
    1、只要是第一次打开页面可以加载的元素,就可以通过元素定位来定位和操作。2、如果需要先点击下拉框对象再加载选项,必须先点击脚本,等待选项元素加载。实例1.实例化select对象......
  • Day 11 11.2 文件操作
    文件操作引言到目前为止,我们做的一切操作,都是在内存里进行的,这样会有什么问题吗?如果一旦断电或发生意外关机了,那么你辛勤的工作成果将瞬间消失。是不是感觉事还挺大的呢......
  • Linux操作命令(四) 1.which命令 2.whereis命令 3.locate命令
    1、which命令which命令的作用是,在PATH变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件确认是否安装了gcc:whichgcc   ......