NPOI 读取EXCEL(2003,2007)并转换为DataTable
private void button1_Click(object sender, EventArgs e) { var dt = new DataTable(); using (OpenFileDialog openFile = new OpenFileDialog()) { if (openFile.ShowDialog() == DialogResult.OK) { string fileName = openFile.FileName; using (FileStream fs = File.OpenRead(fileName)) { string extension = System.IO.Path.GetExtension(fileName).ToLower(); IWorkbook workBook; switch (extension) { case ".xlsx": workBook = new XSSFWorkbook(fs); break; case ".xls": workBook = new HSSFWorkbook(fs); break; default: throw new Exception("格式不正确"); } ISheet sheet = workBook.GetSheetAt(0); // 表头 IRow header = sheet.GetRow(sheet.FirstRowNum); List<int> columns = new List<int>(); for (int i = 0; i < header.LastCellNum; i++) { object obj = GetCellValue(header.GetCell(i)); { var col = new DataColumn("Columns" + i.ToString()); col.Caption = obj.ToString(); dt.Columns.Add(col); } columns.Add(i); } // 数据 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++) { DataRow dr = dt.Rows.Add(); foreach (int j in columns) { dr[j] = GetCellValue(sheet.GetRow(i).GetCell(j)); } dataGridView1.DataSource = dt; } } } } }
GarsonZhang www.yesdotnet.com
/// <summary> /// 获取单元格类型(xlsx) /// </summary> /// <param name="cell"></param> /// <returns></returns> private object GetCellValue(ICell cell) { if (cell == null) return null; switch (cell.CellType) { case CellType.Blank: //BLANK: return null; case CellType.Boolean: //BOOLEAN: return cell.BooleanCellValue; case CellType.Numeric: //NUMERIC: return cell.NumericCellValue; case CellType.String: //STRING: return cell.StringCellValue; case CellType.Error: //ERROR: return cell.ErrorCellValue; case CellType.Formula: //FORMULA: default: return "=" + cell.CellFormula; } }
GarsonZhang www.yesdotnet.com
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post YES开发框架