关键词:NPOI、Excel、开源、NuGet
导读
我们在开发中经常用到导入导出表格、文档的情况,如果是使用.NET,需要在服务器端装Office,且及时更新它,以防 漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。
NPOI是目前比较流行的一款操作Excel的组件。移植于Java的POI,是一个开源项目,对Excel的操作很全面。相对于直接使用.NET,NPOI的优势在于:
本期小百科介绍如何在C#编程时使用NPOI创建及读写Excel文件。
NPOI安装
在Visual Studio中,可以通过NuGet下载安装NPOI插件。
在解决方案资源管理器中右击项目名称,找到管理NuGet程序包,即可进入NuGet管理器。
点击浏览,在搜索框中搜索NPOI,找到图中标明的NPOI插件点击,右侧出现安装界面,点击安装即可。也可以直接点击NPOI名称右侧的黑色箭头进行安装。
图 1 安装NPOI
安装后,可以在解决方案资源管理器中看到NPOI的相关动态库的引用。
图 2 NPOI 项目引用
NPOI创建Excel
创建Excel分为4步:
首先在代码顶端添加using:
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;
基本操作代码如下所示:
//创建一个数组
double[] data = new double[10] {-10,-5,-2.35, 0,0.001,1,1.5,5,10,1000};
//创建Excel文件,xlsx格式使用XSSFWorkbook实例,xls使用HSSFWorkbook实例
IWorkbook workbook = new XSSFWorkbook();
//添加sheet
ISheet sheet1 = workbook.CreateSheet("sheet1");
for (int i = 0; i < data.Length; i++)
{
IRow row = sheet1.CreateRow(i);//给sheet1添加行,索引从0开始
ICell cell = row.CreateCell(0);//给每一行添加单元格
cell.SetCellValue(data[i]);//给单元格赋值
}
//创建流文件
FileStream file = new FileStream
(@"C:UsersjytekDesktopNPOINPOI Excel.xlsx", FileMode.Create);
workbook.Write(file);//写入文件
运行程序后,在对应的保存路径中得到Excel表格。
图 3 创建的Excel表格
结果如下:
图 4 生成的Excel表格
NPOI读写Excel
读取已存在的Excel的数据
对已存在的Excel进行读取只需2步:
具体代码如下:
//创建流文件
FileStream fs = new FileStream
(@"C:UsersjytekDesktopNPOINPOI Excel.xlsx", FileMode.OpenOrCreate, FileAccess.ReadWrite);
//创建Excel实例
IWorkbook workbookRead = new XSSFWorkbook(fs);
//读取sheet1的第一行第一个Cell的数据
Double readData =
workbookRead.GetSheet("sheet1").GetRow(0).GetCell(0).NumericCellValue;
Console.WriteLine(readData);
Console.ReadKey();
运行程序,读取到对应的数据。
图 5 运行读取excel数据程序界面
对已存在的Excel写入数据
对已存在的Excel写入数据需要4步:
具体代码如下:
//创建流文件
FileStream fs = new FileStream
(@"C:UsersjytekDesktopNPOINPOI Excel.xlsx", FileMode.OpenOrCreate, FileAccess.ReadWrite);
//创建Excel实例
IWorkbook workbookWrite = new XSSFWorkbook(fs);
//在sheet1中添加新的行和Cell
ICell cellToWrite = workbookWrite.GetSheet("sheet1").CreateRow(10).CreateCell(0);
//给单元格赋值为数组总和
cellToWrite.SetCellValue(data.Sum());
//写入文件,这里要重新创建流文件
fs = new FileStream
(@"C:UsersjytekDesktopNPOINPOI Excel.xlsx", FileMode.OpenOrCreate, FileAccess.ReadWrite);
workbookWrite.Write(fs);
打开Excel文件,即可看到新写入的数据。
图 6 写入数据后的Excel
Copyright © 2016-2024 JYTEK All Rights Reserved.