?/// <summary>
? ? ? ? /// Excel轉換成DataTable(.xls)
? ? ? ? /// </summary>
? ? ? ? /// <param name="filePath">Excel文件路徑</param>
? ? ? ? /// <returns></returns>
? ? ? ? public static DataTable ExcelToDataTable(string filePath)
? ? ? ? {
? ? ? ? ? ? var dt = new DataTable();
? ? ? ? ? ? using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var hssfworkbook = new HSSFWorkbook(file);
? ? ? ? ? ? ? ? var sheet = hssfworkbook.GetSheetAt(0);
? ? ? ? ? ? ? ? for (var j = 0; j < 5; j++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? var rows = sheet.GetRowEnumerator();
? ? ? ? ? ? ? ? while (rows.MoveNext())
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? var row = (HSSFRow)rows.Current;
? ? ? ? ? ? ? ? ? ? var dr = dt.NewRow();
? ? ? ? ? ? ? ? ? ? for (var i = 0; i < row.LastCellNum; i++)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? var cell = row.GetCell(i);
? ? ? ? ? ? ? ? ? ? ? ? if (cell == null)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = null;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? switch (cell.CellType)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.Blank:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = "[null]";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.Boolean:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.BooleanCellValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.Numeric:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.ToString();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.String:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.StringCellValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.Error:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.ErrorCellValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case CellType.Formula:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.NumericCellValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? catch
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = cell.StringCellValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dr[i] = "=" + cell.CellFormula;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? dt.Rows.Add(dr);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return dt;
? ? ? ? }