分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

.net下使用NPOI读取Excel表数据

发布时间:2023-09-06 01:27责任编辑:彭小芳关键词:暂无标签

这里只写MVC下的情况

 ???????public ActionResult Index() ???????{ ???????????var path = Server.MapPath(@"/content/user.xlsx"); ?????????var dt= ?ExcelToDataTable(true, path); ?????????List<User> list = new List<User>(); ?????????foreach (DataRow item in dt.Rows) ?????????{ ?????????????list.Add(new User(){ ?????????????????No=Convert.ToInt32( item[0]), ?????????????????Name= item[1].ToString(), ?????????????????Age=Convert.ToInt32(item[2]), ?????????????????Sex=item[3].ToString() ?????????????}); ?????????} ???????????return View(list); ???????} ???????/// <summary> ???????/// 将excel中的数据导入到DataTable中 ???????/// </summary> ???????/// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param> ???????/// <param name="fileName">文件路径</param> ???????/// <returns>返回的DataTable</returns> ???????public static DataTable ExcelToDataTable( bool isFirstRowColumn, string fileName) ???????{ ???????????????????????if (string.IsNullOrEmpty(fileName)) ???????????{ ???????????????throw new ArgumentNullException(fileName); ???????????} ???????????var data = new DataTable(); ???????????IWorkbook workbook = null; ???????????FileStream fs = null; ???????????try ???????????{ ???????????????fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); ???????????????if (fileName.IndexOf(".xlsx", StringComparison.Ordinal) > 0) ???????????????{ ???????????????????workbook = new XSSFWorkbook(fs); ???????????????} ???????????????else if (fileName.IndexOf(".xls", StringComparison.Ordinal) > 0) ???????????????{ ???????????????????workbook = new HSSFWorkbook(fs); ???????????????} ???????????????ISheet sheet = null; ???????????????if (workbook != null) ???????????????{ ???????????????????//获取第一个sheet ???????????????????sheet = workbook.GetSheetAt(0); ???????????????} ???????????????if (sheet == null) return data; ???????????????var firstRow = sheet.GetRow(0); ???????????????//一行最后一个cell的编号 即总的列数 ???????????????int cellCount = firstRow.LastCellNum; ???????????????int startRow; ???????????????if (isFirstRowColumn) ???????????????{ ???????????????????for (int i = firstRow.FirstCellNum; i < cellCount; ++i) ???????????????????{ ???????????????????????var cell = firstRow.GetCell(i); ???????????????????????var cellValue = cell.StringCellValue; ???????????????????????if (cellValue == null) continue; ???????????????????????var column = new DataColumn(cellValue); ???????????????????????data.Columns.Add(column); ???????????????????} ???????????????????startRow = sheet.FirstRowNum + 1; ???????????????} ???????????????else ???????????????{ ???????????????????startRow = sheet.FirstRowNum; ???????????????} ???????????????//最后一列的标号 ???????????????var rowCount = sheet.LastRowNum; ???????????????for (var i = startRow; i <= rowCount; ++i) ???????????????{ ???????????????????var row = sheet.GetRow(i); ???????????????????//没有数据的行默认是null ???????????????????if (row == null) continue; ???????????????????var dataRow = data.NewRow(); ???????????????????for (int j = row.FirstCellNum; j < cellCount; ++j) ???????????????????{ ???????????????????????//同理,没有数据的单元格都默认是null ???????????????????????if (row.GetCell(j) != null) ???????????????????????????dataRow[j] = row.GetCell(j).ToString(); ???????????????????} ???????????????????data.Rows.Add(dataRow); ???????????????} ???????????????return data; ???????????} ???????????catch (IOException ioex) ???????????{ ???????????????throw new IOException(ioex.Message); ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw new Exception(ex.Message); ???????????} ???????????finally ???????????{ ???????????????if (fs != null) ???????????????{ ???????????????????fs.Close(); ???????????????} ???????????} ???????} ???

.net下使用NPOI读取Excel表数据

原文地址:http://www.cnblogs.com/lunawzh/p/7906473.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved