zoukankan      html  css  js  c++  java
  • .NET导出Excel之NPOI

    前段时间研究过微软的Excel导出、table输出Excel,而它们也存在一些弊端:

      1、对于微软的Excel导出存在一些弊端,如:需要安装Office软件、速度问题;

      2、table输出Excel在使用过程中发现一个致命的弊端,在一定情况下数据会丢失,因为部门的负责人会针对数据进行导出,分发给相关人员,而接收方接收后发现数据损坏。对于数据丢失我猜测应该属于导出方式,对于table输出我猜测应该是在本地会生成一些缓存文件以供导出的Excel进行动态调用,而发送给另一台机器缓存数据却未发送因此导致数据丢失。

    NPOI导出Excel:

      对于NPOI的使用的确很是方便,能够快速的制作出我们需要的导出功能,方法简单直白没有其它的依赖性,速度也不错。

      1、使用前需要引用NPOI.dll

     

        可以通过NuGet包管理,检索NPOI添加到项目中去:

       2、使用方法。简单的使用我们只要注重:HSSFWorkbookISheetIRowICell,从名称可以知道它们的大概用处,我们可以像写文章一样的使用它。

        HSSFWorkbook相当于一个Excel对象

        ISheet相当于Excel里的工作簿

        IRow相当于行

        ICell相当于列

        

     1 using System;
     2 using System.Collections.Generic;
     3 using System.IO;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 using NPOI.HSSF.UserModel;
     8 using NPOI.SS.UserModel;
     9 using Sunc.Framework.Repository.Utility.Excel;
    10 
    11 namespace TestConsole
    12 {
    13     class Program
    14     {
    15         static void Main(string[] args)
    16         {
    17          
    18             HSSFWorkbook workBook = new HSSFWorkbook();
    19             ISheet sheet = workBook.CreateSheet("工作簿");
    20             IRow row = sheet.CreateRow(0);
    21             ICell cell = row.CreateCell(0);
    22             cell.SetCellValue("孙超");
    23 
    24             MemoryStream ms = new MemoryStream();
    25             workBook.Write(ms);
    26             var buf = ms.ToArray();
    27             using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "a.xls", FileMode.Create, FileAccess.Write))
    28             {
    29                 fs.Write(buf, 0, buf.Length);
    30                 fs.Flush();
    31             }
    32             Console.ReadKey();
    33         }
    34 
    35 
    36     }
    37 }

      当然SetCellValue属于一个重载方法,供我们出入各种类型的值

      还有样式的设置

    当然需求决定使用,对于微软的我们可以调用宏,这算是一个比较强大的功能了,但是对于需求不高的我们几乎使用不到,因此适合自己的才是最好的。

    个人源码

    参考手册:NPOI使用手册

  • 相关阅读:
    STL map与Boost unordered_map
    static constructors in C++? need to initialize private static objects
    谈谈C++继承中的重载,覆盖和隐藏
    C++继承:公有,私有,保护
    C++ using关键字作用总结
    ++iter的效率比iter++的效率高
    C++中dynamic_cast,static_cast,const_cast,reinterpret_cast
    【转】WinForm中添加闪屏窗口的两种方法
    【转】一个不错的Matlab的gui界面设计实例 (20081003 15:47:30)matlab gui 界面 校园 分类:Matlab实例
    制作一个WinForm的闪屏
  • 原文地址:https://www.cnblogs.com/umeall/p/9006462.html
Copyright © 2011-2022 走看看