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;

}

相关推荐
_院长大人_17 分钟前
Spring Boot 客户端设计示例:自动刷新 Token 并重试接口调用(Springboot Starter 封装)
java·spring boot·后端
卷到起飞的数分24 分钟前
19.Spring Boot原理1
java·spring boot·后端
消失的旧时光-194326 分钟前
彻底理解 synchronized:实例锁、类锁与自定义锁的原理和最佳实践
java·开发语言
开源之眼37 分钟前
github star 较多的Java双亲委派机制【类加载的核心内容加星】
java
编程火箭车39 分钟前
【Java SE 基础学习打卡】19 运算符(中)
java·java入门·运算符·编程基础·赋值运算符·复合赋值·自增自减
是一个Bug39 分钟前
Spring事件监听器源码深度解析
java·数据库·spring
Byron Loong40 分钟前
【C#】 RSA 密钥生成工具
c#
蜂蜜黄油呀土豆43 分钟前
ThreadLocal 深度解析:它解决了什么、原理是什么、如何正确使用(含代码与实战建议)
java·并发编程·内存泄漏·threadlocal
毕设源码-郭学长1 小时前
【开题答辩全过程】以 高校教室管理系统为例,包含答辩的问题和答案
java·spring boot
罗不丢1 小时前
UTC,Date,LocalDate转换问题解决方法
java