using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.Odbc; using System.Data.OleDb; using System.Diagnostics; using System.IO; using System.Reflection; using System.Text; using NetLibrary.Data; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; using NetLibrary; namespace TradeManageNew { public class ExcelNew { #region 导入 public DataTable ImportExcel(string fileName) { HSSFWorkbook hssfworkbook; using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { hssfworkbook = new HSSFWorkbook(file); } ISheet sheet = hssfworkbook.GetSheetAt(0); IEnumerator rows = sheet.GetRowEnumerator(); DataTable dt = new DataTable(); IRow row; rows.MoveNext(); row = (HSSFRow)rows.Current; int len = row.LastCellNum; int j = 0; for (int i = 0; i < len; i++) { ICell cell = row.GetCell(i); if (cell != null) { if (cell.ToString().Trim() == "Tracking ID Charge Description") { dt.Columns.Add(cell.ToString().Trim()+j.ToString()); } else if (cell.ToString().Trim() == "Tracking ID Charge Amount") { dt.Columns.Add(cell.ToString().Trim() + j.ToString()); j++; } else { if (dt.Columns.Contains(cell.ToString().Trim()) == true) dt.Columns.Add(cell.ToString().Trim() + i.ToString()); else dt.Columns.Add(cell.ToString().Trim()); } } } while (rows.MoveNext()) { row = (HSSFRow)rows.Current; DataRow dr = dt.NewRow(); for (int i = 0; i < len; i++) { ICell cell = row.GetCell(i); if (cell == null) { dr[i] = null; } else { //读取Excel格式,根据格式读取数据类型 switch (cell.CellType) { case CellType.BLANK: //空数据类型处理 dr[i] = ""; break; case CellType.STRING: //字符串类型 dr[i] = cell.StringCellValue; break; case CellType.NUMERIC: //数字类型 if (DateUtil.IsCellDateFormatted(cell))//日期类型 { dr[i] = cell.DateCellValue; } else//其他数字类型 { dr[i] = cell.NumericCellValue; } break; case CellType.FORMULA: HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook); dr[i] = e.Evaluate(cell).StringValue; break; default: dr[i] = ""; break; } //if (cell.CellType == CellType.FORMULA || cell.CellType == CellType.NUMERIC) //{ // dr[i] = cell.DateCellValue; //} //else //{ // dr[i] = cell.ToString().Trim(); //} } } dt.Rows.Add(dr); } return dt; } #endregion } }