title: Export pandas dataframe to xlsx: dealing with the openpyxl issue on python 3.9
body: <p>Using latest packages version: openpyxl: 3.0.6 | pandas: 1.2.3 |python: 3.9</p>
  <p>The function below was working fine before updating the packages above to the latest version reported.</p>
  <p><strong>Now it raises the error: &quot;zipfile.BadZipFile: File is not a zip file&quot;.</strong></p>
  <p><strong>Such fuction is really useful and would be great to know if it can be fixed in order to works.</strong></p>
  <p>The function below can be run as it is, just replace &quot;pathExport&quot; to your export directory for testing.</p>
  <pre><code>    def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                             truncate_sheet=False, 
                             **to_excel_kwargs):
          &quot;&quot;&quot;
          Append a DataFrame [df] to existing Excel file [filename]
          into [sheet_name] Sheet.
          If [filename] doesn't exist, then this function will create it.
      
          Parameters:
            filename : File path or existing ExcelWriter
                       (Example: '/path/to/file.xlsx')
            df : dataframe to save to workbook
            sheet_name : Name of sheet which will contain DataFrame.
                         (default: 'Sheet1')
            startrow : upper left cell row to dump data frame.
                       Per default (startrow=None) calculate the last row
                       in the existing DF and write to the next row...
            truncate_sheet : truncate (remove and recreate) [sheet_name]
                             before writing DataFrame to Excel file
            to_excel_kwargs : arguments which will be passed to `DataFrame.to_excel()`
                              [can be dictionary]
      
          Returns: None
      
          (c) [MaxU](https://stackoverflow.com/users/5741205/maxu?tab=profile)
          &quot;&quot;&quot;
          from openpyxl import load_workbook
      
          # ignore [engine] parameter if it was passed
          if 'engine' in to_excel_kwargs:
              to_excel_kwargs.pop('engine')
      
          writer = pd.ExcelWriter(filename, engine='openpyxl')
      
          # Python 2.x: define [FileNotFoundError] exception if it doesn't exist 
          try:
              FileNotFoundError
          except NameError:
              FileNotFoundError = IOError
      
      
          try:
              # try to open an existing workbook
              writer.book = load_workbook(filename)
              
              # get the last row in the existing Excel sheet
              # if it was not specified explicitly
              if startrow is None and sheet_name in writer.book.sheetnames:
                  startrow = writer.book[sheet_name].max_row
      
              # truncate sheet
              if truncate_sheet and sheet_name in writer.book.sheetnames:
                  # index of [sheet_name] sheet
                  idx = writer.book.sheetnames.index(sheet_name)
                  # remove [sheet_name]
                  writer.book.remove(writer.book.worksheets[idx])
                  # create an empty sheet [sheet_name] using old index
                  writer.book.create_sheet(sheet_name, idx)
              
              # copy existing sheets
              writer.sheets = {ws.title:ws for ws in writer.book.worksheets}
          except FileNotFoundError:
              # file does not exist yet, we will create it
              pass
      
          if startrow is None:
              startrow = 0
      
          # write out the new sheet
          df.to_excel(writer, sheet_name, startrow=startrow, **to_excel_kwargs)
      
          # save the workbook
          writer.save()
  
  pathExport = r&quot;F:\PYTHON\NB-Suite_python39\MNE\outputData\df.xlsx&quot;
  df1 = pd.DataFrame({'numbers': [1, 2, 3],
                      'colors': ['red', 'white', 'blue'],
                      'colorsTwo': ['yellow', 'white', 'blue']
                      })
  
  append_df_to_excel(pathExport, df1, sheet_name=&quot;DF1&quot;, index=False, startcol=0, startrow=0)
  </code></pre>