读取ecxel中数据(excel匹配数据)

网友投稿 272 2022-08-21

读取ecxel中数据(excel匹配数据)

//在NuGet中导入NPOI.Excel管理器

 ///

        /// 读取Excel,放入DataTable中

        /// 文件路劲

        /// 表名

        /// 是否有表头

        ///

public static DataTable ReadExcelToDataTable(string fileName, string sheetName = null, bool isFirstRowColumn = false)

{

//定义要返回的datatable对象

DataTable data = new DataTable();

NPOI.SS.UserModel.ISheet sheet = null;

//数据开始行(排除标题行)

int startRow = 0;

if (!File.Exists(fileName))

{

return null;

}

//根据指定路径读取文件

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

NPOI.SS.UserModel.IWorkbook workbook = NPOI.SS.UserModel.WorkbookFactory.Create(fs);

//IWorkbook workbook = new HSSFWorkbook(fs);

//如果有指定工作表名称

if (!string.IsNullOrEmpty(sheetName))

{

sheet = workbook.GetSheet(sheetName);

//如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet

if (sheet == null)

{

sheet = workbook.GetSheetAt(0);

}

}

else

{

//如果没有指定的sheetName,则尝试获取第一个sheet

sheet = workbook.GetSheetAt(0);

}

if (sheet != null)

{

NPOI.SS.UserModel.IRow firstRow = sheet.GetRow(0);

//一行最后一个cell的编号 即总的列数

int cellCount = firstRow.LastCellNum;

//如果第一行是标题列名

for (int i = firstRow.FirstCellNum; i < cellCount; ++i)

{

NPOI.SS.UserModel.ICell cell = firstRow.GetCell(i);

if (cell != null) //遍历Excel表

{

// string cellValue = cell.StringCellValue;

if (cell != null)

{

DataColumn column = new DataColumn(cell.ToString());

data.Columns.Add(column);

}

}

}

if (isFirstRowColumn)

{

startRow = sheet.FirstRowNum + 1; //有表头时不读取表头

}

else

{

startRow = sheet.FirstRowNum;

}

//最后一列的标号

int rowCount = sheet.LastRowNum;

for (int i = startRow; i <= rowCount; ++i)

{

NPOI.SS.UserModel.IRow row = sheet.GetRow(i);

if (row == null) continue; //没有数据的行默认是null       

DataRow dataRow = data.NewRow();

for (int j = row.FirstCellNum; j < cellCount; ++j)

{

if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null

dataRow[j] = row.GetCell(j).ToString();

}

data.Rows.Add(dataRow);

}

}

return data;

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:https://www.cnblogs.com/my2020/p/12488543.html
下一篇:DataTable转为TXT文档(复制datatable结构)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~