У меня есть угловое приложение, где пользователь может экспортировать таблицу в CSV.Хотя он отлично работает на рабочем столе, при попытке открыть его на мобильном устройстве я получаю следующую ошибку: «Невозможно открыть электронную таблицу документа, похоже, поврежден».Я использовал этот сайт https://csvlint.io для проверки CSV и получил это предупреждение:
"Проблема контекста: неправильное кодирование Ваш CSV, похоже, закодирован в ASCII-8BIT. Мы рекомендуем использовать UTF-8. "
После небольшого поиска решения я обнаружил множество проблем, связанных с ним, но в моем коде уже есть решение (BOM), поэтому я не знаю, чего еще не хватает.Это мой код (это угловое приложение)
protected exportCSV(items: any, fileName: string): void {
const isItemsExists = Array.isArray(items) && items.length > 0;
if (!isItemsExists) {
this.alertService.showTranslatedMessage('dataExporterService.errors.noItemToExport', '', MessageSeverity.error);
return;
}
const replacer = (key, value) => value === null ? '' : value; // specify how you want to handle null values here
const header = Object.keys(items[0]);
const csv = items.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','));
csv.unshift(header.join(','));
const csvArray = csv.join('\r\n');
const BOM = '\uFEFF'; // Use this and utf8 to support hebrew
const blob = new Blob([BOM + csvArray], {
type: 'data:text/csv;charset=utf-8'
});
this.fileSaver.save(blob, fileName);
}