Экспорт в CSV с символом #, как содержимое заканчивается экспорт - PullRequest
1 голос
/ 27 марта 2019

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

Я уже добавил цитаты в текстовые поля из-за необходимости экспортировать символы, такие как ,, который работает нормально.

Может ли кто-нибудь дать мне совет, почему встреча # даст такую ​​реакцию и способ ее решения?

удаление # - наименьший вариант, о котором я бы хотел подумать, действительно предпочел бы оставить # Я пытался заменить # на ascii \u0023, что не дает мне удачи

Как я получаю текст

const getDiv = bodyCellLabelClass.querySelectorAll('div');
const innerTxt = getDiv[ 0 ].innerText;
result.push(`"${innerTxt}"`);

образец result будет выглядеть, как если бы я console.log

[""$41.67"", ""9/9/2018"", ""10/9/2018"", ""9/9/2018"", ""#111"", ""3/11/2019""]
[""$41.67"", ""9/9/2018"", ""10/9/2018"", ""9/9/2018"", ""3"", ""3/11/2019""]

но когда я открою CSV, он будет выглядеть как

$41.67, 9/9/2018, 10/9/2018, 9/9/2018, '↵' ничего после

так выглядит экспортный csv

export class ExportUtil {
    // export file, default excel
    public static spreadsheet( rows, full_filename = 'test.xls' ): any {

        let content = `data:application/vnd.ms-excel;charset=utf-8;`;
        rows.forEach(function ( rowArray ) {
            const row = rowArray.join(',');
            content += row + '\r\n';
        });

        console.log(content, 'inside spreadsheet content');

        const encodedUri = encodeURI(content);
        const link = document.createElement('a');
        link.setAttribute('href', encodedUri);
        link.setAttribute('download', `${full_filename}`);
        document.body.appendChild(link); // Required for FF

        link.click(); // This will download the data file named "my_data.csv".
    }
}

Заранее спасибо за любую помощь и предложения.

1 Ответ

1 голос
/ 28 марта 2019

попробуйте использовать Blob

export class ExportUtil {
    // export file, default excel
    public static spreadsheet( rows, full_filename = 'test.xls' ): any {

        let content = '';
        rows.forEach(function ( rowArray ) {
            const row = rowArray.join(',');
            content += row + '\r\n';
        });

        console.log(content, 'inside spreadsheet content');

        const blob = new Blob([ content ], { type: 'application/vnd.ms-excel;charset=utf-8;' });
        const url = URL.createObjectURL(blob);

        const link = document.createElement('a');
        link.setAttribute('href', url);
        link.setAttribute('download', `${full_filename}`);
        document.body.appendChild(link); // Required for FF

        link.click(); // This will download the data file named "my_data.csv".
    }
}
...