Экспорт XML в электронную таблицу Excel с использованием Javascript / classic-ASP - PullRequest
1 голос
/ 06 октября 2009

Я пытаюсь экспортировать данные XML с веб-страницы в электронную таблицу, используя JavaScript. Пока я только что попробовал очень просто:

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.

Ответы [ 2 ]

1 голос
/ 13 октября 2009

Удалось решить эту проблему, получив вывод таблицы HTML из данных XML, а затем поместив ее в Excel с помощью ActiveX.

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 голосов
/ 06 октября 2009

У вас несоответствие в кодировке символов.Вероятно, клиент принимает кодировку UTF-8, но вы отправляете с сервера кодировку ANSI, например Windows-1252.

Необходимо убедиться, что клиент знает, что сервер отправляет Windows-1252 с использованием Response.CharSet = "Windows-1252" в вашем коде на стороне сервера и включая следующее в начале вашего xml: -

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

В качестве альтернативы, если вы используете Response.Write для отправки содержимого XML, которое вы можете использовать: -

 Response.Codepage = 65001
 Response.CharSet ="UTF-8"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...