Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 生成Excel文件时出错_.net_Excel_Iis_Iis 7_Asp Classic - Fatal编程技术网

.net 生成Excel文件时出错

.net 生成Excel文件时出错,.net,excel,iis,iis-7,asp-classic,.net,Excel,Iis,Iis 7,Asp Classic,我正在使用下面的代码在经典ASP中生成Excel文件,代码很简单,可以正常工作。我在WindowsVista x86上的IIS7.0下运行代码。两个问题, 有一个奇怪的警告框,这是屏幕快照 所有单元格的背景为白色,未显示每个单元格的边框,这是屏幕快照 我的代码 <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <% function writeXlsHttpHeaders(filename){ Response.Content

我正在使用下面的代码在经典ASP中生成Excel文件,代码很简单,可以正常工作。我在WindowsVista x86上的IIS7.0下运行代码。两个问题,

  • 有一个奇怪的警告框,这是屏幕快照
  • 所有单元格的背景为白色,未显示每个单元格的边框,这是屏幕快照
  • 我的代码

    <%@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();
    
    %>
    
    
    
    有什么解决办法吗

    提前感谢,,
    乔治有一个奇怪的警告框

    您正在提供文件扩展名设置为xls的HTML。这是去年左右引入的安全违规行为。将扩展名更改为htm是否会避免安全提示

    B.因为HTML表只包含两列五行。没有其他“细胞”,因此没有边界。为了避免这种情况,我非常确定您需要提供CVS、工作簿XML或“其他”。(在我看来,我喜欢没有国界,但大多数人不喜欢。)

    C.…Windows Vista x86上IIS 7.0下的代码

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


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

    首先,我不是用html托管,而是用asp托管。如何在htm中动态生成代码?对于B,CSV如果可以,但是如果单元格包含逗号符号,它将与delimeter逗号符号冲突,例如,如果在单元格(A,1)中,我想输入“hello,world”,在单元格(B,1)中,我想输入“hello,Excel”,那么将有4个单元格。当您在ASP中托管包含逗号的单元格内容,但通过ASP代码为HTML表提供服务时,有什么解决方法吗。您正在强制Excel以工作簿的形式打开HTML表,这没关系。B)Excel使用稍微不同的CSV,但不要担心这一点。只需“引用”包含逗号的字符串,例如“Anthony,Jr.”。