Created
September 14, 2016 08:27
-
-
Save johnsonz/6981844eade20a24d37d8d569b4600d5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <summary> | |
/// 将excel中的数据导入到DataTable中 | |
/// </summary> | |
/// <param name="sheetName">excel工作薄sheet的名称</param> | |
/// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param> | |
/// <returns>返回的DataTable</returns> | |
public DataTable ExcelToDataTable(string sheetName, bool isFirstRowColumn) | |
{ | |
ISheet sheet = null; | |
DataTable data = new DataTable(); | |
int startRow = 0; | |
try | |
{ | |
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); | |
if (fileName.IndexOf(".xlsx") > 0) // 2007版本 | |
workbook = new XSSFWorkbook(fs); | |
else if (fileName.IndexOf(".xls") > 0) // 2003版本 | |
workbook = new HSSFWorkbook(fs); | |
if (sheetName != null) | |
{ | |
sheet = workbook.GetSheet(sheetName); | |
if (sheet == null) //如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet | |
{ | |
sheet = workbook.GetSheetAt(0); | |
} | |
} | |
else | |
{ | |
sheet = workbook.GetSheetAt(0); | |
} | |
if (sheet != null) | |
{ | |
IRow firstRow = sheet.GetRow(0); | |
int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数 | |
if (isFirstRowColumn) | |
{ | |
for (int i = firstRow.FirstCellNum; i < cellCount; ++i) | |
{ | |
ICell cell = firstRow.GetCell(i); | |
if (cell != null) | |
{ | |
string cellValue = cell.StringCellValue; | |
if (cellValue != null) | |
{ | |
DataColumn column = new DataColumn(cellValue); | |
data.Columns.Add(column); | |
} | |
} | |
} | |
startRow = sheet.FirstRowNum + 1; | |
} | |
else | |
{ | |
startRow = sheet.FirstRowNum; | |
} | |
//最后一列的标号 | |
int rowCount = sheet.LastRowNum; | |
for (int i = startRow; i <= rowCount; ++i) | |
{ | |
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; | |
} | |
catch (Exception ex) | |
{ | |
Console.WriteLine("Exception: " + ex.Message); | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment