使用请求发布通过 openpyxl 修改的 excel 工作簿
Posting an excel workbook modified through openpyxl using request
我有一个 excel sheet 我写在内存上的,我想用 openpyxl 修改。由于一些情况,我不能使用临时文件或任何类似的东西。我也在写原始的 sheet 不使用 openpyxl,而是 xlsxwriter,原因我不想详细说明。然而,原始 sheet 以类似字节的格式保存,所以我想知道我是否可以对修改后的 excel sheet 做同样的事情,然后使用请求上传它。
这是我使用的代码:
def UploadXLS(name, xlsx):
wb = opx.load_workbook(io.BytesIO(xlsx))
wb.security = WorkbookProtection(workbookPassword = 'super-secret-password', lockStructure = True)
wb.save(name)
r = requests.post('my-url-here',
files = wb)
return r.url
这是我收到的(可预测的)错误消息:
a bytes-like object is required, not 'Workbook'
如能提供有关该主题的任何帮助或建议,我们将不胜感激。
这里的问题是您试图将 openpyxl Workbook
对象传递给 post()
请求。但是,post()
不知道如何处理 Workbook
。但它确实 知道如何处理任何通用文件流。所以解决办法是打开文件,把流传给请求:
file = open(name, 'r')
r = requests.post('url', files=file)
我有一个 excel sheet 我写在内存上的,我想用 openpyxl 修改。由于一些情况,我不能使用临时文件或任何类似的东西。我也在写原始的 sheet 不使用 openpyxl,而是 xlsxwriter,原因我不想详细说明。然而,原始 sheet 以类似字节的格式保存,所以我想知道我是否可以对修改后的 excel sheet 做同样的事情,然后使用请求上传它。
这是我使用的代码:
def UploadXLS(name, xlsx):
wb = opx.load_workbook(io.BytesIO(xlsx))
wb.security = WorkbookProtection(workbookPassword = 'super-secret-password', lockStructure = True)
wb.save(name)
r = requests.post('my-url-here',
files = wb)
return r.url
这是我收到的(可预测的)错误消息:
a bytes-like object is required, not 'Workbook'
如能提供有关该主题的任何帮助或建议,我们将不胜感激。
这里的问题是您试图将 openpyxl Workbook
对象传递给 post()
请求。但是,post()
不知道如何处理 Workbook
。但它确实 知道如何处理任何通用文件流。所以解决办法是打开文件,把流传给请求:
file = open(name, 'r')
r = requests.post('url', files=file)