Экспортируйте CSV, чтобы открыть как utf-8 в Excel на MAC, используя Python 2.7 - PullRequest
1 голос
/ 19 июня 2019

У нас есть пользователи, которым необходимо иметь возможность экспортировать данные в CSV, который они открывают в Excel на компьютерах Mac, которые поддерживают символы utf-8.

ПРИМЕЧАНИЕ. Мы не хотим, чтобы наши пользователи переходили на вкладку данных, нажимали импорт из текста, а затем ... Мы хотим, чтобы они могли открыть файл сразу после загрузки и отобразить правильную информацию. .

Сначала я думал, что это просто проблема кодирования / декодирования, так как мы используем Python 2.7 (активно работаем над обновлением до Python 3.6), но после того, как это было исправлено, я обнаружил, что Excel был причиной проблемы (так как CSV отлично работает при открытии в текстовом редакторе или даже чисел). Решение, которое я пробую, заключается в добавлении спецификации utf-8 в начало файла, когда я где-то читал, что это позволит Excel знать, что для него требуется utf-8.

#Here response is just a variable that is valid when used like this and 
#we can export CSV's fine that don't need utf-8    
writer = csv.writer(response)
writer.writerow("0xEF0xBB0xBF")

Я надеялся, что простое добавление в начало файла csv спецификации utf-8 позволит Excel понять, что при открытии этого файла необходимо использовать кодировку utf-8, но, увы, она не работает. Я не уверен, что это связано с тем, что Excel для MAC не поддерживает это или я просто неправильно добавил спецификацию.

Редактировать: я не уверен, почему я не упомянул об этом, так как это было важно в решении, но мы используем Django. Я нашел этот пост переполнения стека, который дал решение (которое я включил ниже).

1 Ответ

0 голосов
/ 19 июня 2019

Поскольку мы используем Django, мы смогли просто включить:

response.write('\xEF\xBB\xBF')

перед созданием csv-модуля и добавлением содержимого в csv.

Другая идея, которая, вероятно, привела бы к решению, заключается в том, чтобы нормально открыть файл, добавить BOM, а затем создать модуль записи csv (Примечание. Я не проверял эту идею, но если приведенное выше решение не работает для кого-то / они не используют Django, это идея попробовать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...