当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net core导入excel

asp.net core导入excel

2019年01月18日  | 移动技术网IT编程  | 我要评论

王黎雯图片,少女穿越之立海大篇,咸鱼怎么做好吃

接昨天的

导入excel内容


对比昨天导出的内容增加了一行实体属性名称作为标题行,这样到转换为实体的时候才能找到对应的属性。

导入代码

public iactionresult inportexcel()
{
    var file = "d:\\a.xls";
    var excelheper = new excelhelper();
    var dt = excelheper.excelimport(file,2);
    var list = dt.tolist<student>();
    return content("");
}

excel文件路径可以通过上传控件上传到服务器再读取。

注意

如果你导入和发现bool类型不能正确读取请修改一下两个文件的两个地方:

datatableextensions的public static ienumerable

else if (p.propertytype == typeof(bool))
{
    p.setvalue(ob, bool.parse(row[p.name].tostring()), null);
}

excelhelper的private datatable readsheettodatatable(int headerrowno, isheet sheet)方法替换为如下代码或增加一个bool类型判断

private datatable readsheettodatatable(int headerrowno, isheet sheet)
{
    var dt = new datatable();
    irow headerrow = sheet.getrow(headerrowno);
    int cellcount = headerrow.lastcellnum;

    for (int j = 0; j < cellcount; j++)
    {
        icell cell = headerrow.getcell(j);
        dt.columns.add(cell.tostring());
    }

    for (int i = (headerrowno + 1); i <= sheet.lastrownum; i++)
    {
        irow row = sheet.getrow(i);
        datarow datarow = dt.newrow();

        for (int j = 0; j < cellcount; j++)
        {
            if (row.getcell(j) == null)
            {
                continue;
            }

            icell cell = row.getcell(j);
            switch (cell.celltype)
            {
                case celltype.unknown:
                case celltype.error:
                    throw new exception($"第{i + 1}行,列【{dt.columns[j].columnname}】,单元格格式错误");
                    break;
                case celltype.numeric:
                    if (dateutil.iscelldateformatted(cell))
                    {
                        datarow[j] = cell.datecellvalue;
                    }
                    else
                    {
                        datarow[j] = cell.numericcellvalue;
                    }
                    break;                       
                case celltype.blank:
                    datarow[j] = "";
                    break;
                case celltype.boolean:
                    datarow[j] = cell.booleancellvalue;
                    break;
                case celltype.formula:
                    datarow[j] = cell.cellformula ;
                    break;
                case celltype.string:                        
                default:
                    datarow[j] = cell.stringcellvalue;
                    break;
            }
            

            //datarow[j] = row.getcell(j).tostring();
        }

        bool existsvalue = false;
        foreach (datacolumn column in dt.columns)
        {
            if (datarow[column.columnname] == null || string.isnullorempty(datarow[column.columnname].tostring()))
            {
                continue;
            }

            existsvalue = true;
            break;
        }
        if (existsvalue)
        {
            dt.rows.add(datarow);
        }
    }
    return dt;
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网