当前位置: 首页 > 面试题库 >

在Python中使用openpyxl将行插入Excel电子表格

程胤运
2023-03-14
问题内容

我正在寻找使用openpyxl将行插入电子表格的最佳方法。

实际上,我有一个电子表格(Excel
2007),该电子表格具有标题行,其后最多(数千)行数据。我希望将行插入为实际数据的第一行,因此在标题之后。我的理解是,附加功能适合于将内容添加到 结尾
的文件。

阅读有关openpyxl和xlrd(以及xlwt)的文档,除了手动循环浏览内容并将其插入新表(在插入所需行之后)之外,我找不到任何明确的方法。

鉴于我到目前为止在Python方面的有限经验,我试图了解这是否确实是最好的选择(最Python)!如果可以的话,有人可以提供一个明确的示例。具体来说,我可以使用openpyxl读写行还是必须访问单元格?另外,我可以(覆盖)写入相同的文件(名称)吗?


问题答案:

使用我现在用来实现所需结果的代码来回答这个问题。请注意,我是在位置1处手动插入行,但这应该足够容易以适应特定需求。您也可以轻松地对此进行调整,以插入多行,然后只需从相关位置开始填充其余数据即可。

另外,请注意,由于下游依赖性,我们手动从“ Sheet1”中指定数据,并将数据复制到工作表开头插入的新工作表中,同时将原始工作表重命名为“
Sheet1.5” 。

编辑:我还添加了(以后)对format_code的更改,以解决此处默认复制操作删除所有格式的问题:new_cell.style.number_format.format_code = 'mm/dd/yyyy'。我找不到任何可设置的文档,更多的是反复试验的情况!

最后,请不要忘记此示例保存了原始示例。您可以在适当的地方更改保存路径来避免这种情况。

    import openpyxl

    wb = openpyxl.load_workbook(file)
    old_sheet = wb.get_sheet_by_name('Sheet1')
    old_sheet.title = "Sheet1.5"
    max_row = old_sheet.get_highest_row()
    max_col = old_sheet.get_highest_column()
    wb.create_sheet(0, 'Sheet1')

    new_sheet = wb.get_sheet_by_name('Sheet1')

    # Do the header.
    for col_num in range(0, max_col):
        new_sheet.cell(row=0, column=col_num).value = old_sheet.cell(row=0, column=col_num).value

    # The row to be inserted. We're manually populating each cell.
    new_sheet.cell(row=1, column=0).value = 'DUMMY'
    new_sheet.cell(row=1, column=1).value = 'DUMMY'

    # Now do the rest of it. Note the row offset.
    for row_num in range(1, max_row):
        for col_num in range (0, max_col):
            new_sheet.cell(row = (row_num + 1), column = col_num).value = old_sheet.cell(row = row_num, column = col_num).value

    wb.save(file)


 类似资料:
  • 我是新的Python和工作在我的第一个项目。我试图让我的代码从一个电子表格中复制数据列,并将其附加到当前存在于主表中的数据中。我能够捕获每个工作表中的数据,并创建一个新的主列表,该列表结合了两个数据集,但我很难将其写入文件。当我测试打印组合列表时,它们看起来是正确的,但是当我添加代码将列表写入文件时,它会挂起。 你能提供的任何帮助都会非常有用! 下面是我的代码。这是我得到的错误 Traceback

  • 问题内容: 我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt,XlsXcessive,openpyxl)。其他人则建议写入.csv文件(从未使用过CSV,也不真正了解它是什么)。 该程序非常简单。我有两个列表(浮点数)和三个变量(字符串)。我不知道两个列表的长度,它们的长度可能不一样。 粉色列将具有第一个列表的值,绿色列将具有第二个列表的值。 那么最好的方法是

  • 本文向大家介绍Python使用OpenPyXL处理Excel表格,包括了Python使用OpenPyXL处理Excel表格的使用技巧和注意事项,需要的朋友参考一下 官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义有样式需要的对象,引入样式相关: f

  • 问题内容: 我有一个宏,希望使用一堆现有的电子表格。唯一的问题是,有如此多的电子表格,手工完成将非常耗时! 我已经编写了一个Python脚本来使用pyWin32访问所需的文件,但是我似乎无法找到一种使用它来添加宏的方法。 这里有一个类似的问题给出了这个答案(不是Python,但看起来它仍然使用COM),但是我的COM对象似乎没有名为VBProject的成员: 我也忘了提一下,尽管这不是Python

  • 我使用openpyxl导入了一个单元格值。excel单元格位于中,它是一个简单的单词,假设它是,没有引号。 我导入它,然后将其分配给变量: 如果我打印变量,我将得到: 加上引号。 我试图在这样的if语句中使用它: 但什么也没发生。我试过: 而我得到了虚假的回报。 我怎么才能修好它? 导入单元格时,它是包中的一个对象,但我使用将其转换为字符串。单元格最初(在电子表格上)周围没有引号,但在导入后,它有

  • 我是Python新手。我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt、XlsXcessive、openpyxl)。其他人建议写信给一家公司。csv文件(从未使用过csv,也不了解它是什么)。 程序非常简单。我有两个列表(float)和三个变量(string)。我不知道这两个列表的长度,它们可能不会是相同的长度。 我希望布局如下图: 粉红色列将具有第一个列表的