通过NuGet安装NPOI包
////// 获取excel内容 /// /// excel文件路径 ///public static DataTable ImportExcelFile(string filePath) { DataTable dt = new DataTable(); using (FileStream fsRead = System.IO.File.OpenRead(filePath)) { IWorkbook wk = null; //获取后缀名 string extension = filePath.Substring(filePath.LastIndexOf(".")).ToString().ToLower(); //判断是否是excel文件 if (extension == ".xlsx" || extension == ".xls") { //判断excel的版本 if (extension == ".xlsx") { wk = new XSSFWorkbook(fsRead); } else { wk = new HSSFWorkbook(fsRead); } //获取第一个sheet ISheet sheet = wk.GetSheetAt(0); //获取第一行 IRow headrow = sheet.GetRow(0); //创建列 for (int i = headrow.FirstCellNum; i < headrow.Cells.Count; i++) { DataColumn datacolum = new DataColumn(headrow.GetCell(i).StringCellValue); //DataColumn datacolum = new DataColumn("F" + (i + 1)); dt.Columns.Add(datacolum); } //读取每行,从第二行起 for (int r = 1; r <= sheet.LastRowNum; r++) { bool result = false; DataRow dr = dt.NewRow(); //获取当前行 IRow row = sheet.GetRow(r); //读取每列 for (int j = 0; j < row.Cells.Count; j++) { ICell cell = row.GetCell(j); //一个单元格 dr[j] = GetCellValue(cell); //获取单元格的值 //全为空则不取 if (dr[j].ToString() != "") { result = true; } } if (result == true) { dt.Rows.Add(dr); //把每行追加到DataTable } } } } return dt; } /// /// 对单元格进行判断取值 /// /// ///private static string GetCellValue(ICell cell) { if (cell == null) return string.Empty; switch (cell.CellType) { case CellType.Blank: //空数据类型 这里类型注意一下,不同版本NPOI大小写可能不一样,有的版本是Blank(首字母大写) return string.Empty; case CellType.Boolean: //bool类型 return cell.BooleanCellValue.ToString(); case CellType.Error: return cell.ErrorCellValue.ToString(); case CellType.Numeric: //数字类型 if (HSSFDateUtil.IsCellDateFormatted(cell))//日期类型 { return cell.DateCellValue.ToString(); } else //其它数字 { return cell.NumericCellValue.ToString(); } case CellType.Unknown: //无法识别类型 default: //默认类型 return cell.ToString();// case CellType.String: //string 类型 return cell.StringCellValue; case CellType.Formula: //带公式类型 try { HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook); e.EvaluateInCell(cell); return cell.ToString(); } catch { return cell.NumericCellValue.ToString(); } } } /// /// 写入Excel /// /// /// public static void WriteExcel(DataTable dt, string filePath) { try { if (!string.IsNullOrEmpty(filePath) && null != dt && dt.Rows.Count > 0) { NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(dt.TableName); NPOI.SS.UserModel.IRow row = sheet.CreateRow(0); for (int i = 0; i < dt.Columns.Count; i++) { row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName); } for (int i = 0; i < dt.Rows.Count; i++) { NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j])); } } // 写入到客户端 using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { book.Write(ms); using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } book = null; } } } catch (Exception ex) { throw ex; } }



