出现 "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