【问题标题】:How to write to the middle of an excel document with pandas如何用熊猫写入excel文档的中间
【发布时间】:2017-05-15 18:13:26
【问题描述】:

我有一个 excel 文档(包含格式和所有内容),前几行是标题和标题。

在第 11 行,我从实际数据开始,包括列标题和所有内容。

我正在计算要放入此表的数据。

我可以使用 header=[11] 读取数据,它会使用正确的列名、索引和所有内容读取数据。我可以填写我的数据,根据需要添加列等。

当我尝试保存文件时出现问题。如果我只是用 to_excel 保存,它会保存,但没有任何标题内容或原始格式。

如何将我的数据框插入现有 Excel 文档中的某个位置?

预计到达时间:

我忘记提及的一件可能很重要的事情是原始 excel 文件在整个数据部分也具有条件格式。我想保持这一点。

ETA2:为 Josh 的评论添加详细信息。

In [153]: xl.to_excel(writer,  "Program Area Summary.xls", startrow=11)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-153-6541427c4a61> in <module>()
----> 1 xl.to_excel(writer,  "Program Area Summary.xls", startrow=11)

/Users/brianp/work/cyan/venv/lib/python2.7/site-packages/pandas/core/frame.pyc in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose)
   1422         formatted_cells = formatter.get_formatted_cells()
   1423         excel_writer.write_cells(formatted_cells, sheet_name,
-> 1424                                  startrow=startrow, startcol=startcol)
   1425         if need_save:
   1426             excel_writer.save()

/Users/brianp/work/cyan/venv/lib/python2.7/site-packages/pandas/io/excel.pyc in write_cells(self, cells, sheet_name, startrow, startcol)
   1243             wks = self.book.create_sheet()
   1244             wks.title = sheet_name
-> 1245             self.sheets[sheet_name] = wks
   1246 
   1247         for cell in cells:

TypeError: list indices must be integers, not str

我是在 ipython 中完成的,所以没有太多其他代码。 xl 是一个数据框。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我知道有两个选项,第一个是我通过搜索 StackOverflow 找到的,你可以找到 here。您可以使用该示例和 to_excel 方法中的 startrow 参数在第 11 行或其他所需位置启动 DataFrame。喜欢

    df.to_excel(writer, startrow=11, startcol=2).
    

    第二个选项是xlwings 库,这是我在 Python 中使用 Excel 时通常使用的库。 Here 是 xlwings 链接到使用 pandas DataFrames 的文档。下面是一个代码 sn-p 来做你正在寻找的。​​p>

    import xlwings as xw
    bk = xw.Book('BookX.xlsx')
    sht = bk.sheets[0]
    sht.range('A11').value = df # df is your pandas Dataframe
    bk.save()
    

    【讨论】:

    • 它会在现有工作表中保持条件格式吗? (一开始忘了提……)
    • 我测试了两个(xlwings + openpyxl),看起来都保留了预先存在的条件格式。
    • 当我执行 openpyxl 时,我得到:TypeError: list indices must be integers, not str
    • 嗯,发布你的代码 sn-p / 堆栈跟踪,我可以看看。
    猜你喜欢
    • 2015-07-18
    • 2021-08-02
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2019-03-23
    • 2021-08-03
    • 2013-10-22
    相关资源
    最近更新 更多