Django上传和读写大型Excel文件

我是新的Django和我的应用程序需要用户上传Excel文件。 在服务器端,我正在读取每个单元格的excel文件,追加一些值,然后翻译这些值,再次写回excel文件并下载附件。 我能够执行此操作的小文件,但对于大文件,它给了我超时错误。 请看下面。

enter code here def translatedoc(request): data="" convrowstr="" if request.method=='POST': response = StreamingHttpResponse (content_type='application/vnd.ms-excel') try: form=fileUpload(request.POST,request.FILES) if form.is_valid(): input_file=request.FILES.get('file') sl=request.POST.get('fsl') if sl=="Detect Language": sl="auto" else: # get sl code from database sl=languagecode.objects.filter(Language=sl).values_list('code') sl=str(sl[0][0]) # get tl code from database tl=languagecode.objects.filter(Language=request.POST.get('ftl')).values_list('code') wb = xlrd.open_workbook(file_contents=input_file.read()) wb_sheet=wb.sheet_by_index(0) for rownum in range(0, wb_sheet.nrows): convstr="" for colnum in range(0,wb_sheet.ncols): try: rw=wb_sheet.cell_value(rownum,colnum) if type(rw)==float or type(rw)==int: convstr=convstr +'<td>' + str(rw) else: convstr=convstr +'<td>' + rw except Exception as e: pass if len(convstr) + len(convrowstr) >20000: # translate if the length of doc exceed the limit #call google api module data=data + translate(convrowstr,sl,str(tl[0][0])) convrowstr="" if rownum==wb_sheet.nrows-1: convrowstr= convrowstr + "<tr>" + convstr # translate for first or last #call google api module data=data + translate(convrowstr,sl,str(tl[0][0])) convrowstr="" convrowstr= convrowstr + "<tr>" + convstr log.error(rownum) if len(data)>1: sio=StringIO.StringIO() try: workbook = xlwt.Workbook() sheet = workbook.add_sheet("output") row=0 for rw in data.split("<tr>")[1:]: col=0 for cl in rw.split("<td>")[1:]: try: sheet.write(row,col,cl.split("<b>")[1].split("</b>")[0]) except Exception as e: pass col+=1 row+=1 workbook.save(sio) sio.seek(0) sv=sio.getvalue() response['Content-Disposition'] = 'attachment; filename=Output.xls' return response except Exception as e: log.error(e) except Exception as e: log.error(e) 

你可以通过芹菜做大file upload。 你可以读芹菜文件。