前段时间写了几个关于导入导出的功能,现在空闲下来了,把主要代码块贴出来。
感觉没有什么好讲的,相信很多地方都能看到类似的源码。
只是用习惯了,会比较方便,所以贴出来,也方便以后查看。
以后遇到这样可以重复利用的代码块,会多整理的。(#^.^#)
/// <summary>
/// 导入excel生成DataTable
/// </summary>
/// <param name="inputStream">Excel文件流</param>
/// <param name="extension">后缀名</param>
/// <returns></returns>
public static DataTable BuildTable(Stream inputStream, string extension)
{
DataTable dt = new DataTable();
try
{
IWorkbook workbook = null;
ISheet sheet = null;
if (Regex.IsMatch(extension, ".*xls$"))
{
workbook = new HSSFWorkbook(inputStream);
sheet = workbook.GetSheetAt(0);
}
else
{
workbook = new XSSFWorkbook(inputStream);
sheet = workbook.GetSheetAt(0);
}
IRow headerRow = sheet.GetRow(0);
int cellCount = headerRow.LastCellNum;
for (int j = 0; j < cellCount; j++)
{
ICell cell = headerRow.GetCell(j);
dt.Columns.Add(cell.ToString());
}
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
for (int j = row.FirstCellNum; j < cellCount; j++)
{
var cell = row.GetCell(j);
if (cell != null)
{
//用于转化为日期格式
if (cell.CellType == CellType.Nu