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