博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPOI 导入excel
阅读量:4499 次
发布时间:2019-06-08

本文共 3458 字,大约阅读时间需要 11 分钟。

应用NUget 安装NPOI 很方便

  读出excel的主要语句是

 XSSFWorkbook hssfworkbook;

  using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))

                {
                    hssfworkbook = new XSSFWorkbook(file);
                }

当excel以xlsx结尾用  XSSFWorkbook 否则用HSSFWorkbook

public DataTable ImportExcelFile(string filePath)        {            XSSFWorkbook hssfworkbook;            #region//初始化信息            try            {                using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))                {                    hssfworkbook = new XSSFWorkbook(file);                }            }            catch (Exception e)            {                throw e;            }            #endregion            NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);            //using (NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0))            //{
DataTable table = new DataTable(); IRow headerRow = sheet.GetRow(0);//第一行为标题行 int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1 //handling header. for (int i = headerRow.FirstCellNum; i < cellCount; i++) { DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); table.Columns.Add(column); } for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = table.NewRow(); if (row != null) { for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) dataRow[j] = GetCellValue(row.GetCell(j)); } } table.Rows.Add(dataRow); } return table; //} } /// /// 根据Excel列类型获取列的值 /// /// Excel列 ///
private static string GetCellValue(ICell cell) { if (cell == null) return string.Empty; switch (cell.CellType) { case CellType.Blank: return string.Empty; case CellType.Boolean: return cell.BooleanCellValue.ToString(); case CellType.Error: return cell.ErrorCellValue.ToString(); case CellType.Numeric: case CellType.Unknown: default: return cell.ToString();//This is a trick to get the correct value of the cell. NumericCellValue will return a numeric value no matter the cell value is a date or a number case CellType.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(); } } }

 

转载于:https://www.cnblogs.com/xiayan/p/4228222.html

你可能感兴趣的文章
设计模式之单例设计模式
查看>>
异常的基本概念
查看>>
iOS 离屏渲染学习笔记
查看>>
iOS Xib布局某些控件显示或隐藏<约束的修改>
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
球的移动(move)
查看>>
页面禁止双击选中
查看>>
打印流
查看>>
TCP/IP模型的一个简单解释
查看>>
解开最后期限的镣铐(转载)
查看>>
Kth Smallest Element in a BST
查看>>
ubuntu14.04利用aliyun安装docker
查看>>
iphone-命令行编译之--xcodebuild
查看>>
Plan : 破晓
查看>>
GNU make
查看>>
Visual Studio 2008 不能更改安装目录的原因
查看>>
threejs学习笔记04---相机动
查看>>
SAP Skill - How to search a field for which table it belongs
查看>>
parcel+vue入门
查看>>
基数排序
查看>>