【发布时间】:2017-09-11 12:00:44
【问题描述】:
我有一个带有 1 张表 (Sheet1) 的 excel (.xls),我想使用 python 3 将其转换为 csv。我找到了这段代码:
import xlrd
import csv
def csv_from_excel():
wb = xlrd.open_workbook('safir/fisier-safir.xls')
sh = wb.sheet_by_name('Sheet1')
your_csv_file = open('safir.csv', 'w')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for rownum in range(sh.nrows):
wr.writerow(sh.row_values(rownum))
your_csv_file.close()
csv_from_excel()
但问题是这种方法不会保留某些数字的 Excel 格式,如果我进行转换,1 将变为 1.00、001 -> 1.0、0,9 ->1,以及所有这些格式问题excel -> csv 手动我不会发现这个问题,我也遇到了与其他脚本类似的问题,有人有合适的吗?谢谢!
【问题讨论】:
-
你试过
cell(x,y)吗?必须有办法获取实际文本。 -
pandas.read_excel(filename, dtype='str, convert_float=False)的数字格式是否正确? Excel 将所有数字存储为浮点数,因此四舍五入等可能会改变/表现怪异 -
注意,在 Python 3.x 中,如果您使用
csv.writer(),您应该使用newline=''打开文件。不过,这不会解决您的问题。
标签: python excel python-3.x csv