weixin_33670786 2019-08-08 11:10 采纳率: 0%
浏览 112

如何通过html表单上传一个xlsx文件?

我想通过一个简单的html表单上传一个xlsx文件,并传递值给Django函数进行处理。由于我不了解Ajax,也不知道如何做以下工作,所以我想寻求您的帮助。

我想上传文件并传递一些值。在提交文件/值之后,我希望加载一个页面,该页面将有一组输出值作为预览。我听说Ajax可以提供一种方式,但我不知道怎么做......

<center>

<form method="post" enctype="multipart/form-data" action ='File/'>
    {% csrf_token %}<br><br>


Select a file:   <input type="file" name="vendorfile"><br>
Start: <input type="text" name="start_value" ><br>
Dest: <input type="text" name="dest_col" ><br>
Num: <input type="text" name="num_col" ><br>
Rate: <input type="text" name="rate_col" ><br>
<button  type="submit" >Preview</button>

</form>

</center>
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'/>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'/>
    <meta http-equiv='X-UA-Compatible' content='ie=edge'/>
    <title>Document</title>
</head>
<body>


{% for k,v in _empty %}
{% for x,y in v %}
{{ k }}::<br>
{{ x }}::<br>
{{ y }}::
{% endfor %}
{% endfor %}


</body>
</html>

url(r'^(?i)File/$', FileView.as_view(), name='File-Page'),

    url(r'^(?i)xls/$',
        views.xlsparser, name='XLS'),



def xlsparser(request):
    template_name = 'LCR\output.html'
    sheet_name    = request.POST.get('sheet_name')
    start_value   = request.POST.get('start_value')
    end_value     = 40 #request.POST.get('end_value')
    dest_value    = request.POST.get('dest_col')
    num_value     = request.POST.get('num_col')
    rate_value    = request.POST.get('rate_col')
    file = request.FILES('vendorfile')
    book          = xlrd.open_workbook(file)


    # book = xlrd.open_workbook(file)
    _empty = {}

    sheet = book.sheet_by_index(0)

    for i in range(start_value, end_value):
        cell_key = sheet.cell(i, key_line).value
        cell_value = sheet.cell(i,value_line).value
        cell_rate = sheet.cell(i,rate_line).value

        _empty[cell_key] = [(cell_value,cell_rate)]

    return render(request, template_name, _empty)




class FileView(TemplateView):
    template_name = "LCR\LCRupload.html"


  • 写回答

1条回答 默认 最新

  • messilion 2023-04-26 16:30
    关注

    可以使用input标签的type属性设置为file,让用户选择文件进行上传。例如:

    <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="excel">
      <input type="submit" value="上传">
    </form>
    

    其中,name属性为excel,表示上传的文件名为excel。在form标签中,method属性设置为post,action属性设置为上传文件的处理程序。

    在处理程序中,可以使用PHP的$_FILES变量获取上传的文件信息,例如:

    $excel = $_FILES['excel'];
    $filename = $excel['name']; // 获取文件名
    $tmp_name = $excel['tmp_name']; // 获取上传的临时文件名
    

    然后可以使用PHPExcel等PHP库进行解析和处理xlsx文件。

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏