python界面开发 导入excel文件选项_python django框架前端页面支持导出excel文件

实际业务中,针对每个产品线运营人员操作后台经常需要导出excel文件,本例采用抓取的爬虫数据,当后台数据在页面里显示完后,点击导出按钮,页面提示导出成功或失败信息,成功则导出Excel文件到static/xlsxfiles文件夹,全部导出后生成文件名为all_poemers.xlsx的excel文件,搜索某一用户后生成文件名为{{ poemer }}.xlsx的文件 ,{{ poemer }}为django模板变量

搜索 '李白' 则生成 李白.xlsx

增加excel操作

前端采用jQuery和js,使用ajax请求后台接口,两个页面的前端代码如下:

2.1 poemers.html页面修改的部分

请输入诗人名:

导出excel

{% csrf_token %}

$(document).ready(function () {

$("#export_excel").click(function () {

htmlobj = $.ajax({url: "{% url 'tangshi:export_all_excel' %}", async: false});

alert(htmlobj.responseText);

});

});

其中{% url 'tangshi:export_all_excel' %} 是django的url模板 标签用法,'tangshi:export_all_excel' 指向的是app应用 tangshi下面urls.py中name='export_all_excel',其对应的view视图函数是 app应用tangshi下面 views.py中的 export_all_excel函数.

2.2 poemers_search.html页面修改的部分

请输入诗人名:

搜索

var poemer = $("input[ name='poemer' ]").val();

$.ajax({

type: 'POST',

url: "{% url 'tangshi:poemers_search' %} ",

data: {

'poemer': poemer,

'csrfmiddlewaretoken': '{{ csrf_token }}'

},

success: 'success'

});

导出excel

$(document).ready(function () {

$("#export_excel").click(function () {

var poemer = $("input[name='poemer']").val();

$.ajax({

type: 'POST',

url: "{% url 'tangshi:export_per_excel' %} ",

data: {

'poemer': poemer,

'csrfmiddlewaretoken': '{{ csrf_token }}'

},

success: 'success'

});

alert_text = '导出' + poemer + '数据成功';

alert(alert_text);

});

});

2.3 tangshi.urls.py

from django.conf.urls import url

from . import views

urlpatterns = [

url(r'^poemers_search/$', views.poemers_search, name='poemers_search'),

url(r'^poemers/$', views.poemers, name='poemers'),

url(r'^all_word_cloud/$', views.poem_ajax, name='all_word_cloud'),

url(r'^export_all_excel/$', views.export_all_excel, name='export_all_excel'),

url(r'^export_per_excel/$', views.export_per_excel, name='export_per_excel'),

]

2.4 tangshi.views.py 中export_all_excel 函数为 实例化 SQLS/tangshi_sqls.py里的TangShi类的export_excel函数

def export_all_excel(request):

tangshi = TangShi()

alert_text = tangshi.export_excel(None)

return HttpResponse(alert_text)

2.5 SQLS/tangshi_sqls.py里的TangShi类的export_excel函数

#首先逻辑判断是搜索页面还是默认全部显示页面,全部显示页面poemer值为None,导出全部,搜索页面导出某一个诗人数据 poemer会有值

def export_excel(self,poemer):

par_path = path.join(BASE_DIR, 'static/xlsxfiles')

os.chdir(par_path)

if poemer:

file = poemer + '.xlsx'

# 删除昨日执行文件

if os.path.isfile(file):

os.remove(file)

data = self.per_poemer_data(poemer)

else:

file ='all_poemers.xlsx'

if os.path.isfile(file):

os.remove(file)

data = self.all_poemers_data()

fields = ['id', 'chaodai', 'poemer', 'zuopins_total', 'poemer_url']

workbook = xlsxwriter.Workbook(file)

worksheet = workbook.add_worksheet('data')

# 表头格式

format1 = workbook.add_format(

{'bold': True, 'font_color': 'black', 'font_size': 13, 'align': 'left', 'font_name': u'宋体'})

# 表头外格式

format2 = workbook.add_format({'font_color': 'black', 'font_size': 9, 'align': 'left', 'font_name': u'宋体'})

# A列列宽设置能更好的显示

worksheet.set_column("A:A", 9)

# 插入第一行表头标题

for i in range(0, len(fields)):

field = fields[i]

worksheet.write(0, i, field, format1)

#从第二行开始插入数据

for i in range(len(data)):

item = data[i]

for j in range(len(fields)):

field = fields[j]

worksheet.write(i+1, j, item[field], format2)

workbook.close()

alert_text = '导出%s条数据到excel成功' % len(data)

return alert_text

导出

3.1 导出全部文件

文件生成

页面提示

全部数据

3.2 导出搜索结果的文件

搜索结果

文件生成

页面提示

搜索的数据导出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一种基于Python的Web应用程序框架,提供丰富的数据库操作和模板引擎来简化Web开发。其中,解决Web应用程序中数据存储和数据处理是很重要的一部分,而本地excel文件导入和输出也是数据处理中常见的操作。因此,利用Django框架实现获取本地excel文件导入数据库再生成excel文件的接口将为开发者提供更加便捷和高效的方式。 实现该接口需要以下步骤: 1.读取本地excel文件:通过使用Python中的pandas库中的read_excel函数,可以便捷地读取本地excel文件到pandas数据框中。 2.导入数据到数据库:Django框架提供的ORM操作可以将pandas数据框中的数据保存到数据库中。首先需要创建模型类来定义数据库表的结构,然后使用pandas的to_sql函数将数据框中的数据插入到数据库中。 3.生成excel文件:在数据库中导入数据后,使用pandas中的to_excel函数将数据框中的数据导出excel文件。 4.接口设计与实现:接口设计是将前端需求转换为后端实现的关键。在Django中,可以使用Django REST framework创建API来将数据传递给前端。需要在views.py文件中定义API接口,根据前端请求,执行数据读取,导入导出等操作。 以上是实现该接口的具体步骤。需要注意的是,在实际开发中,需注意excel文件和数据库的数据格式规范,变量和函数的命名规范以及异常处理等问题。实现该接口可以提升数据处理的效率,减少开发人员的工作量,提高开发效率,从而更好地服务于Web应用程序的开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值