python数据导出excel_python的将数据生成excel功能

我是这么实现的,前台页面对导出按钮增加click事件,点击后使用ajax发送数据到对应url,用xlrd生成并保存xlxs到服务器指定路径下,最后返回文件名(filename),前台点击下载按钮即可下载到本地。

前台页面:

@import "/static/order/jquery-ui.min.css";

$(function(){

$('#export').click(function(){

$('button').attr('disabled', 'disabled')

$('button').text('正在处理,请耐心等待...')

$('#download').hide()

$.ajax({

type: "POST",

data: $('#order_filter_form').serialize(),

url: "{{ url_for('.orders_export_search') }}",

success: function(filename){

$('button').removeAttr('disabled')

$('button:first').text('筛选')

$('button:last').text('导出')

$('#download').show();

$('#download a').attr('href', "/static/order/export/"+filename)

}

})

return false;

})

})

订单状态

--请选择--

关闭

初始订单

待支付

订单处理中

筛选

导出

服务端:

@admin_order_bp.route('/orders/export_search', methods=['POST'])

@json_view

def orders_export_search():

user = request.environ['user']

dict_item = {}

for key in request.form:

dict_item[key] = request.form[key]

dict_item.update({'user_shop_ids': user.shops})

orders = Order.search(dict_item, {'page': 1, 'per_page': 99999})[0]

filename = OrderExporter.rows_to_xls(orders)

return filename

model层:

# 根据数据生成excel文件

@classmethod

def rows_to_xls(cls, order_rows):

filename = '%s_%s.xls' % (datetime.datetime.now().strftime("%Y%m%d"), cls.generate_random_str())

filepath = '%s/%s' % (_updir, filename) # _updir就是文件的存放路径

book = xlwt.Workbook(encoding="utf-8")

sheet1 = book.add_sheet("Sheet 1")

for i, val in enumerate(cls.csv_headline()):

# (行,列,值)

sheet1.write(0, i, val)

for i, order_row in enumerate(order_rows):

utf8_line = cls.order_line(order_row)

for j, val in enumerate(utf8_line):

sheet1.write(i+1, j, val)

book.save(filepath)

return filename

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值