экспорт csv с символом # в качестве содержимого завершает экспорт

#javascript #csv #unicode #ascii #export-to-csv

#javascript #csv #Юникод #ascii #экспорт в csv

Вопрос:

Я успешно экспортировал свои данные в формате 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   'rn';
        });

        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. Пожалуйста, предоставьте минимальный формат CSV и код, позволяющий воспроизвести вашу проблему

2. @NinoFiliu виноват, добавил

Ответ №1:

попробуйте использовать 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   'rn';
        });

        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".
    }
}