在Python中将.txt文件转换为.xls
我有一个文件,实际上是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()
3 个回答
0
你可以试试这个链接 http://packages.python.org/openpyxl/,它是用来处理新版本的Excel文件的。如果你需要处理旧版的Excel文件,可以看看这个 帮助页面,里面介绍了如何使用pyExcelerator。
0
你的代码其实就是把 Report.txt 文件复制到了 Report.xls 文件里。
当你打开 Report.xls 时,Excel 把它当成了一个 csv 文件,但它没有把逗号当成分隔符。
你需要使用某种库来写出正确的 Excel 文件。可以看看 Word 的 COM 接口作为参考。
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 包。