1、创建一个向导模型:

from odoo import models, fields, api
import base64
import xlwt
from io import BytesIO class UserExport(models.TransientModel):
_name = "user.export"
_description = "导出成excel" file = fields.Binary('文件') def generate_excel(self, task_ids):
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('任务清单') style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = '宋体' # 字体
font.bold = True # 加粗
font.height = 20 * 10 # 字体大小
style.font = font # 为样式设置字体 # 添加列的标题
header = ['姓名', '性别', '年龄']
for col in range(len(header)):
worksheet.write(0, col, header[col], style)
row = 1
for line in task_ids:
worksheet.write(row, 0, line.name if line.name else '')
worksheet.write(row, 1, line.sex if line.sex else '')
worksheet.write(row, 2, line.age if line.age else '')
row = row + 1
# 保存
buffer = BytesIO()
workbook.save(buffer)
return base64.encodebytes(buffer.getvalue()) def action_export_data(self):
# 获取id
context = dict(self._context or {})
task_ids = context.get('active_ids')
# 查出数据
task_ids = self.env['demo.user'].browse(task_ids)
# 调用自定义excel模板
res = self.create({'file': self.generate_excel(task_ids)})
file_name = 'DEMO_USER'
excel_url = '/web/content?model=%s&id=%s&field=file&download=true&filename=%s.xls' % (self._name, res.id, file_name)
value = dict(
type = 'ir.actions.act_url',
target = 'self',
url = excel_url,
)
return value

二、新建一个模型

# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
import os
import base64
import logging class demo_user(models.Model):
_name = 'demo.user'
_description = '用户' name = fields.Char('姓名')
sex = fields.Char('性别')
age = fields.Integer('年龄')

三、在动作里添加按钮

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="excel_user_export_action" model="ir.actions.server">
<field name="name">导出Excel</field>
<field name="model_id" ref="mo_sale.model_user_export"/>
<field name="binding_model_id" ref="mo_sale.model_demo_user"/>
<field name="state">code</field>
<field name="code">
action = env['user.export'].action_export_data()
</field>
</record>
</odoo>

创建action和menu

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="demo_uesr_order_action" model="ir.actions.act_window">
<field name="name">Demo 用户</field>
<field name="res_model">demo.user</field>
<field name="view_mode">tree,form</field>
</record> </data>
</odoo>

odoo14里自定义批量下载数据【excel】的更多相关文章

  1. 如何利用efetch从NCBI中批量下载数据?

    目录 找序列 下序列 假设我要从NCBI中下载全部水稻的mRNA序列,如何实施? 找序列 第一步,肯定是找到相关序列. 我从ncbi taxonomy进入,搜索oryza.因为要搜索mRNA核酸序列, ...

  2. FTP批量下载数据文件

    包含ftp的命令脚本,建立临时文件. ::服务器连接信息 set username=root set password=root set ip=xxx.xxx.xxx.xxx set RemoteDi ...

  3. 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

    嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

  4. POI操作Excel(批量导出数据/下载excel)

    目录 1.第一个demo:创建工作簿,创建sheet页,创建单元格    2.创建一个时间格式的单元格    3.遍历工作簿的行和列并获取单元格内容    4.文本提取    5.单元格对齐方式    ...

  5. 使用PHPExcel实现数据批量导出为excel表格

    首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单 ...

  6. django----Sweetalert bulk_create批量插入数据 自定义分页器

    目录 一.Sweetalert使用AJAX操作 二.bulk_create 三.分页器 divmod 分页器组件 自定义分页器的使用 一.Sweetalert使用AJAX操作 ​ sweetalert ...

  7. 【数据下载】利用wget命令批量下载ftp文件和文件夹

    这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...

  8. java操作Excel之POI(6)使用POI实现使用模板批量添加数据

    action是用struts2写的:前端界面easyUI写的, 前端: <!DOCTYPE html> <html> <head> <meta charset ...

  9. java使用POI实现Excel批量导入数据

    1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...

随机推荐

  1. 【NX二次开发】拉伸的偏置方向猜想与验证

    结论:偏置的方向为曲线方向与拉伸方向的向量叉乘. 在UF_MODL_create_extrusion帮助中有这么一句话:Note that the offset direction is determ ...

  2. 【题解】将军令 Luogu P3942 (未完成)

    历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦 将军令 题目描述 又想起了四月. 如果不是省 ...

  3. 【题解】数颜色 STL vector数组

    小 C 的兔子不是雪白的,而是五彩缤纷的. 题目 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不同的兔子可能有 相同的颜色.小 C 把她标号从 1 到 n 的 n只兔子排 ...

  4. CVPR2021|一个高效的金字塔切分注意力模块PSA

    ​ 前言: 前面分享了一篇<继SE,CBAM后的一种新的注意力机制Coordinate Attention>,其出发点在于SE只引入了通道注意力,CBAM的空间注意力只考虑了局部区域的信息 ...

  5. 基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则

    目录 系列文章 领域服务 应用服务 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践 ...

  6. mapboxgl绘制3D线

    最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...

  7. javascript的getTime函数

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  8. zabbix4.0升级到zabbix5.0

    1 更新yum源 # yum erase zabbix-release-4.0-1.el7.noarch # rpm -ivh https://mirrors.aliyun.com/zabbix/za ...

  9. 教你写百分九十的shell

    本文章主要内容来自菜鸟教程 , 也添加了一些知识点 shell脚本? 在说什么是shell脚本之前,先说说什么是shell.shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作 ...

  10. SpringBoot:SpringBoot中@Value注入失败

    1. 第一步检测语法是否正确 @Value("${test}") private String test; 2.第二步检测配置文件中是否有进行配置 url=testusername ...