odoo14里自定义批量下载数据【excel】
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】的更多相关文章
- 如何利用efetch从NCBI中批量下载数据?
目录 找序列 下序列 假设我要从NCBI中下载全部水稻的mRNA序列,如何实施? 找序列 第一步,肯定是找到相关序列. 我从ncbi taxonomy进入,搜索oryza.因为要搜索mRNA核酸序列, ...
- FTP批量下载数据文件
包含ftp的命令脚本,建立临时文件. ::服务器连接信息 set username=root set password=root set ip=xxx.xxx.xxx.xxx set RemoteDi ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- POI操作Excel(批量导出数据/下载excel)
目录 1.第一个demo:创建工作簿,创建sheet页,创建单元格 2.创建一个时间格式的单元格 3.遍历工作簿的行和列并获取单元格内容 4.文本提取 5.单元格对齐方式 ...
- 使用PHPExcel实现数据批量导出为excel表格
首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单 ...
- django----Sweetalert bulk_create批量插入数据 自定义分页器
目录 一.Sweetalert使用AJAX操作 二.bulk_create 三.分页器 divmod 分页器组件 自定义分页器的使用 一.Sweetalert使用AJAX操作 sweetalert ...
- 【数据下载】利用wget命令批量下载ftp文件和文件夹
这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...
- java操作Excel之POI(6)使用POI实现使用模板批量添加数据
action是用struts2写的:前端界面easyUI写的, 前端: <!DOCTYPE html> <html> <head> <meta charset ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
随机推荐
- 深入Netty逻辑架构,从Reactor线程模型开始
本文是Netty系列第6篇 上一篇文章我们从一个Netty的使用Demo,了解了用Netty构建一个Server服务端应用的基本方式.并且从这个Demo出发,简述了Netty的逻辑架构,并对Chann ...
- [Azure DevOps] 编译时自动修改版本号
1. 需求 在使用 Pipeline 自动化 CI/CD 流程的过程中,我还还需要自动修改程序集的版本号.这个功能 EdiWang 和LeoLaw 都写文章讲解过做法.不过我的项目基本都是 .Net ...
- JavaScript实现的7种排序算法
所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率.对于排序,我们首先要求 ...
- vim安装及个性化配置
1.安装vim,并且vim命令的别名设置为vi yum install vim -y (如果不能识别vim命令,需要先安装vim) vi /etc/bashrc 或者 vi ~/.bashrc 在最后 ...
- excel判断数据是否存在另一列中
1.if(EXACT(A2,B2)=TRUE,"相同","不同"),A2,B2相同(字母区分大小写)则函数值true正确,反馈相同,反之返回不同.注:单元格值受 ...
- NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装 NoSQL Manager for MongoDB 可 ...
- 友华新光猫PT924G破解telnet之路
最近去找电信要了个新的千兆光猫(电信宽带300兆配100兆光猫真鸡贼),背后一看不是华为了,是友华PT924G,在http://192.168.1.1:8080/里看到了熟悉的电信界面 用teleco ...
- 想用Electron做个小工具?这个或许是终极版
故事背景 之前在网上有看到很多小伙伴基于 electron 实现了非常多好用的桌面端工具,比如图床管理工具 PicGo,就专门做图床工具.也有一些其他的类似的小工具,比如 saladict-deskt ...
- weblogic项目转为tomcat之后出现的问题
解决java - JAX-WS和版本冲突 itPublisher分享于2017-03-19 推荐:JWS,JAX-WS,JAX-RS,REST,Restlet,SOAP(JAVA Web Servic ...
- MVC 与 三层架构
https://www.bilibili.com/video/av29086718/?p=24 MVC: MVC与三层架构进行比较: