.net 生成Excel文件时出错
我正在使用下面的代码在经典ASP中生成Excel文件,代码很简单,可以正常工作。我在WindowsVista x86上的IIS7.0下运行代码。两个问题,.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
<%@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.”。