Я использовал Python для генерации файла CSV. Но когда я открываю его в Excel, Excel будет автоматический распознавать строку в число, если это могло бы быть преобразовано.
например.33E105
становится 33*10^105
, который является на самом деле идентификатором, не числом.
Как отключить это в Excel при открытии файла CSV? Или я должен обратиться к библиотеке Python Excel, чтобы произвести файл Excel и указать формат сам?
Я также нашел подобный вопрос без хороших ответов в сети.
Спасибо!
Для записи настоящих .xls
файлов на Python, а не .csv
, которые Excel может неправильно интерпретировать, вы можете использовать xlwt сторонний пакет Python.
Вы можете поставить перед ним одинарную кавычку, чтобы преобразовать в текст.
Забавный ответ: вы можете оставить первые восемь строк пустыми (он обрабатывает только первые восемь строк для определения типа данных), хотя я думаю, что это может полностью очистить все ваши данные. Вы можете скрыть эти пустые строки.
Если вы не хотите менять способ записи CSV-файла, вы можете использовать мастер импорта текста в Excel, чтобы указать, как вы хотите обрабатывать отдельные столбцы. В мастере есть один шаг, позволяющий выбрать тип данных в каждом столбце. Установите для столбцов, которые вы хотите, текст, и он будет рассматривать его как строку.
Думаю, вы можете поставить один '
перед ним, чтобы числовые строки не превращались в инты
Например
...,"'33E105",...
OpenXML - более гибкий (и сложный) вариант, но работает только с Office2003 или новее и является излишеством для этой проблемы. Больше подходит для случаев, когда вам нужно выделить ячейки/много листов и т.д.
У вас есть 3 варианта:
Вывести файл XML в специальном формате, который может прочитать Excel. Подробностей не припомню, но если интересно, могу их откопать. Мы сделали это с помощью нашего кода Perl. Я не знаю, делает ли excel-python именно это.
Поместите '
(апостроф) перед каждой строкой.
Используйте библиотеку, которая выводит собственный файл Excel с правильным форматированием. Понятия не имею, существует ли такое для Python, но это своего рода излишний вариант первого варианта в любом случае.