NPOI Excel 导入(不需要安装office的插件)

时间:2022-05-11 13:54:21
/// <summary>
/// Excel转换DataTable
/// </summary>
/// <param name="FilePath">文件的绝对路径</param>
/// <returns>DataTable</returns>
public static DataTable ExcelInput(string FilePath)
{
//第一行一般为标题行。
DataTable table = new DataTable();
//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档
HSSFWorkbook workbook = new HSSFWorkbook(File.Open(FilePath, FileMode.Open));
HSSFSheet sheet
= (HSSFSheet)workbook.GetSheetAt(0);
//获取excel的第一个sheet


//获取Excel的最大行数
int rowsCount = sheet.PhysicalNumberOfRows;
//为保证Table布局与Excel一样,这里应该取所有行中的最大列数(需要遍历整个Sheet)。
//为少一交全Excel遍历,提高性能,我们可以人为把第0行的列数调整至所有行中的最大列数。
int colsCount = sheet.GetRow(0).PhysicalNumberOfCells;


for (int i = 0; i < colsCount; i++)
{
table.Columns.Add(i.ToString());
}

for (int x = 0; x < rowsCount; x++)
{
DataRow dr
= table.NewRow();
for (int y = 0; y < colsCount; y++)
{
dr[y]
= sheet.GetRow(x).GetCell(y).ToString();
}
table.Rows.Add(dr);
}

sheet
= null;
workbook
= null;
return table;
}