Преобразование файла .txt в .xls в Python - PullRequest
1 голос
/ 10 ноября 2011

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

Спасибо!

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()

Ответы [ 3 ]

6 голосов
/ 10 ноября 2011

Просто переименование его в .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 голосов
/ 10 ноября 2011

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

0 голосов
/ 10 ноября 2011

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

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

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

...