前言

​ 在 c# 中可以使用对应的com组件生成或操作excel,但前提是必须安装了Office Excel , 但服务器端不一定会安装Excel,而且它操作起来并不简单。但是,使用NPOI这个第三方库,可以在服务器不需要安装Excel的情况下,简单快捷的完成Excel相关操作。

使用

  1. 安装对应Nuget

  2. 使用帮助类

 /// <summary>
 ///    返回excel的字节数组
 ///     可储存为文件
 ///     文件后缀为".xls"
 /// </summary>
 /// <typeparam name="T">是数据对象</typeparam>
 /// <param name="dataList">数据列表</param>
 /// <param name="headers">表头</param>
 /// <returns></returns>
 public static byte[] GetExcel<T>(IList<T> dataList, IList<string> headers)
 {
     if (dataList == null || dataList.Count == 0)
         throw new ArgumentException("无效数据列表");
     if (headers == null)
         throw new ArgumentNullException();
     var wk = new HSSFWorkbook(); //表示一个Excel文件
     var sheet = wk.CreateSheet(); // Excel中的sheet
     var header = sheet.CreateRow(0); // 第一行储存表头信息
     for (var i = 0; i < headers.Count; i++)
     {
         header.CreateCell(i).SetCellValue(headers[i]);
     }
     for (var i = 0; i < dataList.Count; i++)
     {
         var o = dataList[i];
         var row = sheet.CreateRow(i + 1);
         var cellNo = 0;
         object value;
         string cell;
         // 如果已知要储存哪些属性, 可不使用反射
         foreach (var info in o.GetType().GetProperties())
         {
             value = info.GetValue(o, null);
             cell = value == null ? String.Empty : value.ToString();
             row.CreateCell(cellNo++).SetCellValue(cell);
         }
     }
     byte[] data;
     using (var ms = new MemoryStream())
     {
         wk.Write(ms);
         data = ms.GetBuffer();
         wk.Close();
     }
     return data;
 }

NPOI 生成 Excel的更多相关文章

  1. 使用NPOI生成Excel级联列表

    目录 1    概要    1 2    磨刀不误砍柴工——先学会Excel中的操作    2 3    利用NPOI生成导入模板    7 3.1    设置workbook&sheet   ...

  2. .net利用NPOI生成excel文件

    整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...

  3. Aspose.Cell和NPOI生成Excel文件

    1.使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件 1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet 1 ...

  4. NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

    NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...

  5. NPOI 生成 excel基本设置

    //设置页眉页脚 tempSheet.Header.Center = "2017-04-27"; tempSheet.Footer.Center = "√" + ...

  6. npoi生成excel流并在客户端下载(html+后台 )

    //前端页面 <body> <input type="button" value="导出Excel" class="button&q ...

  7. NPOI生成excel并下载

    NPOI文件下载地址:http://npoi.codeplex.com/ 将文件直接引用至项目中即可,,,,, 虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单 ...

  8. 通过 NPOI 生成 Excel

    HSSFWorkbook hssfworkbook; ISheet sheet1; public void BuildExcel() { hssfworkbook = new HSSFWorkbook ...

  9. NPOI 生成Excel

    private void btnSave_Click(object sender, EventArgs e) { ) != ".xls") { MessageBox.Show(&q ...

随机推荐

  1. java.lang.OutOfMemoryError: PermGen space异常及解决

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...

  2. 前端使用html2canvas截图,在canvas上绘制图片及保存图片

    1.使用html2canvas 存在的问题: 不同的机型绘制位置不同的问题. 这个主要因为Html动态设置了html的dpr.(dpr可以解决屏幕显示不了1pxborder和无法显示小于12px的文字 ...

  3. 在python3下使用OpenCV 抓取摄像头图像提取蓝色

    工作中需要对摄像头进行调试, Python平台大大提高调试效率. 从网找到段代码, 可以从摄像头图像中抠出蓝色. import cv2 import numpy as np cap  = cv2.Vi ...

  4. jqgrid动态填充select

    前两天使用jquery动态填充jqgrid的select,默认随便用一个dict填充(初始化页面是会替换掉),用着可以,后来发现当行数增多,回到以前行继续编辑发现select又变成了那个用来避免报错随 ...

  5. MySQL的索引是什么?怎么优化?

    索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的.My ...

  6. Spring事务用法示例与实现原理

    关于Java中的事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性,一致性,隔离性和持久性.对于Spring事务,其最终还是在数据库层面实现的,而Spring只是以一种比 ...

  7. Linux crontab命令 定时任务 用法详解以及no crontab for root解决办法

    最近系统服务器进行搬迁,又恰好需要使用定时任务运行程序,而我的程序主要使用PHP写的,然后总结了下定时任务的用法,但是在这里主要写的是关于crontab命令的用法,使用过程中遇到不少问题,例如no c ...

  8. 上采样和PixelShuffle(转)

    有些地方还没看懂, mark一下 文章来源: https://blog.csdn.net/g11d111/article/details/82855946 去年曾经使用过FCN(全卷积神经网络)及其派 ...

  9. Objective C Protocol implementation

    protocol 类似于接口,可以实现函数的回调 @protocol MyDelegate<NSObject> -(void)myCallbackFunction; @end //Call ...

  10. Java进阶之自动拆箱与自动装箱

    序. java基本类型介绍 java中,基本数据类型一共有8种,详细信息如下表: 类型 大小 范围 默认值 byte 8 -128 - 127 0 short 16 -32768 - 32768 0 ...