写在前面
NPOI是POI项目的.NET迁移版本。POI是一个开源的Java 读写 Excel、Word 等微软Ole2组件文档的项目;使用NPOI可以在没有安装Office或者相应环境的机器上对Word或Excel文档进行读写操作。
NPOI类库中操作EXCEL有两个模块分别是:
1️.HSSF模块,操作拓展名为.xls的Excel,对应Excel2003及以前的版本。
2️.XSSF模块,操作拓展名为.xlsx的Excel,对应Excel2007及以后的版本,可向下兼容xls,故本例使用XSSF下的XSSFWorkbook来操作。
通过NuGet获取NPOI

需要引用的命名空间如下:
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Collections;
using System.Data;
代码实现
public class ExcelProcessor
{
#region 私有变量
private int _perSheetCount = 40000;//每个sheet要保存的条数
private string _filePath;
private IWorkbook _currentWorkbook;
private List<string> _sheets;
private Dictionary<string, DataTable> _dataDict;
#endregion
#region 属性
public List<string> Sheets
{
get { return _sheets ?? (_sheets = GetSheets(_filePath)); }
}
#endregion
#region 构造器
/// <summary>
/// 默认构造器
/// </summary>
/// <param name="filePath"></param>
public ExcelProcessor(string filePath)
{
_filePath = filePath;
_dataDict = new Dictionary<string, DataTable>();
}
/// <summary>
/// 加载数据
/// </summary>
public bool LoadData()
{
try
{
using (var fs = new FileStream(_filePath, FileMode.OpenOrCreate, FileAccess.Read))
{
_currentWorkbook = new XSSFWorkbook(fs);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 最大接收5万条每页,大于5万时,使用系统默认的值(4万)
/// </summary>
/// <param name="perSheetCounts"></param>
public ExcelProcessor(int perSheetCounts)
{
if (_perSheetCount <= 50000)
_perSheetCount = perSheetCounts;
}
#endregion
#region 公有方法
public List<string> GetSheets(string fileName)
{
var sheets = new List<string>();
if (_currentWorkbook == null)
return sheets;
for (int i = 0; i < _currentWorkbook.NumberOfSheets; i++)
{
sheets.Add(_currentWorkbook.GetSheetName(i));
}
return sheets;
}
public object GetNumericCellValue(string sheetName, int rowIndex, int colIndex)
{
if (!Sheets.Contains

本文介绍了NPOI库在.NET中的应用,特别是如何使用XSSF模块处理Excel文件,包括读取和写入单元格数据,支持不同数据类型并处理格式。着重展示了ExcelProcessor类中的方法,如获取和设置单元格值,以及数据的导入导出操作。
最低0.47元/天 解锁文章
1035

被折叠的 条评论
为什么被折叠?



