Python:2.7.11
Django:1.9
熊猫:0.17.1
我该如何创建可能很大的xlsx文件下载?我正在从字典列表中创建一个带有pandas的xlsx文件,现在需要让用户可以下载它.该列表位于变量中,不允许在本地保存(在服务器上).
例:
df = pandas.DataFrame(self.csvdict)
writer = pandas.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
Run Code Online (Sandbox Code Playgroud)
这个例子只是创建文件并将其保存在执行脚本所在的位置.我需要的是将其创建为http响应,以便用户获得下载提示.
我发现了一些关于为xlsxwriter执行此操作的帖子,但是没有关于pandas的帖子.我也认为我应该使用'StreamingHttpResponse'而不是'HttpResponse'.
我正在使用 Django,需要读取上传的 xlsx 文件的工作表和单元格。使用 xlrd 应该是可能的,但是因为文件必须保留在内存中并且可能无法保存到某个位置,所以我不确定如何继续。
在这种情况下,起点是一个带有上传输入和提交按钮的网页。提交后,文件被捕获request.FILES['xlsx_file'].file并发送到处理类,该处理类必须提取所有重要数据以进行进一步处理。
的类型request.FILES['xlsx_file'].file是 BytesIO 并且 xlrd 由于没有 getitem 方法而无法读取该类型。
将 BytesIO 转换为 StringIO 后,错误消息似乎保持不变 '_io.StringIO' object has no attribute '__getitem__'
file_enc = chardet.detect(xlsx_file.read(8))['encoding']
xlsx_file.seek(0)
sio = io.StringIO(xlsx_file.read().decode(encoding=file_enc, errors='replace'))
workbook = xlrd.open_workbook(file_contents=sio)
Run Code Online (Sandbox Code Playgroud) 使用 skimage 库,我必须将这些图像居中。我发现SimilarityTransform应该接受偏移量但缺少文档。我将如何检测此类图像的角落,然后确定如何将其居中?数组始终存在于 28x28 图像之外。一些图像中有噪声,就像这里的第二张图像代表四。我不小心抓住了两个非常居中的图像,但它们可以在阵列中的任何地方。在底部,您还可以看到 4 的更多视觉表示。
[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我想按特定顺序(而不是字母顺序)对工作表进行排序。在过去,我使用的是Pandas DataFrame,后跟一个列表。
DataFrame(csv_dict_list)[self.ORDER_LIST]
Run Code Online (Sandbox Code Playgroud)
现在,我必须使用工作簿和工作表方法来创建我的工作表。我发现您可以使用workbook.worksheets()或worksbook.worksheets_objs()来调用所有工作表,但是我不能在其中使用列表。只有兰巴(我认为)这样
workbook.worksheets_objs.sort(key=lambda x: x.name)
Run Code Online (Sandbox Code Playgroud)