/// <summary> /// 读Excel-根据NpoiDataType创建的DataTable列的数据类型 /// </summary> /// <param></param> /// <returns></returns> private static Type GetDataTableType(NpoiDataType datatype) { var tp = typeof(string); switch (datatype) { case NpoiDataType.Bool: tp = typeof(bool); break; case NpoiDataType.Datetime: tp = typeof(DateTime); break; case NpoiDataType.Numeric: tp = typeof(double); break; case NpoiDataType.Error: tp = typeof(string); break; case NpoiDataType.Blank: tp = typeof(string); break; } return tp; } /// <summary> /// 读Excel-得到不同数据类型单元格的数据 /// </summary> /// <param>数据类型</param> /// <param>数据中的一行</param> /// <param>哪列</param> /// <returns></returns> private static object GetCellData(NpoiDataType datatype, IRow row, int column) { switch (datatype) { case NpoiDataType.String: try { return row.GetCell(column).DateCellValue; } catch { try { return row.GetCell(column).StringCellValue; } catch { return row.GetCell(column).NumericCellValue; } } case NpoiDataType.Bool: try { return row.GetCell(column).BooleanCellValue; } catch { return row.GetCell(column).StringCellValue; } case NpoiDataType.Datetime: try { return row.GetCell(column).DateCellValue; } catch { return row.GetCell(column).StringCellValue; } case NpoiDataType.Numeric: try { return row.GetCell(column).NumericCellValue; } catch { return row.GetCell(column).StringCellValue; } case NpoiDataType.Richtext: try { return row.GetCell(column).RichStringCellValue; } catch { return row.GetCell(column).StringCellValue; } case NpoiDataType.Error: try { return row.GetCell(column).ErrorCellValue; } catch { return row.GetCell(column).StringCellValue; } case NpoiDataType.Blank: try { return row.GetCell(column).StringCellValue; } catch { return ""; } default: return ""; } } /// <summary> /// 获取单元格数据类型 /// </summary> /// <param>单元格对象</param> /// <returns></returns> private static NpoiDataType GetCellDataType(ICell hs) { NpoiDataType dtype; DateTime t1; var cellvalue = ""; switch (hs.CellType) { case CellType.Blank: dtype = NpoiDataType.String; cellvalue = hs.StringCellValue; break; case CellType.Boolean: dtype = NpoiDataType.Bool; break; case CellType.Numeric: dtype = NpoiDataType.Numeric; cellvalue = hs.NumericCellValue.ToString(CultureInfo.InvariantCulture); break; case CellType.String: dtype = NpoiDataType.String; cellvalue = hs.StringCellValue; break; case CellType.Error: dtype = NpoiDataType.Error; break; default: dtype = NpoiDataType.Datetime; break; } if (cellvalue != "" && DateTime.TryParse(cellvalue, out t1)) dtype = NpoiDataType.Datetime; return dtype; }
四.总结: