最近在研究NPOI的使用方法。所以就来分享一波了,话不多说,先来研究第一个Excel写入。
我们先了解一下NPOI吧。
NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
这个是官网说的优势,我们来翻译一下吧。
它完全免费使用。
覆盖Excel的大部分功能(单元格样式、数据格式、公式等)
专业支持服务(24×7)从NPOI团队(非免费)
支持XLS,XLSX,docx。
设计是面向接口(看一看NPOI.SS的命名空间)
不仅支持出口又进口
基于.NET 2甚至xlsx和docx(虽然我们也支持.NET 4)
真正的成功案例遍布世界各地
巨大的基本例子
大概就是上面这个意思。
系统要求
VS2010与.NET 4.0运行时
VS2005或VS2008与.NET 2.0运行时(SP1)
vs2003与.NET 1.1(Obselete,最后版本为1.2.1。无需进一步支持)
这些都是翻译过来的,下载地址在:GitHub
现在不闲聊了。正式开始:
我用WinForm作为演示。
先创建一个Person类
里面大概有姓名,年龄,Email
然后在WinForm中放置一个Button按钮,双击进去,给一个单击事件;
private void button1_Click(object sender, EventArgs e)
{
List
list = new List
()
{
new Person() { Name="张三",Age=18,Email="zhangsan@xsyrz.cn"},
new Person() { Name="李四",Age=17,Email="lisi@xsyrz.cn"},
new Person() { Name="王五",Age=23,Email="wangwu@xsyrz.cn"}
};
//把List集合导出到Excel文件中
// 1.创建 工作簿对象
IWorkbook webook = new HSSFWorkbook();
// 2.在该工作簿中国创建工作表对象
ISheet sheet = webook.CreateSheet("List for person");
//2.1向该工作表中插入行和单元格
for (int i = 0; i < list.Count; i++)
{
//在sheet中创建一行
IRow row = sheet.CreateRow(i);
//在该行中创建单元格
// row.CreateCell(0).SetCellValue(list[i].Name);
//ICell cell = row.CreateCell(0);
//cell.SetCellValue(list[i].Name);
row.CreateCell(0).SetCellValue(list[i].Name);
row.CreateCell(1).SetCellValue(list[i].Age);
row.CreateCell(2).SetCellValue(list[i].Email);
}
// 3.写入,把内存中的workbook对象写入到磁盘上
using (FileStream fsWrite = File.OpenWrite("list.xls"))
{
webook.Write(fsWrite);
}
MessageBox.Show("写入成功!");
}
然后运行就直接导出了,这边有源码可以看一下。