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. 题解-P3810

    P3810 [模板]三维偏序(陌上花开) 更好的阅读体验1 更好的阅读体验2 前置算法 树状数组求逆序对 归并排序求逆序对 解题之前,让我们来看一看弱化版本 \(\to\) 二维偏序 题意 给定两个长 ...

  2. POI导出Excel时下拉列表值超过255的问题(String literals in formulas can't be bigger than 255 characters ASCII)

    //创建Excel工作薄对象 Workbook workbook = new HSSFWorkbook(); //生成一个表格 设置:页签 Sheet sheet = workbook.createS ...

  3. JDK并发包一

    JDK并发包一 同步控制是并发程序必不可少的重要手段,synchronized是一种最简单的控制方法.但JDK提供了更加强大的方法----重入锁 重入锁 重入锁使用java.util.concurre ...

  4. 基于ILI9341的TFT液晶显示模组LCM240320详解(1)

    Hello,大家好,今天我们来讨论当下非常流行的TFT液晶显示模组,它最大的特点是可以显示出效果非常好的彩色信息,绝大多数手机.液晶显示器,液晶电视.MID.MP4等产品都在使用它,你想抗拒它的魅力还 ...

  5. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

    目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...

  6. Vue3全局APi解析-源码学习

    本文章共5314字,预计阅读时间5-15分钟. 前言 不知不觉Vue-next的版本已经来到了3.1.2,最近对照着源码学习Vue3的全局Api,边学习边整理了下来,希望可以和大家一起进步. 我们以官 ...

  7. 44、djanjo工程(介绍)

    44.1.什么时web框架: 1.框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用看框架可以 帮助你快速开发特定的形同,简单的说,就是你用别人搭建好的舞台来做 ...

  8. solidity基础知识

    1.solidity是一种语法类似JavaScript的高级语言,它被设计成以编译的方式生成以太坊虚拟机代码.在后续的内容中你将会发现,使用它很容易创建用于投票.众筹.封闭拍卖.多重签名钱包等等的合约 ...

  9. Spring官方发布新成员:Spring GraphQL

    近日,在GraphQL Java诞生6周年的时候,Spring社区通过博客宣布正式创建全新项目:Spring GraphQL,同时还发布了这个新项目的里程碑1.0版本. 博客原文:https://sp ...

  10. 谁知道百会CRM跟Zoho是一家公司吗?

    说到ZohoCRM,无论是搜索引擎还是信息网站,总会有无数的身影.很多人不知道这两家公司的关系,甚至认为百会和Zoho是一家公司.那么,百会CRM和Zoho属于同一类公司吗?它们之间有什么关系?今天小 ...