Faceless person 2023-10-29 18:32 采纳率: 33.3%
浏览 79

python中数据写入问题,用到pandas库

for循环用到如下代码进行写入excel操作,为什么报错IndexError: At least one sheet must be visible;但是我在另一台电脑上运行代码就不会报错,为什么,怎么解决

    # 创建一个新的 ExcelWriter 对象,并设置参数
    with pd.ExcelWriter(data_file, engine='openpyxl') as writer:
        writer.book = openpyxl.load_workbook(data_file)
        writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
        # 写入 "Sheet1",不包括索引和列名
        save_data.to_excel(writer, sheet_name='Sheet1', index=False)
        # 保存更改
        writer.save()

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-30 04:54
    关注

    【以下回答由 GPT 生成】

    问题原因: 在使用pandas库中的ExcelWriter进行数据写入时,当打开的Excel文件中所有的工作表都被隐藏时,会出现"IndexError: At least one sheet must be visible"错误。

    解决方案: 1. 确认你的Excel文件中的工作表是否都是可见的。如果有任何一个工作表被隐藏,可以解决这个问题的方法之一是将它们全部显示出来。 2. 如果你不想将所有的工作表都显示出来,可以采取以下方法来应对: - 在使用ExcelWriter之前,先将所有的工作表都复制到一个新的Excel文件中,确保它们可见。 ```python import openpyxl from openpyxl import load_workbook

     data_file = "data.xlsx"
     save_data = pd.DataFrame(...)  # 假设save_data是一个pandas DataFrame
    
     # 创建一个新的Excel文件,并将原始数据复制到新文件中
     new_data_file = "new_data.xlsx"
     wb = load_workbook(data_file)
     writer = pd.ExcelWriter(new_data_file, engine='openpyxl')
     writer.book = wb
     writer.save()
    
     # 重新打开新文件,并向其中写入数据
     with pd.ExcelWriter(new_data_file, engine='openpyxl') as writer:
         writer.book = openpyxl.load_workbook(new_data_file)
         writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
         save_data.to_excel(writer, sheet_name='Sheet1', index=False)
         writer.save()
     ```
    
    • 使用openpyxl库直接打开Excel文件,并将所有的工作表设置为可见,然后再使用pandas对数据进行写入。 ```python import openpyxl

      data_file = "data.xlsx" save_data = pd.DataFrame(...) # 假设save_data是一个pandas DataFrame

      # 打开Excel文件,并设置所有的工作表为可见 wb = openpyxl.load_workbook(data_file) for ws in wb.worksheets: ws.sheet_state = "visible" wb.save(data_file)

      # 使用pandas对数据进行写入 with pd.ExcelWriter(data_file, engine='openpyxl') as writer: writer.book = openpyxl.load_workbook(data_file) writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets) save_data.to_excel(writer, sheet_name='Sheet1', index=False) writer.save() ``` 请注意,以上的解决方案中的代码块是给出的伪代码,需要根据实际情况进行相应的修改。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月29日