求教,excel生成好了,用的xlrd 如何将excel保存到本地来?
直接w.save('xxxx.xls')这保存在服务器的硬盘上了
客户使用的时候如何把它保存在客户的电脑上?
多谢
求教,excel生成好了,用的xlrd 如何将excel保存到本地来?
直接w.save('xxxx.xls')这保存在服务器的硬盘上了
客户使用的时候如何把它保存在客户的电脑上?
多谢
我是这么实现的,前台页面对导出按钮增加click事件,点击后使用ajax发送数据到对应url,用xlrd生成并保存xlxs到服务器指定路径下,最后返回文件名(filename),前台点击下载按钮即可下载到本地。
前台页面:
<style type="text/css">
@import "/static/order/jquery-ui.min.css";
</style>
<script type="text/javascript" src="/static/order/jquery-ui.min.js"></script>
<script type="text/javascript">
$(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;
})
})
</script>
<div id="admin_order_control" class="well">
<form class="form-inline" id="order_filter_form">
<div class="col-md-2">
<div class="form-group">
<label for="status">订单状态</label>
<select name="status" class="form-control">
<option value="">--请选择--</option>
<option value="0">关闭</option>
<option value="1">初始订单</option>
<option value="2">待支付</option>
<option value="3">订单处理中</option>
</select>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">筛选</button>
<button type="submit" class="btn btn-default" id="export">导出</button>
</div>
<div id="download" style="display:none;">
<a href="#" class="btn btn-danger">点击下载导出文件</a>
</div>
</div>
<div class="clearfix"></div>
</form>
</div>
服务端:
@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
4 回答4.5k 阅读✓ 已解决
1 回答3.5k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答527 阅读✓ 已解决
1 回答4.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
将文件流输出,当用户点击下载时,输出的Content-Type为application/ms-excel,可以参考这篇文章链接描述