简介:
NPOI是源于一个用于读取xls,doc,ppt文档的POI 项目,POI是Java项目,后面因为有.Net的市场,于是将POI移植到.Net上便是NPOI。
特点:
对环境没有过多要求,不需要Windows系统预装office环境。特别适用于服务器上,一般服务器不会装office。
缺点:
在Excel数据量大的情况下,渲染Excel样式性能较慢。
具体实现:
1、dll下载以及引用
下载地址:https://npoi.codeplex.com/releases。或者通过NuGet直接搜索下载。
引用下面几个dll
2、引用命名空间
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
3、具体实现
1、全局变量
#region 私有变量
/// <summary>
/// Excel文件工作簿
/// </summary>
private static IWorkbook _workbook;
/// <summary>
/// Excel文件工作表
/// </summary>
private static ISheet _worksheet;
/// <summary>
/// Excel文件路径
/// </summary>
private static string _filePath = string.Empty;
/// <summary>
/// excel版本
/// 默认为2007
/// </summary>
private static string _excelVersion = "2007";
#endregion
2、调用方法
/// <summary>
/// 创建一个空白的Excel文件
/// 用于写Excel
/// 写的时候,还需要添加Sheet
/// </summary>
/// <param name="strFilePath">文件路径</param>
public static void CreateExcel(string strFilePath)
{
_filePath = strFilePath;
using (FileStream fs = new FileStream(strFilePath, FileMode.Create, FileAccess.ReadWrite))
{
if (strFilePath.EndsWith(".xls"))//97-2003低版本的
{
_workbook = new HSSFWorkbook();
_excelVersion = "2003";
}
else//高版本的2007
{
_workbook = new XSSFWorkbook();
_excelVersion = "2007";
}
CreateSheet();
fs.Close();
}
}
/// <summary>
/// 保存Excel
/// </summary>
public static void SaveExcel()
{
if (!File.Exists(_filePath))
{
throw new Exception(string.Format("文件:{0},不存在!", _filePath));
}
using (FileStream fsOut = new FileStream(_filePath, FileMode.Create, FileAccess.Write))
{
_workbook.Write(fsOut); //写入到当前已经打开的excel文件
fsOut.Close();
}
}
/// <summary>
/// Excel文件另存为
/// </summary>
/// <param name="strSavePath">文件命名</param>