flask 对excel上传下载操作和文件处理

文件的下载

from flask import send_from_directory

 
  1. @excel_bp.route('/get_attachment/<path:filename>')

  2. def get_attachment(filename):

  3. return send_from_directory(app.config['UPLOAD_FOLDER'],filename,as_attachment=True)

 

文件的上传

(1)html中

<input class="form-control" type="文件名" name="file" value="请上传excel文件">

(2)后端获取,保存

 
  1. file = request.files.get('文件名') # 获取文件

  2.  
  3. filename = file.filename # 获取文件名

  4.  
  5. file.save(os.path.join(FILE_DIR,filename)) # 保存文件

(3)当然 要对文件名,文件类型进行判断;存储路径也要进行判断

可以使用werkzeug中的 secure_filename

判断文件类型

 
  1. ALLOWED_EXTENSIONS = ['xls', 'xlsx']

  2.  
  3. def allowe_file(filename):

  4. '''

  5. 限制上传的文件格式

  6. :param filename:

  7. :return:

  8. '''

  9. return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

修改文件名

 
  1. import os

  2. import datetime,uuid

  3.  
  4. def change_filename(filename):

  5. '''

  6. 修改文件名称

  7. :param filename:

  8. :return:

  9. '''

  10. fileinfo = os.path.splitext(filename)

  11. filename = datetime.datetime.now().strftime("%Y%m%d%H%M%S")+str(uuid.uuid4().hex)+fileinfo[-1]

  12. return filename

判断储存路径

 
  1. if not os.path.exists(FILE_DIR):

  2. os.makedirs(FILE_DIR)

 

python的excel操作

 

通过xlrd读文件

安装:pip install xlrd

通过 xlrd 打开excel,组装数据

 
  1. import xlrd

  2.  
  3. def get_data(filename,method='r'):

  4. '''

  5. 改变数据结构 -- 方便前端显示

  6. :param filename: 文件名

  7. :param method: 按照 列或者 行 返回数据

  8. '''

  9. data = xlrd.open_workbook(filename)

  10. table= data.sheets()[0]

  11. nrows = table.nrows # 行数

  12. ncols = table.ncols # 列数

  13. if method == 'r':

  14. row_list = [ table.row_values(i) for i in range(0,nrows)] # 所有行的数据

  15. return row_list

  16. elif method == 'c':

  17. col_list = [ table.col_values(i) for i in range(0,ncols)] # 所有列的数据

  18. return col_list

前端显示

 
  1. < thead >

  2. < tr >

  3.              {% for title in datalist[0] %}

  4.                 < th >{ title }< / th >

  5.              { % endfor % }

  6.          < /tr >

  7. < / thead >

  8. < tbody >

  9.          { % for row in datalist[1:] % }

  10.              < tr >

  11. { % for item in row % }

  12. <td>{ { item } }</td>

  13. { % endfor % }

  14. < /tr >

  15.         { % enfor % }

  16.      < / tbody >

  17. < / table >

通过xlwt写文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven 本地包依赖包打进jar

1.声明依赖jar的时候使用 <dependency> <groupId>test</groupId> <artifactId>test</artifactId> <version>1.1</version> <scope>system</scope> <systemPath>${project.basedir}/lib/a.jar</systemPath> …

xml学习总结(四)

命名空间 &#xff08;1&#xff09;产生 问题&#xff1a;在不同的约束文档中&#xff0c;有不同好安逸的相同标记名称 解决办法 每个约束模式人当被赋予一个唯一的名称空间&#xff0c;每个名称空间可用一个唯一的URI表示 在XML实例中为来自不同模式文档的元素重甲不同的前缀…

Flask入门之上传文件到服务器

https://www.cnblogs.com/wongbingming/p/6802660.html flask 文件的上传下载和excel操作 Flask入门之上传文件到服务器 今天要做一个简单的页面&#xff0c;可以实现将文件 上传到服务器&#xff08;保存在指定文件夹&#xff09; #Sample.py # coding:utf-8from flask i…

ASP入门(十一)-Session小案例

一般来说&#xff0c;在实际开发中&#xff0c;对于 Session 对象使用最多的就是用户登录部分了&#xff0c;这个案例将简单模拟一个用户登录表单、用户是否登录的判断以及用户退出的一系列功能&#xff0c;它一共分了以下几个页面。 Login.asp (用户登录)、Check.asp (用户是否…

智能家居资源汇总

智能家居中红外控制系统通讯协议分析.pdf 智能家居中视频监控系统的设计与实现_林琳.caj 智能家居中视频监控系统设计_董翠英.pdf 智能家居系统——语音识别.pdf 智能家居系统中家庭网关的研究.pdf 智能家居系统中家电控制的研究与实现.kdh 智能家居系统语音遥控器的设计与实现…

sql语句--时间

1.时间的比较&#xff1a;时间是日期类型、字符串类型&#xff0c;long型&#xff0c;直接比较 例&#xff1a; SELECT * FROM student where date1 BETWEEN 2017-09-15 09:07:17 AND 2017-09-15 09:08:19 2.from_unixtime(long型date)&#xff1a;将时间戳转为时间 例&#xf…

JS 判断上传文件是否为EXCEL 文件

<SCRIPT language"JavaScript"> function checkform(o){var f_content form1.file.value;var fileextf_content.substring(f_content.lastIndexOf("."),f_content.length)fileextfileext.toLowerCase()if (fileext!.xls){alert("对不起&#x…

[转]打造自己的LINQ Provider(上):Expression Tree揭秘

概述 在.NET Framework 3.5中提供了LINQ 支持后&#xff0c;LINQ就以其强大而优雅的编程方式赢得了开发人员的喜爱&#xff0c;而各种LINQ Provider更是满天飞&#xff0c;如LINQ to NHibernate、LINQ to Google等&#xff0c;大有“一切皆LINQ”的趋势。LINQ本身也提供了很好的…

2017.9.15 postgresql批量插入造成冲突后执行更新

参考来自&#xff1a;https://stackoverflow.com/questions/40647600/postgresql-multi-value-upserts/46233907#46233907 1.before insert 2.insert sql 3.after insert 注意这里有两个容易出错的点&#xff1a;1.如果label字段不是必填的&#xff0c;要注意语法会不会出错。万…

所有程序员都应该遵守的11条规则

我是一个倾向于生活在规则下的人。 现在&#xff0c;这些规则大部分是我本人为自己设立的&#xff0c;但它们依然是规则。 我发现为自己创建规则可以让我过得更好&#xff0c;因为这样做可以提前决定一些事情&#xff0c;而不是要在匆忙中做出所有的决定。 我今天早上应该去健身…

mybatis动态SQL语句

三、动态SQL语句 有些时候&#xff0c;sql语句where条件中&#xff0c;需要一些安全判断&#xff0c;例如按性别检索&#xff0c;如果传入的参数是空的&#xff0c;此时查询出的结果很可能是空的&#xff0c;也许我们需要参数为空时&#xff0c;是查出全部的信息。这是我们可以…

git 脚本

echo $PWD message$1 content. if [ ! -n "$1" ] ;thenmessagedatemessage$message 推送到服务器echo $message elseecho "$1" figit add . git commit -m "$message " git push 转载于:https://www.cnblogs.com/whm-blog/p/7527271.html

composer安装特别慢的解决方案

https://www.cnblogs.com/djwhome/p/9322287.html composer安装特别慢的解决方案 在项目开发的时候 有许多新的依赖要按照 就需要用到composer 但是由于国内安装下载速度贼慢(国外的网站连接速度太慢&#xff0c;并且随时可能被墙) 安装一个excel扩展(composer require maatw…

好的积分不等式

转自 http://pxchg1200.is-programmer.com/?page7 转载于:https://www.cnblogs.com/zhangwenbiao/p/4738960.html

Jsoup(三)-- Jsoup使用选择器语法查找DOM元素

1.Jsoup可以使用类似于CSS或jQuery的语法来查找和操作元素. 2.实例如下&#xff1a; public static void main(String[] args) throws Exception{// 创建httpClient实例CloseableHttpClient httpClient HttpClients.createDefault();// 创建httpGet实例HttpGet httpGet new H…

Ubuntu 中改变文件的默认打开方式(转)

源自&#xff1a;Ubuntu 中改变文件的默认打开方式 1. 相关配置文件 [plain] view plaincopyprint? 全局配置 /etc/gnome/defaults.list /usr/share/applications/mimeinfo.cache 个人配置 ~/.local/share/applications/mimeapps.list ~/.local/share/applications/mimei…

使用PhpSpreadsheet将Excel导入到MySQL数据库

使用PhpSpreadsheet将Excel导入到MySQL数据库 日常开发中&#xff0c;我们经常遇到这样的场景&#xff0c;需要将一个Excel表格数据如客户信息、学生成绩表导入到系统数据库中&#xff0c;然后在系统中进行进一步操作&#xff0c;如给导入的客户群发短信&#xff0c;统计学生成…

spring-test的简单实用方式

为什么80%的码农都做不了架构师&#xff1f;>>> 1. 通过maven引入spring-test框架 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.2.0.RELEASE</version> </…

Maven学习-目录结构

1. 什么是Maven 2. 如何用Maven来构建项目 3. Maven项目的目录结构 Maven约定了一套规则来创建和构建项目。得益于Maven的一些约定&#xff0c;我们只要学习相对很少的命令就可以创建和管理我们的项目。在项目的目录结构上&#xff0c;Maven有一套约定的通用的目录结构。 使用一…

用JQuery中的Ajax方法获取web service等后台程序中的方法

用JQuery中的Ajax方法获取web service等后台程序中的方法 1、准备需要被前台html页面调用的web Service&#xff0c;这里我们就用ws来代替了&#xff0c;代码如下&#xff1a; using System;using System.Collections.Generic;using System.Data;using System.Linq;using Syste…