[英]how to write into excel file without dataframe using xlsxwriter
If my dataframe is empty then I simply need to create empty excel file and write in it "There is no data for selected timeframe "
如果我的 dataframe 是空的,那么我只需要创建空的 excel 文件并在其中写入"There is no data for selected timeframe "
folder_list = ['San Diego', 'Vista']
if not df.empty:
# if daraframe is not empty then do this:
for location, d in df.groupby('OfficeLocation'):
for folder in folder_list:
if folder == location:
writer=pd.ExcelWriter(f'\\\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\{folder}\{location}.xlsx',engine='xlsxwriter')
else:
print('df is empty')
writer.save()
# if dataframe is empty I need to create empty excel file and wirte in cell A1 "There is no data for seleted timeframe"
else:
for folder in folder_list:
# this creates empty file with sheet name 'Sheet1'
writer=pd.ExcelWriter(f'\\\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\{folder}\{folder}.xlsx',engine='xlsxwriter')
wb = writer.book
ws = writer.sheets['Sheet1'] # this gives me an error
writer.save()
Error:错误:
Traceback (most recent call last):
File "\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\tempCodeRunnerFile.py", line 41, in <module>
ws = writer.sheets['Sheet1'] # this gives me an error
KeyError: 'Sheet1'
You should be adding a new sheet instead:您应该改为添加新工作表:
for folder in folder_list:
# this creates empty file with sheet name 'Sheet1'
writer=pd.ExcelWriter(f'\\\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\{folder}\{folder}.xlsx', engine='xlsxwriter')
wb = writer.book
ws = wb.add_worksheet() # change to this
writer.save()
See relevant documentation here: https://xlsxwriter.readthedocs.io/workbook.html#add_worksheet在此处查看相关文档: https://xlsxwriter.readthedocs.io/workbook.html#add_worksheet
If you were to user the default openpyxl
engine, then the respective method is:如果您要使用默认的openpyxl
引擎,那么相应的方法是:
ws = wb.create_sheet()
Why you don't simply create it in the same loop like this.为什么你不像这样简单地在同一个循环中创建它。
folder_list = ['San Diego', 'Vista']
# if daraframe is not empty then do this:
for location, d in df.groupby('OfficeLocation'):
for folder in folder_list:
if folder == location:
if not df.empty:
writer=pd.ExcelWriter(f'\\\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\{folder}\{location}.xlsx',engine='xlsxwriter')
else:
writer=pd.ExcelWriter(f'\\\\my\username\Documents\Python\Split DataFrame by Multiple dataframes\{folder}\{folder}.xlsx',engine='xlsxwriter')
df_empty = pd.DataFrame({"There is no data for seleted timeframe" : []})
df_empty.to_excel(writer, index=False)
print('df is empty')
writer.save()
But with your method you create a new file each times.但是使用您的方法,您每次都会创建一个新文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.