【问题标题】:joining two .xls file into a single .xls file with 2 sheets将两个 .xls 文件连接成一个 .xls 文件,包含 2 张纸
【发布时间】:2015-11-20 10:39:44
【问题描述】:

我有两个单独的 csv 文件,我需要将它们转换为 .xls 文件并将这些 .xls 文件合并到一个 .xls 文件中,其中有两个子 .xls 文件作为其两张表(sheet1,sheet2)。

我想成功地从 .csv 文件创建两个 .xls 文件。

for csvfile in glob.glob(os.path.join('.', 'D:\csvjoin\*.csv')):
   wb = xlwt.Workbook()
   ws = wb.add_sheet('data')
   with open(csvfile, 'r') as f:
       reader = csv.reader(f)
       for r, row in enumerate(reader):
           for c, val in enumerate(row):
               ws.write(r, c, val)
   wb.save(csvfile + '.xls')

但未能将这两个 .xls 加入到带有两张纸的单个文件中。 在加入的 .xls 文件中,我想要 SHEET1 = file1.xls 和 SHEET2 = file2.xls

请提出建议。

【问题讨论】:

  • 请正确重新缩进代码。

标签: python csv xls


【解决方案1】:

您可以使用 pandas to_excel 数据帧方法如下:

import pandas as pd
df1 = pd.read_csv('path\\to\\file1.csv')
df2 = pd.read_csv('path\\to\\file2.csv')

writer = pd.ExcelWriter('path\\to\\output\\file.xls')
df1.to_excel(writer,'sheet1')
df2.to_excel(writer,'sheet2')
writer.save()

编辑

或者您可以使用循环来完成(适用于 pandas 0.17.0):

import pandas as pd
writer = pd.ExcelWriter('path\\to\\output\\file.xls')

i = 1
for csvfile in glob.glob(os.path.abspath('D:\csvjoin\*.csv')):
    df = pd.read_csv(csvfile)
    df.to_excel(writer, 'sheet%s' % i)
    i += 1

writer.save()

【讨论】:

  • 什么是 df 和 df1。它们是来自那些单独的 .xls 文件的数据框吗?请纠正我。并且将保存路径“test.xls”,我是否需要提供完整的路径名,如“D:\test.xls”(在此之前我还需要创建一个名为 test.xls 的空表)。跨度>
  • 是的,您可以从 csv 文件中获取它们。我将为此编辑答案
  • 你不需要创建空的test.xls,你的writer会根据你设置的路径创建一个新的。
  • 异常:尝试覆盖单元格:sheetname='sheet1' rowx=0 colx=1 出现错误。我认为以前的代码是一个更好的选择,只需要给出作者保存 .xls 文件的位置。请解释一下。
  • 可能此代码正在将两个 .xls 文件内容合并到单个 .xls 文件中,并且没有 sheet1 sheet2 之类的事情。所以行列覆盖错误。只是猜测。
猜你喜欢
  • 2017-05-02
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
相关资源
最近更新 更多