【问题标题】:Python - Using csv and xlrd module to write multi-row excel file to one row csv filePython - 使用 csv 和 xlrd 模块将多行 excel 文件写入一行 csv 文件
【发布时间】:2015-03-06 16:08:38
【问题描述】:

我有一个基本脚本,它将获取源 excel (.xlsx) 文件并将数据写入 python 中匹配的 csv 文件。我的最终目标是将所有数据放在一张表中,并将其写成一个长的逗号分隔行,根据我目前的情况,我不确定如何完成。

def csv_from_excel():
    import csv
    import xlrd
    wb1 = raw_input('What is the path and file name of your Workbook? ')
    sh = raw_input('What is the name of the sheet being transformed? ')
    csv_file1 = raw_input('What is the file path and name of the output? ')
    print wb1
    print sh
    print csv_file1
    wb = xlrd.open_workbook(wb1)
    sh1 = wb.sheet_by_name(sh)
    csv_file = open(csv_file1, 'wb')
    wr = csv.writer(csv_file, quoting=csv.QUOTE_MINIMAL)

    for rownum in xrange(sh1.nrows):
        wr.writerow(sh1.row_values(rownum))

    csv_file.close()
    print "Completed converting %s and %s to csv" % (wb1, sh)

csv_from_excel()

【问题讨论】:

  • 你应该解释你的代码输出有什么问题。它没有按照您的预期做吗?
  • 你为什么要这样做......
  • @JoranBeasley 我们正在尝试将大量数据聚合成 csv 格式以使用 Hadoop 的源。
  • @TYY 该脚本适用于转换为 csv,但它保留了源 excel 文件具有的多行格式。需要明确的是,脚本的当前格式正在按我的预期工作。我首先想完成将 xlsx 转换为 csv,然后再解决更难的部分,使输出变平。
  • hadoop 出于某种原因需要将所有内容集中在一行中?我猜这很奇怪......我对hadoop不太熟悉

标签: python excel csv xlrd


【解决方案1】:

如果我理解正确,您希望采用多行 XLS 并将其输出为单行 CSV。如果是这样,这会导致您输出多个 CSV 行:

for rownum in xrange(sh1.nrows):
    wr.writerow(sh1.row_values(rownum))

该代码会逐步遍历 XLS 中的每一行,并在 CSV 中创建相应的行。由于您只需要一个 CSV 行,因此您可能应该将 XLS 行累积到一个集合中,然后在一个步骤中将其全部写出:

output = list()
for rownum in xrange(sh1.nrows):
    output.extend(sh1.row_values(rownum))
wr.writerow(output)

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多