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;

}

相关推荐
JQLvopkk1 分钟前
DeepSeek赋能新一代高智能化SCADA
人工智能·c#
编程大师哥2 分钟前
JAVA 集合框架进阶
java·开发语言
qq_454245032 分钟前
组件生命周期管理器架构:ECS事件处理的优雅实践
架构·c#
TechFind3 分钟前
AI Agent 开发完整教程:从零到上线的实战指南
java·javascript
春日见5 分钟前
车载系统中的CPU与内存监管
java·开发语言·驱动开发·docker·计算机外设
用户2565676133465 分钟前
Android Input 系统事件分发机制深度解析
java
fengxin_rou6 分钟前
黑马点评实战篇|第六篇:秒杀优化
java·开发语言·数据库·redis·分布式
后端AI实验室11 分钟前
3年没人敢碰的老代码,我用AI重构了它——然后翻车了
java·ai
用户25656761334612 分钟前
Binder 通信机制与 ANR 问题排查实战
java
用户25656761334615 分钟前
记一次诡异的 ANR 问题排查:主线程明明没干活,为啥还超时?
java