1

我是 Django 的新手,我有一个 Django 应用程序,一旦你上传了几个 excel 文件,它就会进行后台计算并将结果保存在一个 excel 文件中。我需要在 Django 主页中将那些处理最少的 excel 文件显示为数据表。我尝试使用 iframe 的 django-excel 包来执行此操作。我无法获取该页面。请提出以下代码是否需要修改。有没有其他方法可以解决这个问题?

在views.py中:

import django_excel as excel
import pyexcel as p
def show_result_files(request,foldername,outputfilenames):
    file_path = path + '/Data/' + foldername
    if os.path.isfile(file_path + 'Final_Results.xlsx'):
        for afile in request.FILES.getlist(outputfilenames):
            combined_sheet = p.get_sheet(file_path + '2020MY EWPR Combined Parts List Final.xlsx')
            combined_sheet.save_as(afile.sortable.html)
            from IPython.display import IFrame
            IFrame("afile.sortable.html", width=600, height=500)

在 home.html 中:

<div class="inline col-md-9" id="showFinalResults">
    <form method="POST" name="showCombined" action="">{% csrf_token %}
        <button name="showCombined" type="submit" class="btn btn-primary">Combined Parts List</button>
    </form>
</div>
<div class="inline col-md-9" id="showFinalResults">
    <form method="POST" name="showCombined" enctype="multipart/form-data" action=''>{% csrf_token %}
        <div class="col">
            <div class="row">
                <span class="btn btn-primary btn-file">
                                        Combined Parts List <input name="SparrowFiles" id="Sparrow" type="file" multiple="">
                </span>
                                    <button name='upload_Sparrow' type="submit" class="btn btn-secondary js-upload-files" data-toggle="modal" data-target="#modal-progress_sp"">Go</button>
            </div>
        </div>
    </form>
</div>

当单击“showCombined”按钮时,我希望在主页中显示生成的 excel 文件

4

1 回答 1

3

有多种选择,具体取决于您是否希望无法使用 excel 的用户可以访问电子表格数据。

最普遍的做法是,按钮是一个超链接,它调用一个将电子表格数据呈现为 HTML 的 Django 视图<table>。有一个非常棒的 JavaScript,称为DataTables,它可以使这样的表格在显示方面几乎与 Excel 一样功能。非常易于使用:从简单开始,然后添加调整直到完善。绝对有很多可用的示例(并且在 StackOverflow 上提供了很多支持)。

另一个是用于将其结果保存为 Excel 的计算,同时也保存为 pdf,并在该超链接中提供 pdf。

最后,您可以将链接的目标设置为 xlsx 文件本身,如果 Excel 尚未设置为默认值(在 Windows 机器上可能会是这样。在 Linux 机器上),用户的浏览器将询问如何打开它LibreOffice Calc 可能会完成同样的工作。)。

于 2019-05-15T13:23:46.090 回答