CodeTomb 2020-07-03 11:52 采纳率: 0%
浏览 681

asp.net mvc+bootstrap-fileinput导入Excel文件到数据库 后台控制器要怎么实现?

图片说明

前端代码
这里用的是一个boostrap框架的模态框

<div id="import" class="modal fade bs-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="width: 90%;margin:0 auto;">
                                <div class="modal-dialog modal-lg">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
                                            <h4 class="modal-title" style="text-align:center;font-size: 22px;letter-spacing: 3px;">数据导入</h4>
                                        </div>
                                        <div class="modal-body">
                                            <div style="text-align:right;padding:5px">
                                                <a class="zstemplate" href="~/Content/Template/TestUser-模板.xls" onclick="javascript:Preview();">
                                                    <i class="layui-icon" style="font-size:17px;">&#xe62d;</i>
                                                    <span style="font-size: 17px;font-weight:200;color: #4c89bf;">数据-模板.xls</span>
                                                </a>
                                            </div>
                                            <hr />
                                            <form id="ffImport" method="post">
                                                <div title="Excel导入操作" style="padding: 5px">
                                                    <input type="hidden" id="AttachGUID" name="AttachGUID" />
                                                    <input id="excelFile" type="file">
                                                </div>
                                            </form>

                                            <div class="impotable">
                                                <table id="gridImport" class="table table-striped table-bordered table-hover" cellpadding="0" cellspacing="0" border="0">
                                                </table>
                                            </div>

                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                                            <button type="button" class="btn btn-primary" onclick="SaveImport()">保存</button>
                                        </div>
                                    </div>
                                </div>
                            </div>


js代码
  //初始化Excel导入的文件
    function InitExcelFile() {
    //记录GUID
    $("#AttachGUID").val(guids());

    $("#excelFile").fileinput({
        uploadUrl: "/System/Client/Upload",//上传的地址
        uploadAsync: true,              //异步上传
        language: "zh",                 //设置语言
        showCaption: true,              //是否显示标题
        showUpload: true,               //是否显示上传按钮
        showRemove: true,               //是否显示移除按钮
        showPreview : true,             //是否显示预览按钮
        browseClass: "btn btn-primary", //按钮样式 
        dropZoneEnabled: false,         //是否显示拖拽区域
        allowedFileExtensions: ["xls", "xlsx"], //接收的文件后缀
        maxFileCount: 1,                        //最大上传文件数限制
        previewFileIcon: '<i class="glyphicon glyphicon-file"></i>',
        allowedPreviewTypes: null,
        previewFileIconSettings: {
            'docx': '<i class="glyphicon glyphicon-file"></i>',
            'xlsx': '<i class="glyphicon glyphicon-file"></i>',
            'pptx': '<i class="glyphicon glyphicon-file"></i>',
            'jpg': '<i class="glyphicon glyphicon-picture"></i>',
            'pdf': '<i class="glyphicon glyphicon-file"></i>',
            'zip': '<i class="glyphicon glyphicon-file"></i>',
        },
        uploadExtraData: {  //上传的时候,增加的附加参数
            folder: '数据导入文件', guid: $("#AttachGUID").val()
        }
    })  //文件上传完成后的事件
   .on('fileuploaded', function (event, data, previewId, index) {
        var form = data.form, files = data.files, extra = data.extra,
            response = data.response, reader = data.reader;

        var res = data.response; //返回结果
        if (res.Success) {
            toastr.success('上传成功!');
            var guid = $("#AttachGUID").val();

            //提示用户Excel格式是否正常,如果正常加载数据
            $.ajax({
                url: '/System/Client/CheckExcelColumns?guid=' + guid,
                type: 'get',
                dataType: 'json',
                success: function (data) {
                    if (data.Success) {
                        //InitImport(guid); //重新刷新表格数据
                        toastr.success('文件已上传,数据加载完毕!');
                        //重新刷新GUID,以及清空文件,方便下一次处理
                        RefreshExcel();
                    }
                    else {
                        toastr.error('上传的Excel文件检查不通过。请根据页面右上角的Excel模板格式进行数据录入。');
                    }
                }
            });
        }
        else {
            toastr.error('上传失败');
        }
   });
}

后台控制器
 [HttpPost]
        public ActionResult Upload()
        {
            var file = Request.Files[0];
            if (file == null) { return Error(); }
            string userId = OperatorProvider.Instance.Current.UserId;
            string virtualPath = Path.Combine("/Content/Uploads/Avatar", userId + Path.GetExtension(file.FileName));
            string filePath = Request.MapPath(virtualPath);
            if (FileUtil.Exists(filePath))
            {
                FileUtil.Delete(filePath);
            }
            file.SaveAs(filePath);
            return Success("上传成功。", virtualPath);
        }
这里已经可以将文件上传到服务器
但是要怎么讲excel表的数据保存到数据库 并且对应好相应的字段
跪求各位大佬!
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-07-03 14:31
    关注

    file.SaveAs(filePath);
    这里就有excel文件了
    之后用npoi可以读取excel文件内容,用linq/ado.net插入数据库即可

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记