提到通过纯.Net读写Excel,一般首先想到的自然是大名鼎鼎的NPOI,就连微软官方的MSDN都有专门的一篇文章来介绍它的用法。今天在一个项目中使用到了导出报表为Excel的功能,便特地的试用了一下,感觉虽然它的功能够强大,但谈不上好用。可能是由于其起源与Java的POI的缘故,大部分的API还透浓浓着Java的味道。 例如,要在一个单元格中写入数据时,必须先CreateRow(),再CreateCell()才能写入,不能使用类似Cells[rowIndex, colIndex]=value之类的语句一步到位。

于是,便在网上继续搜了一下,在文章《讀取 Excel 你還在用 NPOI 嗎?快來試試 LinqToExcel》中找到了另一个库:LinqToExcel。这个库可以通过一个LINQ查询快速而友好的读取Excel。不过,它貌似仅限于简单的映射关系,并且不能写入,大部分情况下不能满足复杂一点的业务需求。

最后,我找到了一个非常强大的库——EPPlus,感觉上基本上该有的功能都有了,并且有比较友好的API。如下是一个简单的例子:

using (var p = new ExcelPackage())
    {
        var sheet = p.Workbook.Worksheets.Add("My Sheet");

//Cells的起始索引是1
        sheet.Cells[1, 1].Value = 0;
        sheet.Cells[2, 1].Value = 1;
        sheet.Cells[3, 1].Value = 2;
        sheet.Cells[4, 1].Value = 3;

p.SaveAs(new
FileInfo(@"r:\output.xlsx"));
    }

感觉上比NPOI友好多了。 效果如下:

这个例子比较简单,更复杂一点的例子可以参考这个文章:http://zeeshanumardotnet.blogspot.com/2010/08/creating-advanced-excel-2007-reports-on.html(需要FQ)。或者它的官方帮助文档:http://epplus.codeplex.com/wikipage?title=FAQ&referringTitle=Documentation

最后,提一下这个库的一点不足——它只支持XLSX格式,不支持Office2003的Excel格式,不过到现在这个也不是什么问题了。

最新文章

  1. JSTL的fn函数
  2. drag & resize元素的jQuery实现
  3. linux查看磁盘系统df,du
  4. ACTIVITI 源码研究之命令模式执行
  5. 黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)
  6. 第35讲 Activity入门和跳转
  7. ZA7783:MIPI转LVDS/MIPI转RGB888/RGB转LVDS
  8. 一不小心把Mysql数据库的root的账号的权限给弄没啦,该怎么办
  9. map reduce程序示例
  10. Openwrt 刷机后配置WAN口,安装luci和设置中文、安装挂载USB存储。
  11. mongo 复制集命令
  12. jquery ajax 中各个事件执行顺序
  13. scripy
  14. C# 继承、虚方法、方法重载和多态
  15. 2018.12.12 codeforces 935D. Fafa and Ancient Alphabet(概率dp)
  16. C#中的装箱拆箱
  17. Linux下修改当前用户的最大线程数和 open files
  18. iOS LLDB调试精解
  19. BZOJ 1005: [HNOI2008]明明的烦恼(prufer数列)
  20. [K8S]kubeadm国内镜像安装方式

热门文章

  1. Java面试题和解答(三)
  2. ROS学习备忘
  3. Git常用功能记录
  4. NodeMan介绍
  5. 005-CSS让页脚始终在底部不论页面内容多少
  6. NuGet的简单使用
  7. git之reset图解
  8. redis 有序集合(zset)函数
  9. 使用Redux DevTools浏览器插件调试redux
  10. 7zip 18.3性能测试