jQuery MiniUI

标题: 打开Excel文件 [打印本页]

作者: netui    时间: 2013-11-25 15:07:42     标题: 打开Excel文件

本帖最后由 netui 于 2013-11-25 15:09 编辑

Factory版主:下午好!

好久没来烦你们了。


想请教一下,前台打开Excel文件问题,搞了两天,还没有查出问题。

前台的FN过程:

function downloadExcel() {
            var msg;
           
            msg=mini.loading("Excel模板下载中...", "文件下载");
            $.ajax({
                url:"../Ajax/downloadExcel.aspx?method=download",
                data: {filename: "Teacher.xls",filename2: "test.xls"},
                type: "post",
                success: function(text){
                    mini.hideMessageBox(msg);
                },
                error: function(jqXHR, textStatus, errorThrown){
                    alert(jqXHR,responseText);
                }
            });
        }


后台.net界面:

using System;
using System.Web;
using Helper;

public partial class downloadExcel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String method = Request["method"];

        switch (method)
        {
            case "download":
                //数据来源

                String filename = Request["filename"];
                String filename2 = Request["filename2"];
                downloadFile(filename,filename2);
                break;
            default:
                break;
        }
    }

    public void downloadFile(String filename, String filename2)
    {
        try
        {
            Response.ContentType = "application/x-zip-compressed";
            Response.HeaderEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename2, System.Text.Encoding.UTF8));//FireFox的文件名显示有问题
            string file = Server.MapPath("../TemplateFiles/" + filename);
            Response.TransmitFile(file);
        }
        catch (Exception e)
        {
            OtherHelper files = new OtherHelper();
            files.WriteToTxt("Exception", e.ToString());
        }
    }
}

这样执行前台, 并没有打开Excel。
但是如果,把 .net中的代码 单独放在asp.net的前台界面中执行,却是可以的,所以,想请教下,是不是后台调用出错了。
我调试时,用Try也捕捉不到错误!



作者: factory    时间: 2013-11-25 15:12:43

你后台断点下,代码是否被执行了
作者: netui    时间: 2013-11-25 15:24:19

factory 发表于 2013-11-25 15:12
你后台断点下,代码是否被执行了

执行过了的。
public void downloadFile(String filename, String filename2)
    {
        try
        {
            Response.ContentType = "application/x-zip-compressed";
            Response.HeaderEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename2, System.Text.Encoding.UTF8));//FireFox的文件名显示有问题
            string file = Server.MapPath("../TemplateFiles/" + filename);
            Response.TransmitFile(file);
//我在这里有打印出来东西的。
OtherHelper files = new OtherHelper();
            files.WriteToTxt("test", file+"测试执行情况!");
        }
        catch (Exception e)
        {
            OtherHelper files = new OtherHelper();
            files.WriteToTxt("Exception", e.ToString());
        }
    }
作者: factory    时间: 2013-11-25 16:07:16

netui 发表于 2013-11-25 15:24
执行过了的。
public void downloadFile(String filename, String filename2)
    {

我看错了,我以为你是读取excel
下载的话,因为ajax其实是不能打开一个新页面的,所以无法下载

你在success里面用window.location = 地址.....好了
作者: netui    时间: 2013-11-25 16:24:23

factory 发表于 2013-11-25 16:07
我看错了,我以为你是读取excel
下载的话,因为ajax其实是不能打开一个新页面的,所以无法下载

可是我是打开Server上面的Excel文件,然后,会在客户端的 下载显示出来的效果,  不是打开一个画面哦
作者: factory    时间: 2013-11-25 16:26:50

netui 发表于 2013-11-25 16:24
可是我是打开Server上面的Excel文件,然后,会在客户端的 下载显示出来的效果,  不是打开一个画面哦 ...

你是要下载这个excel吗?下载就指向这个文件的地址就行了
作者: netui    时间: 2013-11-25 16:40:12

factory 发表于 2013-11-25 16:26
你是要下载这个excel吗?下载就指向这个文件的地址就行了

可以了,谢谢Factory版主!

被 这个问题弄复杂了。


作者: factory    时间: 2013-11-25 16:43:12

netui 发表于 2013-11-25 16:40
可以了,谢谢Factory版主!

被 这个问题弄复杂了。

我一开始以为你是读取excel....下载的话就是url指向这个excel文件就OK了
作者: netui    时间: 2013-11-25 16:46:30

factory 发表于 2013-11-25 16:43
我一开始以为你是读取excel....下载的话就是url指向这个excel文件就OK了

嗯,谢谢!

非常简单,实用!






欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2