Преобразование файла .txt в .xls в Python

1

У меня есть файл, который действительно в формате csv, но передается мне как.txt. Мне нужно взять этот файл и перенести его в формат.xls, чтобы я мог загрузить его в Документы Google. В настоящее время у меня есть код ниже, но он выплевывает файл со всем на линии в первую ячейку, а не разрывает разные ячейки для каждого значения запятой. Кто-нибудь знает, как это решить?

Благодарю!

import os

fin = open(r"C:\Users\JohnDoe\Downloads\Report.txt", "r")
data_list = fin.readlines()
fin.close() # closes file

fout = open(r"C:\Users\JohnDoe\Desktop\Report.xls", "w")
fout.writelines(data_list)
fout.flush()
fout.close()
  • 1
    Из вашего вопроса непонятно, почему вы конвертируете его в xls поскольку Документы Google, безусловно, могут обрабатывать .csv . Если мое предположение, что вам на самом деле не нужен .xls , неверно, дайте мне знать.
  • 1
    Переименуйте файл в YourOriginalFileName.csv, а затем откройте его в Excel и сохраните как файл xls. Разве это не достигнет того, что вы хотите? Или вы ищете способы автоматизировать его?
Показать ещё 1 комментарий
Теги:
csv
xls
text-files

3 ответа

6
Лучший ответ

Просто переименование его в .xls не конвертирует его в электронную таблицу Excel. Но независимо от того, зачем вы конвертируете его в .xls чтобы загрузить его в Google Docs?

Если это .csv, просто переименуйте файл в .csv и загрузите его, и он будет правильно обнаружен как электронная таблица.

Использовать os.rename:

import os

os.rename("C:\Users\JohnDoe\Downloads\Report.txt", 
          "C:\Users\JohnDoe\Downloads\Report.cvs")

если вам действительно нужно это сделать с Python.

Если вам нужно получить фактические строки из файла вместо строк:

from csv import reader

for row in reader(open(r"C:\Users\JohnDoe\Downloads\Report.txt", 'rb')):
    # do something with row

предоставит вам список ячеек для каждой строки.

Если вам действительно нужно работать с электронной таблицей Excel, см. Http://www.python-excel.org/ и пакет xlwt.

0

Попробуйте http://packages.python.org/openpyxl/ или для старых файлов excel, посмотрите эту страницу справки, используя pyExcelerator.

  • 0
    pyExcelerator исчез. xlwt - это форк pyExcelerator с исправлениями ошибок и улучшениями. Смотрите ответ @agf
0

Ваш код просто копирует Report.txt в Report.xls

При открытии Report.xls Excel распознает его как файл csv, однако он не распознает запятые как разделители.

Вам нужно будет использовать какую-то библиотеку для записи правильных файлов Excel. Посмотрите, например, на интерфейс Word COM.

  • 1
    msgstr "распознавая его как файл csv, однако он не распознает запятые как разделители". не имеет никакого смысла. Либо он знает, что это файл .csv , и в этом случае он знает, что запятые являются разделителями, либо он не знает, что это файл .csv .
  • 0
    Excel может распознать его как значения, разделенные разделителем, но ожидать разделитель табуляции или другой разделитель. По крайней мере, Openoffice запоминает разделитель, который был выбран в прошлый раз, или автоматически определяет разделитель. Я не использую сам Excel, но я предполагаю, что он делает что-то подобное.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню