Можно ли использовать какие-либо извороты HTML5 для экспорта локального хранилища в Excel? - PullRequest
8 голосов
/ 20 июля 2010

Этот вопрос похож, но не дает никаких возможностей для экспорта данных. Мысли? * * 1005

Ответы [ 2 ]

26 голосов
/ 20 июля 2010

Я думаю, что вы неправильно понимаете ответ на вопрос, на который вы ссылались, он предлагает вам использовать URI данных для экспорта.

Excel является сложной задачей, так как формат файла сам по себе является двоичным ( или OOXML ). Если вы просто хотите, чтобы что-то открывалось в Excel, вы можете экспортировать более простой CSV в качестве URI данных. Следующий код немного груб и готов и был протестирован только в Firefox:

function exportData() {
    var data = '';
    for (var i=1;i<=2;i++) {
        var sep = '';
        for (var j=1;j<=4;j++) {
            data +=  sep + document.getElementById(i + '_' + j).value;
            sep = ',';
        }
        data += '\r\n';
    }
    var exportLink = document.createElement('a');
    exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data));
    exportLink.appendChild(document.createTextNode('test.csv'));
    document.getElementById('results').appendChild(exportLink);
}

Вот разметка страницы:

<input type="number" id="1_1" value="2">,
<input type="number" id="1_2" value="1">,
<input type="number" id="1_3" value="4">,
<input type="number" id="1_4" value="3">
<br>
<input type="number" id="2_1" value="1">,
<input type="number" id="2_2" value="2">,
<input type="number" id="2_3" value="3">,
<input type="number" id="2_4" value="4">
<br>
<button onclick="exportData()">Export as CSV</button>
<div id="results"></div>

Демо здесь . Нажмите на кнопку, чтобы получить ссылку, нажмите на ссылку, и вы получите файл. Измените значения, нажмите на ссылку еще раз, и вы получите другой файл. Firefox заставлял меня выбирать Excel каждый раз, чтобы открыть его, но я не знаю, является ли это моей конфигурацией или общей проблемой.

CSV в Excel 2007 http://www.boogdesign.com/images/external/data-uri-csv.png

Как я уже сказал, тестируется только в Firefox, и он будет работать только в браузерах, которые поддерживают URI данных . Вам также нужна функция window.btoa () или реализация собственного base64 кодера .

2 голосов
/ 20 июля 2010

Я не знаю ни о каких библиотеках Javascript, которые могут сделать файл Excel.Но вы можете просто экспортировать его как HTML или CSV - обратите внимание, что Javascript не может создавать файлы (пока), но рабочий проект HTML учитывает это: http://www.w3.org/TR/file-writer-api/

Excel неплохо умеет читать таблицы, созданные в HTML, так что вы можете просто сделать это и открыть файл HTML в Excel.

Вы можете создать файл для загрузки с помощью Downloadify: https://github.com/dcneiner/Downloadify

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...