c# Excel转换成DataSet

/// <summary>

/// Excel转换成DataSet(.xlsx/.xls)

/// </summary>

/// <param name="filePath">Excel文件路径</param>

/// <param name="strMsg"></param>

/// <returns></returns>

public static DataSet ExcelToDataSet(string filePath, out string strMsg)

{

strMsg = "";

DataSet ds = new DataSet();

DataTable dt = new DataTable();

string fileType = Path.GetExtension(filePath).ToLower();

string fileName = Path.GetFileName(filePath).ToLower();

try

{

ISheet sheet = null;

int sheetNumber = 0;

// 加载Excel文件

using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read))

{

if (fileType == ".xlsx")

{

// 2007版本

XSSFWorkbook workbook = new XSSFWorkbook(fs);

sheetNumber = workbook.NumberOfSheets;

for (int i = 0; i < sheetNumber; i++)

{

string sheetName = workbook.GetSheetName(i);

sheet = workbook.GetSheet(sheetName);

if (sheet != null)

{

dt = GetSheetDataTable(sheet, out strMsg);

if (dt != null)

{

dt.TableName = sheetName.Trim();

ds.Tables.Add(dt);

}

else

{

//MessageBox.Show("Sheet数据获取失败,原因:" + strMsg);

}

}

}

}

else if (fileType == ".xls")

{

// 2003版本

HSSFWorkbook workbook = new HSSFWorkbook(fs);

sheetNumber = workbook.NumberOfSheets;

for (int i = 0; i < sheetNumber; i++)

{

string sheetName = workbook.GetSheetName(i);

sheet = workbook.GetSheet(sheetName);

if (sheet != null)

{

dt = GetSheetDataTable(sheet, out strMsg);

if (dt != null)

{

dt.TableName = sheetName.Trim();

ds.Tables.Add(dt);

}

else

{

//MessageBox.Show("Sheet数据获取失败,原因:" + strMsg);

}

}

}

}

}

return ds;

}

catch (Exception ex)

{

strMsg = ex.Message;

return null;

}

}

相关推荐
刘97533 分钟前
【第24】天24c#今日小结
开发语言·c#
小兔崽子去哪了8 分钟前
SpringBoot 原理专题
java·spring boot·spring
daols8814 分钟前
vue 表格 vxe-table 手动操作单元格范围选择,手动选择 excel 指定区域的用法
vue.js·excel·vxe-table
wangnaisheng14 分钟前
【C#】性能优化
c#
qq_54702617922 分钟前
多版本 JDK 安装与配置
java·开发语言
2501_941798731 小时前
面向微服务动态限流与服务熔断的互联网系统高可用设计与多语言工程实践分享
java·大数据·开发语言
躲在云朵里`1 小时前
Java集合框架(二):List接口深度解析与ArrayList、LinkedList对比
java
是一个Bug1 小时前
进程、线程、内存管理和I/O模型
java·开发语言·面试
2201_757830871 小时前
ThreadLocal
java·服务器·前端
廋到被风吹走1 小时前
【Java】【JVM】性能监控与故障诊断
java·开发语言·jvm