使用Python拆分xls文件

时间:2016-03-14 20:05:24

标签: python excel split

我有一个很大的.xls文件,我希望根据第一列拆分成几个文件。数据结构有点不确定,使其复杂化很多。

基本上我需要为每个以“问题”开头的行创建一个单独的文件(见下文)。选项的数量是可变的,所以我不能使用块大小。

有什么办法可以用Python做到这一点吗?我在stackoverflow上搜索了很多,但我找不到确切的答案。非常感谢任何帮助。

Column A     Column B    Column C
Question 1
Option 1     Info1       Info2
Option 2     Info3
Option 3
Question 2
Option 1
Option 2
Option 3
Option 4
Question 3
Option 1
Option 2
Option 3

2 个答案:

答案 0 :(得分:1)

要让Python使用.xls个文件,您需要使用xlrdxlwt之类的内容。以下脚本可以帮助您入门:

from itertools import groupby
import xlrd
import xlwt

workbook = xlrd.open_workbook(r"e:\python temp\input.xls")
sheet = workbook.sheet_by_index(0)
rows = [sheet.row_values(row, 0) for row in xrange(sheet.nrows)]

for k, g in groupby(rows, lambda x: x[0].startswith('Question')):
    if k:
        question = next(g)
    else:
        wb = xlwt.Workbook()
        ws = wb.add_sheet('Sheet 1')

        for colx, value in enumerate(question):
            ws.write(0, colx, value)

        for rowx, row in enumerate(g, start=1):
            for colx, value in enumerate(row):
                ws.write(rowx, colx, value)

        wb.save(question[0] + '.xls')

这将打开您的input.xls并读取所有行。然后使用groupby将其拆分为问题和选项。然后基于该问题将每对写入新的输出Excel文件,例如, Question 1.xls

您可能需要添加输入和输出文件的完整路径。

可以在python-excel网站找到这两个图书馆。

答案 1 :(得分:0)

你的问题的确切答案将要求一个人创建整个代码,这不是SO的目标。

我想说,使用Python csv module这似乎并不复杂。请进一步查看并编辑您的问题,并进一步怀疑和/或未能达到预期结果的尝试。