Как экспортировать данные с веб-сайта в CSV-файл, используя Javascript? - PullRequest
0 голосов
/ 29 апреля 2019

Я видел этот код с веб-сайта, и, видимо, он работает на других людей даже для моего друга, но не для меня. Я использую Nodejs и экспресс. Я делаю это неправильно или я пропустил какие-то важные части? После того, как кнопка была нажата, это не выскочило из файлового каталога или чего-либо еще, и нет никакой ошибки, которая также будет видна.

Это коды из скрипта.

<script>
        function downloadCSV(csv, filename) {
            var csvFile;
            var downloadLink;
            //var charset = "UTF-8";

            // CSV File
            csvFile = new Blob([csv], {type: "text/csv"});

            // download link
            downloadLink = document.createElement("a");

            // file name
            downloadLink.download = filename;

            // create link to file
            downloadLink.href = window.URL.createObjectURL(csvFile);

            // hide download link
            downloadLink.style.display = "";

            // add link to DOM
            document.body.appendChild(downloadLink);

            // click download link
            downloadLink.click();
        }

        function exportData(html,filename) {
            var csv = [];
            var rows = document.querySelectorAll("table tr");

            for (var i=0; i<rows.length; i++) {
                var rows = [], cols = rows[i].querySelectorAll("td, th");

                for (var j=0; j<cols.length; j++) {
                    if (j == 7) {
                        row.push("'" + cols[j].innerText + "'");
                    } 
                    else if (j == 2){
                        row.push("'" + cols[j].innerText + "'");
                    } 
                    else {
                        row.push(cols[j].innerText);
                    }
                }

                csv.push(row.join(","));
            }

            // download csv file
            downloadCSV(csv.join("\n"), filename);

        }
    </script>

Это коды от дизайнерской части.

  <button type="button" class="btn btn-primary" id="exportBtn" onclick="exportData(null,'scrapedData.csv')">导出</button>

1 Ответ

0 голосов
/ 29 апреля 2019

Этот минимальный пример работает

        function downloadCSV(csv, filename) {
            var csvFile;
            var downloadLink;

            // CSV File
            csvFile = new Blob([csv], {type: "text/csv"});

            // download link
            downloadLink = document.createElement("a");

            // file name
            downloadLink.download = filename;

            // create link to file
            downloadLink.href = window.URL.createObjectURL(csvFile);

            // hide download link
            downloadLink.style.display = "";

            // add link to DOM
            document.body.appendChild(downloadLink);

            // click download link
            downloadLink.click();
        }

        function exportData(html,filename) {
            var csv = [];           

            csv.push('a');
            csv.push('b');
            csv.push('c');
            csv.push('d');
            csv.push('e');
            
            // download csv file
            downloadCSV(csv.join("\n"), filename);

        }
<button onClick="exportData(null, 'testCSV.csv')">download</button>
...