c# Excel转换成DataTable

/// <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;

}

相关推荐
雨奔2 小时前
Kubernetes DNS 完全指南:服务发现核心机制与实践
java·kubernetes·服务发现
逻辑驱动的ken3 小时前
Java高频面试考点场景题14
java·开发语言·深度学习·面试·职场和发展·求职招聘·春招
阿冰冰呀3 小时前
互联网大厂Java求职面试实录:谢飞机的“水货”之路
java·mybatis·dubbo·springboot·线程池·多线程·hashmap
水无痕simon3 小时前
1.单机部署Nacos1.3.2
java
njsgcs4 小时前
拆分多实体到装配体 solidworks c#
c#
Java小生不才5 小时前
spring AI文生图
java·人工智能·spring ai
苍煜5 小时前
ThreadPoolExecutor线程池终极全解:同步异步判定+SpringBoot生产实战
java·开发语言·spring boot
何以解忧唯有撸码6 小时前
C# 视频录制监控系统
c#·winform
c++之路6 小时前
C++ 动态内存
java·jvm·c++
2301_8009769310 小时前
数据库的基本操作后续
java·数据库·sql