
NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件。在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx。
NPOI使用HSSFWorkbook类来处理xls,XSSFWorkbook类来处理xlsx,它们都继承接口IWorkbook,因此可以通过IWorkbook来统一处理xls和xlsx格式的文件。
public void ReadFromExcelFile(string filePath){
IWorkbook wk = null
string extension = System.IO.Path.GetExtension(filePath)
try
{
FileStream fs = File.OpenRead(filePath)
if (extension.Equals(".xls"))
{
//把xls文件中的数据写入wk中
wk = new HSSFWorkbook(fs)
}
else
{
//把xlsx文件中的数据写入wk中
wk = new XSSFWorkbook(fs)
}
fs.Close()
//读取当前表数据
ISheet sheet = wk.GetSheetAt(0)
IRow row = sheet.GetRow(0) //读取当前行数据
//LastRowNum 是当前表的总行数-1(注意)
int offset = 0
for (int i = 0 i <= sheet.LastRowNum i++)
{
row = sheet.GetRow(i) //读取当前行数据
if (row != null)
{
//LastCellNum 是当前行的总列数
for (int j = 0 j < row.LastCellNum j++)
{
//读取该行的第j列数据
string value = row.GetCell(j).ToString()
Console.Write(value.ToString() + " ")
}
Console.WriteLine("\n")
}
}
}
catch (Exception e)
{
//只在Debug模式下才输出
Console.WriteLine(e.Message)
}
}
这里可以直接在vs程序中引入Spire.Xls.dll这一个dll程序集文件就可以实现数据的导入导出了。可以直接在NuGet中搜索安装,以下是导入excel数据到datatable的代码方法:
//创建Workbook对象并加载Excel文档
Workbook workbook = new Workbook()workbook.LoadFromFile(@"F:\ExportData.xlsx" ,ExcelVersion.Version2013)
//获取第一张
sheetWorksheet sheet = workbook.Worksheets[0]
//设置range范围
CellRange range = sheet.Range[sheet.FirstRow, sheet.FirstColumn, sheet.LastRow, sheet.LastColumn]
//输出数据, 同时输出列名以及公式值
DataTable dt = sheet.ExportDataTable(range, true, true)
这个问题是因为,楼主在Nuget管理器中,升级了SharpZipLib这个Nuget包到1.0版,NPOI原来用的库是0.86版,还原该包到 0.86版就好了,和NPOI 2.3无关。不过要彻底解决问题,还是需要NPOI升级Nuget包,并修改OpenXml4Net库的属性,或SharpZipLib修改函数属性。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)