【问题标题】:Writing to row using openpyxl?使用openpyxl写入行?
【发布时间】:2015-11-25 15:16:37
【问题描述】:

我正在尝试使用 openpyxl 在 Python 中将列表写入一行,但无济于事。

该列表包含例如十个值。我需要打开一个现有的工作表,并将这十个值沿一行写入它们自己的单元格。

与只能创建新工作表的 xlsxwriter 相比,我需要使用 openpyxl,因为它具有覆盖现有工作表的功能。

【问题讨论】:

  • 文档中的示例代码涵盖了这一点:ws.append()。请解释为什么您的代码不同。
  • 因为它只是“在当前工作表的底部追加一组值”。我想指定从哪一行开始。
  • 好吧,你的问题没有这么说。您只能在必要时添加空行。

标签: python excel openpyxl


【解决方案1】:

看看here,向下滚动到标题Writing Values to Cells

TLDR:

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb['Sheet']
>>> sheet['A1'] = 'Hello world!'
>>> sheet['A1'].value
'Hello world!

或者如果你喜欢

sheet.cell(row=2, column=3).value = 'hello world'

更新:根据@charlieclark 评论更改为 wb['Sheet'] 语法,谢谢

更新:将 mylist 写入第 2 行

for col, val in enumerate(mylist, start=1):
    sheet.cell(row=2, column=col).value = val

【讨论】:

  • get_sheet_by_name() 已被弃用。请改用wb['Sheet')
  • 谢谢,但这只会写入单个单元格,不会写入整行单元格。
  • 更新了我的答案。如果有帮助,记得采纳哦。
  • 很烦人,似乎没有一个简单的方法来写一行。通过读取行​​然后将它们分成单独的单元格以将它们写回行来复制电子表格的一部分是错误
【解决方案2】:

我为你做了一个函数。我把它放在我电脑上的“openpyxlutils”文件中。 它允许您输入起始行的字母或数字(但字母不能像 AA 或 BB)。

def write_row(write_sheet, row_num: int, starting_column: str or int, write_values: list):
    if isinstance(starting_column, str):
        starting_column = ord(starting_column.lower()) - 96
    for i, value in enumerate(write_values):
        write_sheet.cell(row_num, starting_column + i, value)

【讨论】:

  • 我最终删除了第 2 行和第 3 行,只使用起始列号而不是支持字母字符。
猜你喜欢
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多