我在经典 ASP 中使用以下代码生成 Excel 文件,代码很简单并且有效。我在 Windows Vista x86 上的 IIS 7.0 下运行代码。两个问题,
- 有一个奇怪的警告框,这是屏幕快照
http://i27.tinypic.com/2n81udw.jpg http://i27.tinypic.com/2n81udw.jpg
- 所有单元格的背景都是白色的,没有显示每个单元格的边框,这是屏幕快照,
http://i25.tinypic.com/vy5t2d.jpg http://i25.tinypic.com/vy5t2d.jpg
My code,
<%@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();
%>
有什么解决办法吗?
提前致谢,
乔治
A.出现了一个奇怪的警告框...
您正在提供文件扩展名为 xls 的 HTML。这是去年左右引入的安全违规行为。将扩展名更改为 htm 是否可以避免安全提示?
B.因为您的 HTML 表仅包含两列和五行。没有其他“细胞”,因此没有边界。为了避免这种情况,我确信您需要提供 CVS、Workbook XML 或“其他”。 (在我看来,我喜欢没有国界,但大多数人不喜欢。)
C....Windows Vista x86 上 IIS 7.0 下的代码...
这是 Excel 和安全问题,与 IIS 或 Windows 无关。
D.抱歉,我没有具体的答案给你,因为我过去几年一直在使用 Syncfusion 3.0。它提供了正确的 Excel 格式的工作簿,并且没有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)