c# npoi html,c# NPOI 方式读取 EXCEL表 类

namespaceNPOIClass

{

public classNPOIC

{private static int sheetCellNumMax = 12;///

///获取sheet表名///

///

///

public static string[] GetSheetName(stringfilePath)

{int sheetNumber = 0;var file = newFileStream(filePath, FileMode.Open, FileAccess.Read);if (filePath.IndexOf(".xlsx") > 0)

{//2007版本

var xssfworkbook = newXSSFWorkbook(file);

sheetNumber=xssfworkbook.NumberOfSheets;string[] sheetNames = new string[sheetNumber];for (int i = 0; i < sheetNumber; i++)

{

sheetNames[i]=xssfworkbook.GetSheetName(i);

}returnsheetNames;

}else if (filePath.IndexOf(".xls") > 0)

{//2003版本

var hssfworkbook = newHSSFWorkbook(file);

sheetNumber=hssfworkbook.NumberOfSheets;string[] sheetNames = new string[sheetNumber];for (int i = 0; i < sheetNumber; i++)

{

sheetNames[i]=hssfworkbook.GetSheetName(i);

}returnsheetNames;

}return null;

}///

///根据表名获取表///

///

///

///

public static DataTable ExcelToDataTable(string filePath, stringsheetName)

{string outMsg = "";var dt = newDataTable();string fileType =Path.GetExtension(filePath).ToLower();try{

ISheet sheet= null;

FileStream fs= newFileStream(filePath, FileMode.Open, FileAccess.Read);if (fileType == ".xlsx")

{//2007版

XSSFWorkbook workbook = newXSSFWorkbook(fs);

sheet=workbook.GetSheet(sheetName);if (sheet != null)

{

dt= GetSheetDataTable(sheet, outoutMsg);

}

}else if (fileType == ".xls")

{//2003版

HSSFWorkbook workbook = newHSSFWorkbook(fs);

sheet=workbook.GetSheet(sheetName);if (sheet != null)

{

dt= GetSheetDataTable(sheet, outoutMsg);

}

}

}catch(Exception e)

{

Console.WriteLine(e.Message);

}returndt;

}///

///获取sheet表对应的DataTable///

/// Excel工作表

///

///

private static DataTable GetSheetDataTable(ISheet sheet, out stringstrMsg)

{

strMsg= "";

DataTable dt= newDataTable();string sheetName =sheet.SheetName;int startIndex = 0;//sheet.FirstRowNum;

int lastIndex =sheet.LastRowNum;//最大列数

int cellCount = 0;

IRow maxRow= sheet.GetRow(0);for (int i = startIndex; i <= lastIndex; i++)

{

IRow row=sheet.GetRow(i);if (row != null && cellCount

{

cellCount=row.LastCellNum;

maxRow=row;

}

}//列名设置

try{//maxRow.LastCellNum = 12//L

for (int i = 0; i < sheetCellNumMax; i++)//maxRow.FirstCellNum

{

dt.Columns.Add(Convert.ToChar(((int)'A') +i).ToString());//DataColumn column = new DataColumn("Column" + (i + 1).ToString());//dt.Columns.Add(column);

}

}catch{

strMsg= "工作表" + sheetName + "中无数据";return null;

}//数据填充

for (int i = startIndex; i <= lastIndex; i++)

{

IRow row=sheet.GetRow(i);

DataRow drNew=dt.NewRow();if (row != null)

{for (int j = row.FirstCellNum; j < row.LastCellNum; ++j)

{if (row.GetCell(j) != null)

{

ICell cell=row.GetCell(j);switch(cell.CellType)

{caseCellType.Blank:

drNew[j]= "";break;caseCellType.Numeric:short format =cell.CellStyle.DataFormat;//对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理

if (format == 14 || format == 31 || format == 57 || format == 58)

drNew[j]=cell.DateCellValue;elsedrNew[j]=cell.NumericCellValue;if (cell.CellStyle.DataFormat == 177 || cell.CellStyle.DataFormat == 178 || cell.CellStyle.DataFormat == 188)

drNew[j]= cell.NumericCellValue.ToString("#0.00");break;caseCellType.String:

drNew[j]=cell.StringCellValue;break;caseCellType.Formula:try{

drNew[j]=cell.NumericCellValue;if (cell.CellStyle.DataFormat == 177 || cell.CellStyle.DataFormat == 178 || cell.CellStyle.DataFormat == 188)

drNew[j]= cell.NumericCellValue.ToString("#0.00");

}catch{try{

drNew[j]=cell.StringCellValue;

}catch{ }

}break;default:

drNew[j]=cell.StringCellValue;break;

}

}

}

}

dt.Rows.Add(drNew);

}returndt;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值