新人求助,.NET MVC中如何利用npoi读取excel,导入数据库中

因为最近的项目中要使用,第一次接触不太懂,所以求助大神。主要的是把视图部分和控制器部分的代码写清楚,谢谢大家了!救人一命,胜造七级浮屠啊!!!... 因为最近的项目中要使用,第一次接触不太懂,所以求助大神。主要的是把视图部分和控制器部分的代码写清楚,谢谢大家了!救人一命,胜造七级浮屠啊!!! 展开
 我来答
江湖扒一扒
2016-07-06 · TA获得超过463个赞
知道小有建树答主
回答量:231
采纳率:80%
帮助的人:178万
展开全部

这个的话,实际上就是先在服务器端生成该Excel文件,然后使用下载功能进行下载。下载方法不止一种,那么如何生成文件并返回该路径呢?实际上,还是流来实现的(包括生成PDF、TXT文档都是这样做的)。我一般的做法是,在服务器端生成临时文件,然后下载就可以了。具体部分代码如下:


            var savePath = Path.Combine(Path.GetTempPath(), fileName);
            FileStream fs = new FileStream(savePath, FileMode.Create);
            workbook.Write(fs);
            fs.Close();
            return savePath;

这个是我从我项目中提取的部分代码,fileName就是文件名(传入的时候记得带后缀名.xls),workbook就是我们用NPOI创建的文档,写入fs流中。至于怎么用这个savePath,我的用法是在控制器要下载的地方加入如下代码:

                if (isExport)
                {
                    string date = DateTime.Now.ToChineseDate() + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second;
                    var desFilePath = showList.ExportExcel("拖运记录输入查询资料" + date + ".xls", "拖运记录输入查询");
                    var url = Url.Action("DownloadFile", "Utils", new { @fullFilePath = desFilePath });
                    return Json(new { success = true, url = url });
                }

首先判断是不是下载,我通常将查询和下载做在一个控制器中,因为查询和下载很多地方可以共用。关键是desFilePath实质就是第一部分代码return savePath。而这个Url.Action这一部分就是另外一个单独的下载控制器,并把这个路径传过去,得到的url到客户端再执行。

前端使用Ajax即可。通用下载JS代码如下:

    Application.exportHandler = function (form) {
         var link = $(this);
        var url = link.attr('href');
        $.post(url, form.serialize() + "&isExport=true")
            .done(function (json) {
                json = json || {};
                if (json.success) {
                    $("body").append("<iframe src='" + json.url + "' style='display: none;' ></iframe>");
                } else if (json.errors) {
                    Application.fancyAlert("汇出发生错误!");
                }
            })
            .error(function () {
                Application.fancyAlert("汇出发生错误!");
            });
    };

当点击下载的时候,就可以执行这段JS,Application是自定义的“类”,参数就是一个form(form不必我解释是什么吧)。控制器返回的url就是代码中的json.url。方法不止这一种,至于怎么下载文档,网上有很多,你可以自己去找找看。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式