【问题标题】:Proper convert from excel to csv从excel正确转换为csv
【发布时间】: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


【解决方案1】:

你能试试下面的代码吗?它保持格式不变

import win32com.client
xl=win32com.client.Dispatch("Excel.Application")
xl.DisplayAlerts = False
xl.Workbooks.Open(Filename='C:\\pscript\Copy.xlsx',ReadOnly=1)
wb = xl.Workbooks(1)
print(wb)
wb.SaveAs(Filename='C:\\pscript\out.csv', FileFormat='6') #6 means csv
wb.Close(False)
xl.Application.Quit()
wb=None
xl=None
print("done")

【讨论】:

    猜你喜欢
    • 2014-11-20
    • 2015-05-08
    • 2012-08-12
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 2020-09-05
    • 2016-07-02
    • 2014-11-19
    相关资源
    最近更新 更多