现在位置首页 / 项目实战 /正文

C#使用NPOI跨域生成excel文件并下载demo

作者: IT小兵 | 2016年3月4日| 热度:℃ | 评论: |参与:

关于跨域、excel生成等本站分享了很多demo了。今天整理了一个C#使用NPOI跨域生成excel文件并下载的demo。

希望对大家的使用NPOI有帮助。

关于NPOI有一篇文章[Excel生成利器:NPOI介绍及demo] 介绍过了。但是代码有点老了。今天重新更新一下。

效果预览:

1、服务端,根据参数获取数据数据

 引用dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;
using NPOI.SS.Formula.Functions;
using System.IO;

初始化NPOI的实体:

        HSSFWorkbook hssfworkbook;
        void InitializeWorkbook()
        {
            hssfworkbook = new HSSFWorkbook();
            ////create a entry of DocumentSummaryInformation
            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "AP分析";
            hssfworkbook.DocumentSummaryInformation = dsi;
            ////create a entry of SummaryInformation
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Subject = "导出分析结果";
            hssfworkbook.SummaryInformation = si;
        }

设置表头和数据对应:

        private string Pengzhuang(int taskid, int tasktype)
        {
            string url = "";
            AP.BLL.CrashResult crashbll = new AP.BLL.CrashResult();
            List<AP.Model.CrashResult> list = crashbll.GetModelList(" TaskID=" + taskid);
            int count = 0;
            //用npoi先写表头
            InitializeWorkbook();
            ISheet sheet1 = hssfworkbook.CreateSheet("任务" + taskid + "导出结果");
            IRow row1 = sheet1.CreateRow(0);
            row1.CreateCell(0).SetCellValue("序号");
            row1.CreateCell(1).SetCellValue("Mac");
            row1.CreateCell(2).SetCellValue("碰撞率");
            int x = 1;
            foreach (AP.Model.CrashResult cs in list)
            {
                IRow row = sheet1.CreateRow(x);
                row.CreateCell(0).SetCellValue(cs.ID);
                row.CreateCell(1).SetCellValue(cs.Mac);
                row.CreateCell(2).SetCellValue(cs.CrashCount.ToString());
                x++;
            }
            url = WriteToFile();
            return url;
        }

返回文件下载的url:

 [WebMethod]
        public void Exceldown(int taskid,int tasktype)
        { 
            string url = "";
            switch(tasktype)
            {
                case 2://
                    url = Pengzhuang(taskid,tasktype);
                    break;
               
                default:
                    url = "#";
                    break;
            }
            CheckResponse.SendResponse(url); 
        }

文件生成:

        string WriteToFile()
        {
            //Write the stream data of workbook to the root directory
            string serverImagePath = "cardxls";
            string filename = hssfworkbook.GetSheetAt(0).SheetName + ".xls";
            string temppath = System.Web.HttpContext.Current.Server.MapPath(serverImagePath);
            if (!Directory.Exists(temppath))
            {
                Directory.CreateDirectory(temppath);
            }
            FileStream file = new FileStream(System.Web.HttpContext.Current.Server.MapPath(serverImagePath + "/" + filename), FileMode.Create);
            hssfworkbook.Write(file);
            file.Close();
            return "/" + serverImagePath + "/" + filename;
        }

2、js ajax调用服务

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileDown.aspx.cs" Inherits="Ap.Service.FileDown" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div  style="color:#4fcaa5;text-align:center;padding-top:80px;">
    
        <div id="divprocess" style="color:#4fcaa5;text-align:center;">
            正在生成文件,请稍等......
        </div>
        <div id="divdown" style="display:none;" >
            <a href="#" id="afileurl">
            <img src="images/down.png" />
             </a>
        </div>
    </div>
    </form>
    <script src="Scripts/jquery-1.4.1.min.js"></script>
    <script type="text/javascript">
        function getServiceUrl(url) {
            //var Sessions = $.cookie('Sessions');
            //alert(Sessions);
            var resulturl = "/file.asmx/" + url;
            return resulturl;
        }
        function requestparm(paras) {
            var url = location.href;
            var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
            var paraObj = {}
            for (i = 0; j = paraString[i]; i++) {
                paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length);
            }
            var returnValue = paraObj[paras.toLowerCase()];
            if (typeof (returnValue) == "undefined") {
                return "";
            } else {
                return returnValue;
            }
        }
        $(document).ready(function (e) {
            var ServiceUrl = getServiceUrl("Exceldown"); 
            $.ajax({
                url: ServiceUrl,
                dataType: 'JSONP',
                data: {
                    taskid: requestparm("taskid"),
                    tasktype: requestparm("tasktype")
                },
                jsonp: 'callback',
                success: function (result) {
                     
                    var json_data = $.parseJSON(result.jsondata); 
                    if (json_data != null) {
                        $("#divprocess").html("文件生成成功!点击下面的下载按钮进行下载。推荐使用\"右键另存为...\"的方式进行保存.");
                        $("#afileurl").attr("href", json_data);
                        $("#divdown").show();
                    }
                },
                complete: function (XMLHttpRequest, textStatus) {
                    //alert(textStatus);
                },
                error: function (e) {
                     
                    $("#divprocess").html('服务器异常,请联系系统管理员:' + e.responseText);
                    return;
                },
                timeout: 50000
            });
            //------------------------------------------
        });
</script>
</body>
</html>


点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询