生成Excel文件错误 [英] generating Excel file error

查看:351
本文介绍了生成Excel文件错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在传统的ASP中使用以下代码生成Excel文件,代码很简单,它的工作原理。我在Windows Vista x86上运行IIS 7.0下的代码。两个问题,

I am using the following code in classic ASP to generate Excel file, the code is simple and it works. I run the code under IIS 7.0 on Windows Vista x86. Two issues,


  1. 有一个奇怪的警告框,这里是屏幕快照

http://i27.tinypic.com/2n81udw.jpg


  1. 所有单元格的背景都是白色的,没有显示每个单元格的边框,这里是屏幕快照,

http ://i25.tinypic.com/vy5t2d.jpg

我的代码

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<%

function writeXlsHttpHeaders(filename){
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "utf-8";
    Response.AddHeader("Content-Disposition", 
            "attachment; filename="+filename+".xls");
}

function getXlsStart(){
    return ""
    + "<html>\n"
    + "<head>\n"
    + "<meta http-equiv=\"Content-Type\" "
    + "content=\"text/html; charset=UTF-8\">\n"
    + "<style type=\"text/css\">\n"
    + "html, body, table {\n"
    + "    margin: 0;\n"
    + "    padding: 0;\n"
    + "    font-size: 11pt;\n"
    + "}\n"
    + "table, th, td { \n"
    + "    border: 0.1pt solid #D0D7E5;\n"
    + "    border-collapse: collapse;\n"
    + "    border-spacing: 0;\n"
    + "}\n"
    + "</style>\n"
    + "</head>\n"
    + "<body>\n"
    + "<table>\n"
    + "";
}

function getXlsEnd(){
    return ""
    + "</table>\n"
    + "</body>\n"
    + "</html>"
    + "";
}

function xlsEscape(val){
    if (typeof val === "number") {
        return val.toString(10).replace(".", ",");
    } else if (typeof val === "string") {
        return Server.HTMLEncode(val);
    } else if (val === null)  {
        return "#NULL#";
    } else if (val === undefined)  {
        return "#UNDEFINED#";
    } else {
        return "#ERROR#";
    }
}

function writeXls(filename, data, columnCount){
    writeXlsHttpHeaders(filename);
    Response.Write(getXlsStart());
    var columnCount = 2;
    for (var i=0, il=10; i<il; i+=columnCount) {
        Response.Write("<tr>");
        for (var j=0; j<columnCount; j++) {
            Response.Write("<td>");
            Response.Write(xlsEscape("Data"));
            Response.Write("</td>");
        }
        Response.Write("</tr>\n");
        // prevent Response Buffering Limit Exceeded
        if (i % 1000 === 0) {
            Response.Flush();
        }
    }
    Response.Write(getXlsEnd());
}

function main(){
    var filetype = Request.QueryString("filetype")();
    var filename = "filename";

    Response.Clear();
    writeXls(filename);
    Response.End();
}

main();

%>

任何解决方案?

提前感谢,
George

thanks in advance, George

推荐答案

A。有一个奇怪的警告框...

A. There is a weird warning box...

您正在使用xls设置的文件扩展名提供HTML。这是在过去一年左右引入的安全违规。将扩展名更改为htm可以避免安全提示?

You are serving up HTML with the file extension set at xls. This is a security violation introduced in the last year or so. Does changing the extension to htm avoid the security prompt?

B。因为您的HTML表只包含两列和五行。没有其他的单元格,所以没有边框。为了避免这种情况,我很确定您需要提供CVS,Workbook XML或other。 (在我看来,我喜欢没有边界,但大多数人不会。)

B. Because your HTML Table only contains two columns and five rows. There are no other "cells", so there are no borders. In order to avoid this, I am pretty sure you need to serve up CVS, Workbook XML, or "other". (In my opinion, I like that there are no borders, but most people do not.)

C。 ... IIS下的代码7.0在Windows Vista x86 ...

C. ...code under IIS 7.0 on Windows Vista x86...

这是一个Excel和安全问题,与IIS或Windows无关。

This is an Excel and security issue, and not related to IIS or Windows.

D。对不起,我没有具体的答案,因为我在过去几年一直使用Syncfusion 3.0。它提供了正确的Excel格式的工作簿,没有任何问题。

D. Sorry, I don't have a specific answer for you because I been using Syncfusion 3.0 the last few years. It serves up the correct Excel formatted workbooks and there is no issues.

这篇关于生成Excel文件错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆