首页 > 解决方案 > Python Openpyxl - 在 write_only 电子表格中添加列

问题描述

我正在使用 Python 和 openpyxl 库,但是当我的电子表格处于模式时,我无法insert_cols()在 openpyxl 中使用该函数。write_only=True所以,基本上,我只想在电子表格处于write_only=True模式时向它添加一个新列。

insert_cols()通过 加载工作簿时我可以使用load_workbook(),但是当我使用该write_only模式时不能使用。我必须使用该write_only模式,因为我的电子表格非常大。

任何关于如何添加新列的想法都值得赞赏。

谢谢你。

这是我的代码:

import openpyxl
from openpyxl import Workbook
from openpyxl import load_workbook

wb = load_workbook(filename=r'path\myExcel.xlsx', read_only=True)
ws = wb['PC Details']

wb_output = Workbook(write_only=True)
ws_output = wb_output.create_sheet(title='PC Details')


for row in ws.rows:
    rowInCorrectFormat = [cell.value for cell in row]
    ws_output.append(rowInCorrectFormat)
    for cell in row:
        print(cell.value)

### THIS IS THE PART OF THE CODE WHICH DOES NOT WORK
ws_output.insert_cols(12)
ws_output['L5'] = 'OK or NOT GOOD?'
###

wb_output.save(r'path\test_Output_optimized.xlsx')

这是我得到的确切错误:

ws_output.insert_cols(12)
AttributeError: 'WriteOnlyWorksheet' object has no attribute 'insert_cols'

标签: pythonopenpyxl

解决方案


这里的问题在于标志write_only = True。将此标志设置为 true 创建的工作簿与常规工作簿不同,如下所示。

在此处输入图像描述

insert_cols 和 insert_rows 等函数也不适用于此类工作簿。

可能的解决方案可能是不使用此标志或使用官方文档中建议的方式将数据添加到工作表。

对于使用工作簿,您可能还会发现这篇文章很有趣。https://medium.com/aubergine-solutions/working-with-excel-sheets-in-python-using-openpyxl-4f9fd32de87f

您可以在官方文档中阅读更多内容。https://openpyxl.readthedocs.io/en/stable/optimized.html


推荐阅读