Python 如何在不保存数据帧的情况下将其转换为xlsx文件?

Python 如何在不保存数据帧的情况下将其转换为xlsx文件?,python,excel,pandas,dataframe,python-requests,Python,Excel,Pandas,Dataframe,Python Requests,编辑2: 我将Excel文件作为数据框加载,进行一些转换,然后我想将Excel文件保存到某个服务器(而不是本地) 目前,我可以采取变通办法来实现这一点: import pandas as pd import requests df = pd.read_excel("file.xlsx") df = do_some_transformation(df) # Store DataFrame locally df.to_excel("outputfile.xlsx") # re-read loc

编辑2:

我将Excel文件作为数据框加载,进行一些转换,然后我想将Excel文件保存到某个服务器(而不是本地)

目前,我可以采取变通办法来实现这一点:

import pandas as pd
import requests

df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)

# Store DataFrame locally
df.to_excel("outputfile.xlsx")

# re-read locally stored file und upload it
with open("outputfile.xlsx", "rb") as fin:
        requests.put("url/outputfile.xlsx",
                     data=fin.read(),
                     auth=auth,
                     headers={'content-type': 'application/vnd.ms-excel'})
i、 e.我在本地保存转换后的数据帧,然后将本地副本上载到服务器。是否可以直接将df转换为excel文件,而不必在本地存储和重新加载? 如何修改requests.put语句

带着@Aryerez的暗示,我试着

df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)

writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')

requests.put("url/outputfile.xlsx",
                     data=writer,
                     auth=auth,
                     headers={'content-type': 'application/vnd.ms-excel'}),
这会导致
类型错误:“\u XlsxWriter”对象不可编辑

如何将pandas数据框转换为Excel文件并将其传递给请求。放置??

您可以执行以下操作:

writer = pd.ExcelWriter(fileName, engine='xlsxwriter')
df.to_excel(writer, sheetName)
这将在
writer
中创建一个Excel对象,其中包含
df
中的数据。在您执行以下操作之前,它不会保存它:

writer.save()
  • 您只需要返回bytes值,而不是writer本身

  • 您不需要实际的文件来写入,只需使用io.BytesIO()即可,而无需将其保存到磁盘

      output = io.BytesIO()
    
      df = pd.read_excel("file.xlsx")
      df = do_some_transformation(df)
    
      writer = pd.ExcelWriter(output, engine='xlsxwriter')
      df.to_excel(writer, sheet_name='Sheet1')
    
      writer.save()
      xlsx_data = output.getvalue()
    
      requests.put("url/outputfile.xlsx",
               data=xlsx_data,
               auth=auth,
               headers={'content-type': 'application/vnd.ms-excel'}),
    

我刚刚编辑了原始问题,因为您的解决方案对我不起作用。@bk_u.首先,
writer
是excel对象,而不是
df
,后者仍然是
pandas数据框
。其次,按原样发送时会出现错误,因为您编写的函数
write_to_server
接收到带有文件名的
string
参数,
writer
是excel对象,而不是带有文件名的
string
。由于您没有在此处发布函数,我们无法查看它,因此请尝试查看是否可以将其输入修改为excel对象而不是文件名。