<strong><span style="font-size:18px;">导入Execl文件方法:</span></strong>
/// <summary>
/// 将excel中的数据导入到DataTable中
/// </summary>
/// <param name="fileName">execl文件路径名称</param>
/// <param name="sheetName">excel工作薄sheet的名称</param>
/// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
/// <returns>返回的DataTable</returns>
public DataTable ExcelToDataTable(string fileName, string sheetName, bool isFirstRowColumn)
{
IWorkbook workbook = null;
var data = new DataTable();
try
{
var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
// 2007版本
if (fileName != null && fileName.IndexOf(".xlsx") > 0)
{
workbook = new XSSFWorkbook(fs);
}
// 2003版本
else if (fileName != null && fileName.IndexOf(".xls") > 0)
{
workbook = new HSSFWorkbook(fs);
}
var sheet = sheetName != null ? workbook.GetSheet(sheetName) : workbook.GetSheetAt(0);
if (sheet == null) return data;
var firstRow = sheet.GetRow(0);
//一行最后一个cell的编号 即总的列数
int cellCount = firstRow.LastCellNum;
var startRow = 0;
if (isFirstRowColumn)
{
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
var column = new DataColumn(firstRow.GetCell(i).StringCellValue);
data.Columns.Add(column);
}
startRow = sheet.FirstRowNum + 1;
}
else
{
startRow = sheet.FirstRowNum;
}
//最后一列的标号
var rowCount = sheet.LastRowNum;
for (var i = startRow; i <= rowCount; ++i)
{
var row = sheet.GetRow(i);
//没有数据的行默认是null
if (row == null) continue;
var dataRow = data.NewRow();
for (int j = row.FirstCellNum; j < cellCount; ++j)
{
//同理,没有数据的单元格都默认是null
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
}
}
data.Rows.Add(dataRow);
}
return data;
}
catch (Exception ex)
{
return null;
}
}
<strong><span style="font-size:18px;color:#ff0000;">注意:需要引用dll动态库: <a target=_blank href="http://pan.baidu.com/s/1sjM6map"> dll动态库下载</a></span></strong>