如何编写一个Python代码来结合多个CSV到Excel中,而没有数字阅读为文本..在Excel中?

我正在使用这个csv阅读器来读取我所有的csv文件,然后结合到xls工作簿。 但是打开excel之后,所有来自csv的数字现在都被当作文本读取。

在每个csv中都有字母和数字。 有没有办法,我可以从csv压缩所有数值,让Excel知道它是数字而不是文本?

import glob, csv, xlwt, os wb = xlwt.Workbook() for filename in glob.glob("d:/test/*.csv"): (f_path, f_name) = os.path.split(filename) (f_short_name, f_extension) = os.path.splitext(f_name) ws = wb.add_sheet(f_short_name) spamReader = csv.reader(open(filename, "rt")) for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): ws.write(rowx, colx, value) wb.save("d:/test/compiled.xls") 

我会使用pandas库,这也将连接你的整个Python数据科学堆栈。 pandas将足够聪明,正确解释Excel的数据types。

 import glob, os import pandas as pd from pandas import DataFrame, ExcelWriter writer = ExcelWriter("d:/test/compiled.xlsx") for filename in glob.glob("d:/test/*.csv") df_csv = pd.read_csv(filename) (_, f_name) = os.path.split(filename) (f_short_name, _) = os.path.splitext(f_name) df_csv.to_excel(writer, f_shortname, index=False) writer.save() 

您打开一个电子表格进行写入,将每个CSV读取为一个pandas DataFrame ,然后将DataFrame写入到单独的选项卡上。 index=False片断,Python不会将默认的DataFrame索引写入表单,这会给您一个额外的不需要的列。

最简单的方法:

  for rowx, row in enumerate(spamReader): for colx, value in enumerate(row): try: value = float(value) except ValueError: pass ws.write(rowx, colx, value)