首页 > 其他分享 >Odoo12_自定义导出excel

Odoo12_自定义导出excel

时间:2023-08-12 19:34:09浏览次数:45  
标签:自定义 format excel base64 Odoo12 worksheet workbook True

1.首先按钮或者菜单出发一个后端方法返回url动作

    def download_xxx_excel(self):
        
        url = '/export_xxx_excel?id={self.id}
        return {
            'type': 'ir.actions.act_url',
            'url': url,
            'target': 'new',
            'tfs_close': True
        }

2.controller

from odoo import http
import xlsxwriter, io
import base64

@http.route(['/export_xxx_excel'], type='http', auth="user", website=True)
def export_xxx_excel(self, **kw):
    id = kw.get('id')
    

    output_buffer = io.BytesIO()
    workbook = xlsxwriter.Workbook(output_buffer,
                                options={'default_format_properties': {'font_name': 'Microsoft Yahei', 'font_size': 9, 'valign': 'vcenter'}})
    format_title = workbook.add_format({'font_size': 20, 'align': 'center'})
    format_header = workbook.add_format({'font_size': 10, 'border': True, 'bold': True, 'align': 'center'})
    format_default = workbook.add_format({'text_wrap': True, 'border': True, 'border_color': 'gray'})
    format_left = workbook.add_format({'font_size': 10, 'border': True, 'bold': True, 'align': 'left'})

    worksheet = workbook.add_worksheet("worksheet_name")
    worksheet.write("A1", "Python")
    worksheet.write("B1", "Excel")
    worksheet.write("C1", "xlsx")


    workbook.close()
    output_buffer.seek(0)
    byte_data = output_buffer.getvalue()  # 在内存中读取
    base64_data = base64.b64encode(byte_data)  # 转为base64
    file_name = "xxx.xlsx"
    byte_data = base64.b64decode(base64_data)
    response = http.request.make_response(
        None,
        headers=[
            ('Content-Type', 'application/vnd.ms-excel'),
            ('Content-Disposition', http.content_disposition(file_name))
        ]
    )
    response.stream.write(byte_data)
    return response

 

标签:自定义,format,excel,base64,Odoo12,worksheet,workbook,True
From: https://www.cnblogs.com/wangdianchao/p/17622799.html

相关文章

  • Qt自定义控件之动画文本
    @TOC前言在Qt中,自定义控件可以让我们实现丰富的用户界面效果和交互体验。其中,动画文本是一种常见的效果,通过文本的动态变化可以吸引用户的注意力,增强用户体验。本文将介绍如何使用Qt实现一个动画文本的自定义控件,让你的应用程序更加生动活泼。一、动画文本的效果功能实现:基础功......
  • 在传奇游戏界面添加或删除自定义功能按钮
    本教程是以HERO引擎和非凡登录器(原猎鹰登录器)为例进行示范,其他引擎请自行进行测试,。自定义功能按钮就是在游戏界面中处于小地图,组队等按钮上面的一排可自定义进行功能设置的按钮,如图中所示,用方框选中的就是想要达到的效果。以下是具体添加方法:首先要下载下面我们给大家准备好的一......
  • SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
    要达到的目的:将某个包下使用了某个自定义注解(比如@MyClassMapper)的类注册到Spring容器。一、自定义注解:packagecom.example.demo.service;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)publ......
  • 71. Excel 表列序号
    给你一个字符串 columnTitle ,表示Excel表格中的列名称。返回 该列名称对应的列序号 。例如:A->1B->2C->3...Z->26AA->27AB->28...示例1:输入:columnTitle="A"输出:1示例 2:输入:columnTitle="AB"输出:28示例 3:输入:columnTitle="ZY"输......
  • 自定义键盘
    1.下载刷写工具在https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html 下载WCHISPStudio工具此工具为CH552G芯片厂商沁恒官方烧录工具(仅有windows版本)2.刷写最新键盘固件最新固件:threekey_v5.1.hex 点击下载3、设置下载固件打开WCHISPStudio按下图设置将USB线......
  • Java+Excel+POI+testNG基于数据驱动做一个简单的接口测试【杭州多测师_王sir】
    一、创建一个apicases.xlsx放入到eclipse的resource里面,然后refresh刷新一下二、在pom.xml文件中加入poi和testng的mvnrepository、然后在eclipse的对应目录下放入features和plugins,重启eclipse就可以看到testNG了<!--poiexcel解析--><dependency>......
  • Apache Nginx中记录自定义Header
    从Apache切到Nginx需要保持日志格式统一,以便兼容之前的数据统计脚本现在Apache的日志格式为:LogFormat"%h%t%m%U%q%>s%{HEAD}i%D"说明:%h:客户端IP地址%t:时间(标准英语格式)%m:请求的方法(GET,POST)%U:请求的URL路径,不包含查询字符串%q:查询字符串%>s:请求的最终状态%{HEAD}i:请......
  • ruoyi-cloud excel导入数据
    ruoyi-cloudexcel导入数据说明本文以导入部门数据为例,说明excel如何导入实现部门页面修改在ruoyi-ui->src->views->system->dept->index.vue中更改添加导入按钮<el-col:span="1.5"><el-buttontype="success"plainicon="el-......
  • 自定义feign 解码器Decoder
    直接上代码packagecom.haier.hibp.stock.config;importcom.alibaba.fastjson.JSON;importcom.haier.hibp.stock.constant.WebConstants;importcom.haier.hibp.stock.service.form.FeignResultDto;importfeign.FeignException;importfeign.Response;importfeign.Uti......
  • python在抛出错误raise时,如何将相关信息一同携带出来(抛出自定义对象)?
    示例代码示例classMyClass(Exception):def__init__(self,info):self.info=infodefmy_method(self):print('MyClass.my_methodprintself.info:',self.info)try:raiseMyClass('错误信息')exceptMyClassase:......