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;

}

}

相关推荐
van久2 分钟前
.Net Core 学习:DbContextOptions<T> vs DbContextOptions 详细解析
java·学习·.netcore
Coder_Boy_3 分钟前
【物联网技术】- 基础理论-0001
java·python·物联网·iot
arron88995 分钟前
C# 项目源码进行全面的技术架构和调用逻辑分析。以下是系统性的技术方案
开发语言·架构·c#
dangdang___go8 分钟前
文件操作2+程序的编译和链接(1)
java·服务器·前端
Tony_yitao10 分钟前
12.华为OD机试 - N个选手比赛前三名、比赛(Java 双机位A卷 100分)
java·算法·华为od·algorithm
老华带你飞18 分钟前
医院挂号|基于Java医院挂号管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
豐儀麟阁贵22 分钟前
9.6使用正则表达式
java·开发语言·数据库·mysql
杀死那个蝈坦35 分钟前
Docker
java·docker·eclipse·tomcat·hibernate
a31582380636 分钟前
Android13隐藏某个App需要关注的源码文件
android·java·framework·launcher3·隐藏app
悟空码字43 分钟前
SpringBoot实现消息推送:让服务器学会“主动搭讪”
java·spring boot·后端