我在经典ASP中使用以下代码生成Excel文件,代码很简单并且有效。我在Windows Vista x86上的IIS 7.0下运行代码。两个问题,
http://i27.tinypic.com/2n81udw.jpg
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();
%>
任何解决方案?
提前谢谢, 乔治答案 0 :(得分:3)
A。有一个奇怪的警告框......
您正在提供HTML,文件扩展名设置为xls。这是在过去一年左右推出的安全违规行为。将扩展名更改为htm是否会避免安全提示?
B。因为您的HTML表格只包含两列和五行。没有其他“细胞”,所以没有边界。为了避免这种情况,我很确定您需要提供CVS,Workbook XML或“其他”。 (在我看来,我喜欢没有边界,但大多数人没有。)
C。 ... Windows Vista x86上IIS 7.0下的代码...
这是一个Excel和安全问题,与IIS或Windows无关。
D。抱歉,我没有给你一个具体的答案,因为过去几年我一直在使用Syncfusion 3.0。它提供了正确的Excel格式的工作簿,没有任何问题。