At least one sheet must be visible

发布时间 2023-11-13 10:06:30作者: 徐俊112

出现 "At least one sheet must be visible" 错误通常是因为你在创建 Excel 文件时,没有指定任何一个 sheet 为可见。这个错误通常发生在使用 openpyxl 引擎时。

要解决这个问题,你可以在创建 ExcelWriter 对象时,将参数 engine 设置为 'xlsxwriter'。这样做可以使用 xlsxwriter 引擎来处理 Excel 文件,而不会出现上述错误。

下面是一个修改后的示例代码:

writer = pd.ExcelWriter('{}~{}溶解氧数据异常设备报警次数.xlsx'.format(starttime, endtime), engine='xlsxwriter')
for imei in imei_list:
    # 其他代码保持不变
writer.save()

通过将引擎设置为 'xlsxwriter',你应该能够成功创建 Excel 文件并写入数据,同时避免 "At least one sheet must be visible" 错误的出现。

也有可能是 代码有问题:

 writer = pd.ExcelWriter('{}~{}溶解氧数据异常设备报警次数.xlsx'.format(starttime, endtime), engine='openpyxl')
        for imei in imei_list:

            url = xxxx
            headers1 = {
                'Content-type': 'application/json',
                'Accept': 'application/json',
                'Token': "{}".format(token),

            }
            data1 = {"createFrom": "{}".format(starttime),
                     "createTo": "{} 23:59:59".format(endtime),
                     "alarmConditionName": xxxxxx,
                     "imei": imei,
                     }

            response = requests.post(headers=headers1, json=data1, url=url)
            rows = response.json().get('data').get('rows')
            a = [ime.get('createTime')[0:10] for ime in rows]
            counter = Counter(a)
            data = {'imei': list(counter.keys()), '次数': list(counter.values())}
            df = pd.DataFrame(data)
            df.to_excel(writer, sheet_name=imei, index=False)
        writer.close()

上述代码一看是没有问题的,发送请求,获取数据,新建表格保存数据

但是有一个问题:

假如:imei_list 为空的话,就代表没有sheet被创建(没有指定任何一个 sheet 为可见),然后writer.close() 保存,

就会报:

At least one sheet must be visible
在前面加一个判断:
    
from openpyxl import Workbook

if len(imei_list) == 0: wb = Workbook() # 保存工作簿 wb.save('{}~{}溶解氧数据异常设备报警次数.xlsx'.format(starttime, endtime))
else:
pass