• Как из JS сгенерить CSV файл для MS Excel?

    @viboxjuwin
    Здравствуйте! Хорошее решение! Спасибо!

    Только есть мелкие ошибки. Приведу пример чуть исправленного кода:

    //Функция записи HTML-таблицы с последующим скачиванием
    function exportData(){
        //Собираем данные таблицы
        var csv_data = [];
        var table = document.getElementById('smeta_xls');
        var rows = table.getElementsByTagName('tr');
        for (var i = 0; i < rows.length; i++) {
            var cols = rows[i].querySelectorAll('td,th');
            var csvrow = [];
            for (var j = 0; j < cols.length; j++) {
                csvrow.push(cols[j].innerHTML);
            }
            csv_data.push(csvrow.join(";"));
        }
        csv_data = csv_data.join('\n');
        //Делаем перекодировку символов (убираем "иероглифы")
        var uint8 = new Uint8Array(csv_data.length);
        for(var i = 0; i < csv_data.length; i++) {
            var x = csv_data.charCodeAt(i);
            if (x >= 1040 && x <= 1103) { x -= 848; }
            else if (x == 1025) { x = 168; }
            else if (x == 1105) { x = 184; }
            uint8[i] = x;
        }
        //Скачиваем полученный файл
        var file = new Blob([uint8], {type: 'text/csv'});
        var link = document.createElement('a');
        var url = window.URL.createObjectURL(file);
        link.href = url;
        link.download = "Смета_25072022.csv";
        link.style.display = 'none';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }


    Стоит отметить, что на Windows работает хорошо. На Android данный способ не помогает.