• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    ExtJs Excel导出并下载IIS服务器端遇到的问题

    发布者: 怀卉1097 | 发布时间: 2025-8-13 13:19| 查看数: 97| 评论数: 0|帖子模式

    项目是Extjs的主要针对于Extjs GridPanel数据导出这块先做一下说明。
    我们可以通过Ext.getcmp()方法获取到GridPanel对象并通过重写的方法获取Excel字符串具体方法可以百度到。这个应该也不是什么大问题。

    //输出报表
    function ExportReport(title) {
    var vExportContent = Ext.getCmp("gridPanel").getExcelXml(null, title);
    if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3 || Ext.isIE8) {
    // var frm = document.createElement('form');
    // frm.id = 'frmExtjs';
    // frm.className = 'x-hidden';
    // document.body.appendChild(frm);
    var f = document.createElement("form");
    f.id = "frmExtjs";
    document.body.appendChild(f);
    var i = document.createElement("input");
    i.type = "hidden";
    i.id = "exportContent";
    i.name = "exportContent";
    f.appendChild(i);
    i.value = vExportContent;
    Ext.Ajax.request({
    url: 'frmExcel.aspx',
    method: 'POST',
    form: Ext.get('frmExtjs'),
    isUpload: true,
    params: { FileName: title + '.xls' }
    })
    } else {
    document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
    }

    以上是表单虚拟提交的方法。但是实验了很多方法。发现数据post过去后无法生成Excel通过生成后下载方法也无法实现。(即在服务器端无法生成,但本机可以生成。)经过多次思路的转折后来想到通过数据分析来调试。看看到底数据是否post到网页

    string tmpFileName = "export.xls";
    string tmpContent = Request["ExportContent"];
    if (Request["FileName"] != "")
    {
    tmpFileName = Request["FileName"];//获取传递来的文件名?
    tmpFileName = System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(tmpFileName));//处理中文文件名的情况
    }
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + tmpFileName + "\"");
    Response.Charset = "";
    System.IO.StringWriter tmpSW = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter tmpHTW = new System.Web.UI.HtmlTextWriter(tmpSW);
    tmpHTW.WriteLine(tmpContent);
    Response.Write(tmpSW.ToString());
    Response.End();


    以上是生成并下载的CS文件
    [img=88 border=0,107 alt=clip_image002 src=]https://bbs.05950596.com/[/img]

    后来找到这个工具
    具体步骤很简单:
    打开工具栏上的插件
    [img=244 border=0,68 alt=clip_image004 src=]https://bbs.05950596.com/[/img]

    虽然是英文的,但是不在话下。文档都是看的英文的。
    [img=244 border=0,37 alt=clip_image006 src=]https://bbs.05950596.com/[/img]

    [img=244 border=0,87 alt=clip_image008 src=]https://bbs.05950596.com/[/img]

    两张近照
    这边就可以看到post过去以后的报错信息。
    这个是无刷新post无法看到的页面。正因为这个而纠结了好久。今天终于知道哪错了。
    把错误信息复制到文本生成html文件。
    [img=244 border=0,58 alt=clip_image010 src=]https://bbs.05950596.com/[/img]

    原来是.net安全机制搞的鬼。
    在web.config 的System.Web 后面加两句话就搞定了。
    <httpRuntime requestValidationMode="2.0" />
    <pages validateRequest="false" /> 好了 问题解决了 结博。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表