Экспортируйте CSV как UTF-8, используя Javascript - PullRequest
3 голосов
/ 22 мая 2019

У меня есть угловое приложение, где пользователь может экспортировать таблицу в 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);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...