在Python中将.txt文件转换为.xls

1 投票
3 回答
6813 浏览
提问于 2025-04-17 06:00

我有一个文件,实际上是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 包

撰写回答