Tag: django

将自生成的Excel文件保存为UploadedFile

我有一个包含CSV数据的大string。 我想将其转换为Excel文件(.xslx)并将其保存为UploadedFile / SimpleUploadedFile 。 我尽可能地用Googlesearch,并提出以下build议。 result_data显然是巨大的string。 from io import StringIO import pandas from django.core.files.uploadedfile import SimpleUploadedFile ### irrelevant code result_data = StringIO(result_data) df = pandas.DataFrame.from_csv(result_data, sep=';') writer = pandas.ExcelWriter('file.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1') result_file = writer.book result_data.seek(0) mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' object.xls_file = SimpleUploadedFile('filename.xlsx', result_data.read(), content_type=mimetype) object.save() 我已经尝试了诸如result_data , result_file , result_file.read() result_data.read()类的result_data.read()无数replace,但到目前为止,他们都没有工作。 编辑:我修改我的代码根据jmcnamara的build议,但从writer.save()得到一个错误。 output = […]

如何使用Django作为HttpResponse从磁盘返回Excel

我正在使用Django在我的网页上编写一个button来支持下载button,我已经生成了Excel(.xls)文件,并保存在服务器上。 我不需要使用csv编写器来dynamic地写行和列,然后返回响应,但是,我只是想将我的磁盘上的excel文件传入响应,然后返回响应,我的function在视图.py是这样的: def price_list_download(request): today = date.today() filename = 'test_price_list-%s.xls' % today.strftime("%Y-%m-%d") response = HttpResponse(file("PATH_TO_EXCEL.xls")) response['Content-Type'] ='application/vnd.ms-excel' response['Content-Disposition'] = 'attachment; filename="' + filename + '"' return response 但是,当我试图打开下载的文件时,它能够下载,它会popup一个标题:您要打开的文件“NAME_OF_FILE.xls”采用与文件扩展名指定的格式不同的格式。 你想打开它吗?… 我再次检查.xls文件应该使用application / vnd.ms-excel这个内容types,所以我很困惑,哪里出错了。 当我点击是,并试图打开这个下载的文件,它只包含一个随机string(ÐÏࡱ)第0行0列,其余的文件是空白的。 请帮忙吗? 谢谢

Excel工作簿到html Django / Python

有什么办法可以把excel工作簿,并显示在一个网页上,格式与工作簿相同? 我想知道是否有办法把Excel工作簿,并粘贴在网页上的内容。 基本上即时通讯寻找的东西来截图的Excel文件,并粘贴在我的网页…有没有办法做到这一点? (也许类似于Zoho Viewer: https : //sheet.zoho.com/sheet/excelviewer ) 当前Wepbage: 添加Excel工作簿后 注意:我正在使用xlsxwriter来填充Excel表单。

如何从列表中检索我的Django数据库中的行数据?

我想检索我的Django数据库表中的数据作为一个列表中的数据,所以我可以迭代它,并将列表的每个值写入Excel电子表格。 我试图用字典来做这件事,但是字典并没有用Python的顺序排列,所以我的列都乱了。 我需要我的Excel电子表格看起来与我的数据库表相同,而不是随机乱序。 我怎样才能做到这一点? 当前代码: def dump_attorneys_to_xlsx(request): if request.GET.get('export'): output = BytesIO() workbook = xlsxwriter.Workbook(output, {'in_memory': True}) worksheet = workbook.add_worksheet('Summary') attorneys = Attorney.objects.all().values() # Write header worksheet.write_row(0, 0, attorneys[0].keys()) # Write data for row_index, row_dict in enumerate(attorneys, start=1): worksheet.write_row(row_index, 0, row_dict.values()) workbook.close() output.seek(0) response = HttpResponse(output.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response['Content-Disposition'] = 'attachment; filename=summary.xlsx'

使用xlsxwriter将CSV转换为excel并将其保存到django模型

现在我没有任何关于转换这个csv或下载它的问题我有一个问题,将它保存到filefield的django模型最小化的示例代码: def download_convert_reports_s3_temp(): def get_report_url(): bucket_name = 'temp_bucket' conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.get_bucket(bucket_name) key = bucket.get_key('TEMP_2017-01-10.csv') return key.generate_url(expires_in=600) def get_doc(): return Doc.objects.get(owner=User.objects.first()) def get_file(file): file_temp = NamedTemporaryFile(delete=True) file_temp.write(file.content) file_temp.flush() return File(file_temp) def convert_csv_to_xlsx(): request = requests.get(get_report_url()) csvfile = get_file(request) from django.conf import settings excelFile = xlsxwriter.Workbook('report.xlsx', { 'strings_to_numbers': True, 'default_date_format': 'yy/mm/dd', 'tmpdir': settings.MEDIA_ROOT […]

Django-使用pd.read_html&df.to_excel创build一个可下载的excel文件

我目前有一个Python脚本,使用pd.read_html从一个网站拉数据。 然后我使用df.to_excel设置“xlsxwriter”作为引擎。 我试图find一种方法将其纳入Django的Web应用程序。 然而,我迷失在如何做到这一点,甚至知道如果可能的话。 我已经看到了一些在django中创build可下载的excel文件的方法,但没有一个将pandas作为在Excel文件中创build数据的驱动力。 我创build没有Django的Excel文件的Python代码有点长,所以不知道要显示什么。 以下是我的pandas代码的一部分: xlWriter = pd.ExcelWriter(excel_sheet2, engine='xlsxwriter') workbook = xlWriter.book money_fmt = workbook.add_format({'num_format': 42, 'align': 'center', 'text_wrap': True}) text_fmt = workbook.add_format({'bold': True, 'align': 'center', 'text_wrap': True}) for i, df in enumerate(dfs): for col in df.columns[1:]: df.loc[df[col] == '-', col] = 0 df[col] = df[col].astype(float) df.to_excel(xlWriter, sheet_name='Sheet{}'.format(i)) 以下是我的templates.html代码 {% block content %} […]

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 […]

AttributeError:'模块'对象没有属性'open_openwork'

我想导入一个EXCEL文件,但是代码有一些问题。帮助! import xlrd fname = "D:/pdf-ex/exc.xls" bk = xlrd.open_openwork("fname","rb") shxrange = range(bk.nsheets) sh = bk.sheet_by_name("Sheet1") nrows = sh.nrows ncols = sh.ncols print "nrows %d, ncols %d" % (nrows,ncols) cell_value = sh.cell_value(1,1) print cell_value row_list = [] for i in range(1,nrows): row_data = sh.row_values(i) row_list.append(row_data)

django批量excel文件读取使用xlrd太慢

我在Django模型中加载excel文件,并使用xlrd读取并存储在数据库中。 加载大约20k行花费1分钟..但是我的文件有160k行花了8分钟,所以我需要减less读取和存储的时间less于一分钟这种大容量文件。 我应该怎么做,以减less加载时间。 什么是所有可能的方式? def upload_file(request): if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): newdoc = Upload(file = request.FILES['file']) newdoc.save() xlbook = open_workbook(newdoc.file.name) sheet = xlbook.sheet_by_index(0) field = [sheet.cell_value(0,c) for c in range(sheet.ncols)] temp = [sheet.cell_value(c,0) for c in range(sheet.nrows)] value = [[sheet.cell_value(r,c) for c in range(sheet.ncols)]for r in range (sheet.nrows)] data = […]

IndexError:列出索引超出范围:我可以理解为什么发生这个错误

我得到了一个错误IndexError:列表索引超出范围。 我想把字典数据放到模型(用户)。 我写了 book2 = xlrd.open_workbook('./data/excel1.xlsx') sheet2 = book2.sheet_by_index(0) for row_index in range(1,sheet2.nrows): rows = sheet2.row_values(row_index) print(rows) user3 = User.objects.filter(user_id=rows[0]) if user3: user3.update(talk1=rows[2],characteristic1=rows[3],talk2=rows[4],characteristic2=rows[5], talk3=rows[6], characteristic3=rows[7],talk4=rows[8], characteristic4=rows[9], talk5=rows[10], characteristic5=rows[11],talk6=rows[12], characteristic6=rows[13], talk7=rows[14], characteristic7=rows[15], talk8=rows[16], characteristic8=rows[17]) 但是,行的索引数量与每个列表不同 ['001200cd3eF', 'Tom', 'Hi', 'greeting', 'Goodmorning', 'greeting', 'Bye' 'say good‐bye', '', '', '']['007700ab7Ws', 'Blear', 'How are you', 'greeting', 'Thx', 'Thanks', '', '', […]