如何在Odoo15中使用Python在XLSX报表中生成正方形形状?
在Odoo 15中通过Python代码在XLSX报表生成正方形形状
核心依赖说明
Odoo 15的XLSX报表底层依赖xlsxwriter库,可直接调用该库的形状绘制API生成正方形。
实现步骤与代码示例
1. 定义XLSX报表类
创建继承自report_xlsx.abstract_report_xlsx的报表类(依赖社区常用的report_xlsx模块):
from odoo import models class SquareXlsxReport(models.AbstractModel): _name = 'report.your_module.square_xlsx_report' _inherit = 'report_xlsx.abstract_report_xlsx' def generate_xlsx_report(self, workbook, data, objects): # 创建工作表 worksheet = workbook.add_worksheet('Square Demo') # 绘制基础正方形:宽高相等的矩形即为正方形 # 参数:工作表、左上角行索引、左上角列索引、宽度(像素)、高度(像素)、形状类型 worksheet.insert_shape(0, 0, 100, 100, 'rectangle') # 绘制带样式的正方形:自定义填充色、边框 custom_style = { 'fill': {'color': '#FFEB3B'}, 'line': {'color': '#000000', 'width': 2} } worksheet.insert_shape(2, 2, 150, 150, 'rectangle', custom_style)
2. 注册报表
在模块的XML配置中关联报表与目标模型:
<report id="report_square_xlsx" model="your.target.model" string="Square XLSX Report" report_type="xlsx" name="your_module.square_xlsx_report" file="your_module/square_report" attachment_use="False"/>
关键参数说明
insert_shape方法的行、列索引从0开始计数,宽高参数设为相等值即可生成正方形。- 形状类型
rectangle是xlsxwriter支持的基础形状,通过样式参数可自定义填充色、边框粗细、透明度等视觉属性。
内容的提问来源于stack exchange,提问作者Allbin John
相关产品推荐
相关产品推荐

