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 ...
随机推荐
- 【VBA】获取文件夹下所有文本文件
源码: 1 Sub 获取文件夹下所有文本文件() 2 Dim strPath As String 3 strPath = "G:\A\" 4 Dim MyFile As Strin ...
- Spring Boot WebFlux-08——WebFlux 中 WebSocket 实现通信
第08课:WebFlux 中 WebSocket 实现通信 前言 WebFlux 该模块中包含了对反应式 HTTP.服务器推送事件和 WebSocket 的客户端和服务器端的支持.这里我们简单实践下 ...
- 手把手使用Python进行语音合成,文字转语音
目录 0. 太长不看系列,直接使用 1. Python调用标贝科技语音合成接口,实现文字转语音 1.1 环境准备: 1.2 获取权限 1.2.1 登录 1.2.2 创建新应用 1.2.3 选择服务 1 ...
- Redmine部署中遇到的问题
Redmine部署文章: 第一篇:Redmine部署 第二篇:Redmine部署中遇到的问题 上一篇文章我写了Redmine怎样部署(点这里直达上一篇文章),这一篇就写一下在Redmine部署中遇到过 ...
- ABP Framework 研习社经验总结(6.28-7.2)
ABP Framework 研习社经验总结(6.28-7.2) 研习社初衷 在翻译 <实现领域驱动设计>-- 基于 ABP Framework 实现领域驱动设计实用指南 时,因为DDD理论 ...
- Mongo写入安全机制
写入安全(Write Concern) 是一种客户端设置,用于控制写入的安全级别.默认况下,插入.删除和更新都会一直等待数据库响应(写入是否成功),然后才会继续执行.通常,遇到错误时,客户端会抛出一个 ...
- kafka简单介绍
Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...
- 16 自动发布PHP项目
#!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PHP_NAME=$1 DATE ...
- 11、ssh自动化脚本编写
11.1.如何一键自动化安装50台规模集群网站搭建: 1.自动化思路: kickstart无人值守安装linux系统(自动创建用户.密码.优化): 分发机上创建秘钥对.批量发走公钥(expect): ...
- 23、ORA-00439:DEFERRED_SEGMENT_CREATION 问题解决
23.1.说明: 1. 众所周知,在清空表内所有数据时,truncate比delete要快很多,原因是,delete语句每次删除一行,都在事务日志中为所删除的每行记录一项. truncate通过释放存 ...