Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не сохраняется файл в хроме (https://javascript.ru/forum/misc/64241-ne-sokhranyaetsya-fajjl-v-khrome.html)

АrnowtАА 29.07.2016 11:48

Не сохраняется файл в хроме
 
Код сохранения таблицы html в excel
table = document.getElementById('grid__staticWrapper')
var ctx = {worksheet: "excel" || 'Worksheet', table: table.innerHTML}
window.location.href = ('data:application/vnd.ms-excel,' +  encodeURIComponent(ctx.table));

Были проведены следующие опыты
Так всё работает
ctx.table = ctx.table.substring(0,1000000)

Не работает
ctx.table = ctx.table.substring(0,2000000)

Общая длина 13 млн символов
В консоле ошибок нет. Только в Network пишет status-canseled или data.
В фаерфоксе всё работает.
Господа, есть идеи как решить проблему?

АrnowtАА 29.07.2016 12:47

Rise, Спасибо.
НЕ удобно будет для юзеров

Dilettante_Pro 29.07.2016 18:45

АrnowtАА,
Цитата:

Сообщение от АrnowtАА
Общая длина 13 млн символов

Интересно, кому нужна такая таблица в браузере?

АrnowtАА 02.08.2016 16:12

Решение проблемы.

table = document.getElementById('grid__staticWrapper').innerHTML
var parts = [
        new Blob(['<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>']
        , {type: 'vnd.ms-excel'}),
        table + '</table></body></html>',
        new Uint16Array([33])
      ];

        // Construct a file
        var file = new File(parts, 'integrator.xls', {
            type: "overide/mimetype" // optional - default = ''
        });
        var fr = new FileReader();
            fr.onload = function(){
                $("[data-show = 'excel']").attr("href", URL.createObjectURL(file)).attr("download", file.name).text('Скачать');   
        }
        fr.readAsText(file);
        })


Часовой пояс GMT +3, время: 23:58.