2009-10-06 123 views
1

我正在尝试将XML数据从网页导出到使用javascript的电子表格。到目前为止,我只是试着很简单:使用Javascript/classic-ASP将XML导出到Excel电子表格

Sub Export 
    Response.ContentType = "application/vnd.ms-excel" 
    <script>    
     var XML = document.getElementById("xmldata");    
     window.open(XML); 
    </script> 
End Sub 

这种尝试打开XML文件为Excel电子表格,但它不打开,因为它具有无效字符。我追踪了这些角色,主要罪魁祸首就是横向破折号“ - ”。可能还有其他无效字符,但如果我手动删除它们,XML文件将打开正常。

我将如何去格式化XML内容以删除或替换无效字符以正确显示为Excel? XML表格是根据数据库中的字段构建的,我应该在构建它时格式化它,还是使用javascript格式化它?我试图找到最简单的解决方案,因为我对网络编程相当陌生。另外,我正在使用经典的ASP/VBscript。

+0

在你的问题代码没有任何意义,是真的你有代码? – AnthonyWJones 2009-10-06 07:10:39

+0

也许我应该澄清这个问题,但是,不管那个代码。 我有一个内置在网页中的XML数据岛。我想获取这个XML数据并将其导出到Excel中,它不包含它包含的任何无效字符。 – marekc 2009-10-06 08:00:29

回答

1

管理人充分利用XML数据,然后使用ActiveX把那到Excel输出HTML表格来解决它。

var x=listingTable.rows 

var xls = new ActiveXObject("Excel.Application") 
xls.visible = true 
xls.Workbooks.Add 

for (i = 0; i < x.length; i++) 
{ 
    var y = x[i].cells 

    for (j = 0; j < y.length; j++) 
    { 
     xls.Cells(i+1, j+1).Value = y[j].innerTex 
    } 
} 
0

您在字符编码中存在不匹配。可能客户端正在采用UTF-8字符编码,但您从服务器发送ANSI编码,例如Windows-1252。

您需要确保客户端知道服务器在你的服务器端代码中使用Response.CharSet = "Windows-1252"将Windows 1252和包括在你的XML开始如下: -

<?xml version="1.0" encoding="Windows-1252" ?> 

如果你是或者使用的Response.Write发送XML内容,你可以使用: -

Response.Codepage = 65001 
Response.CharSet ="UTF-8" 
+0

感谢您的建议。尽管我使用的是XML数据岛,但我不认为我可以像这样设置XML版本和编码(至少,当我尝试时它不适用于我),并且我认为我不能访问从VBScript的数据岛(再次,这可能是也可能不是正确的 - 我真的只是潜入网络编程) – marekc 2009-10-06 13:32:29