jQuery MiniUI

 找回密码
 立即注册
查看: 3353|回复: 8
打印 上一主题 下一主题

打开Excel文件 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2013-11-25 15:07:42 |只看该作者 |倒序浏览
本帖最后由 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也捕捉不到错误!


Rank: 8Rank: 8

沙发
发表于 2013-11-25 15:12:43 |只看该作者
你后台断点下,代码是否被执行了

Rank: 3Rank: 3

板凳
发表于 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());
        }
    }

Rank: 8Rank: 8

地板
发表于 2013-11-25 16:07:16 |只看该作者
netui 发表于 2013-11-25 15:24
执行过了的。
public void downloadFile(String filename, String filename2)
    {

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

你在success里面用window.location = 地址.....好了

Rank: 3Rank: 3

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

可是我是打开Server上面的Excel文件,然后,会在客户端的 下载显示出来的效果,  不是打开一个画面哦

Rank: 8Rank: 8

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

你是要下载这个excel吗?下载就指向这个文件的地址就行了

Rank: 3Rank: 3

7#
发表于 2013-11-25 16:40:12 |只看该作者
factory 发表于 2013-11-25 16:26
你是要下载这个excel吗?下载就指向这个文件的地址就行了

可以了,谢谢Factory版主!

被 这个问题弄复杂了。

Rank: 8Rank: 8

8#
发表于 2013-11-25 16:43:12 |只看该作者
netui 发表于 2013-11-25 16:40
可以了,谢谢Factory版主!

被 这个问题弄复杂了。

我一开始以为你是读取excel....下载的话就是url指向这个excel文件就OK了

Rank: 3Rank: 3

9#
发表于 2013-11-25 16:46:30 |只看该作者
factory 发表于 2013-11-25 16:43
我一开始以为你是读取excel....下载的话就是url指向这个excel文件就OK了

嗯,谢谢!

非常简单,实用!

Archiver|普加软件

GMT+8, 2024-9-30 10:29 , Processed in 1.053198 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部