【问题标题】:Python convert csv files to a ordered excel sheetPython将csv文件转换为有序的excel表
【发布时间】:2017-09-10 13:35:35
【问题描述】:

我的文件夹中有 13 个名为 1、2、3 到 13(1.csv、2.csv、3csv 等)的 csv 文件,我想将它们转换为单个 excel 文件(xlsx)从 1 到 13 以表格形式组织,但按数字顺序排列!为此,我使用了这个:

import glob, csv, xlwt, os
wb = xlwt.Workbook()
for filename in glob.glob("data/*.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, 'r'))
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            ws.write(rowx, colx, value)
wb.save("compiled.xlsx")

我唯一的问题是我的输出:compiled.xlsx 没有我想要的顺序(从 1,2,3,4,5 ...13 开始),它将以 4,13 开始,11,12,5,6,8 等等。我的文件夹中的文件按所需顺序排列,如何更改代码以获得正确的工作表顺序,我使用的是 python 3,感谢您的时间!

【问题讨论】:

  • 枚举glob.glob("data/*.csv")怎么样? for num, filename in enumerate(glob.glob("data/*.csv")):。然后你必须使用wb.add_sheet(num+1)
  • sheetname = sheetname.decode(self.encoding) 我会得到 AttributeError: 'int' object has no attribute 'decode'
  • 转换为字符串wb.add_sheet(str(num+1))
  • 我明白了,现在工作表已按顺序排列,但工作表名称与其实际数据不符,例如我的 excel 工作表 1 是实际的 6.csv 等等,对所有人都一样工作表,我认为 for 循环并没有像您预期的那样从第一个 csv 文件开始。

标签: python excel python-3.x csv xlwt


【解决方案1】:

您可以按文件名将 csv 文件排序到一个列表中,然后改用该列表。

我做了一个假设,所有文件名都可以转换为int类型。

files = [os.path.split(filename) for filename in glob.glob("csvs/*.csv")]
ordered_files = sorted(
    files, key=lambda x: int(os.path.splitext(x[1])[0])
)


wb = xlwt.Workbook()
for f_path, f_name in ordered_files:
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(f_short_name)
    spamReader = csv.reader(open(os.path.join(f_path, f_name), 'r'))
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            ws.write(rowx, colx, value)
wb.save("compiled.xlsx")

【讨论】:

  • file_names 没有任何引用
  • 还有来自 spamReader 的文件名 = csv.reader(open(filename, 'r'))
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 2016-12-12
  • 2014-11-19
  • 2016-11-30
  • 1970-01-01
  • 2021-07-21
  • 2013-06-21
  • 2016-01-15
相关资源
最近更新 更多