侧边栏壁纸
博主头像
EinTao博主等级

昨天再好,也走不回去;明天再难,也要抬脚继续。

  • 累计撰写 32 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

`dy_report_base` 使用说明

EinTao
2022-11-26 / 0 评论 / 0 点赞 / 23 阅读 / 526 字

目前整个报表开发已经全部使用新版预览加导出,但是存在问题是部分报表的头没有固定,每次创建新的报表时都需要写新的js去渲染、xml书写繁琐、维护困难、浪费时间。在这个背景下推出 dy_report_base简化报表开发。

使用说明

py定义

直接继承 dy.report.base 添加
_report_name = "报表名称"
_table_template = "预览报表文件的name"
_excel_print = "xls/xlsx"

使用时只需要书写报表需要的字段及逻辑、
注意xls和xlsx重写的方法不同具体请参考源码。
数据准备 `def get_excel_data(self): return []`
excel生成:`def draw_xlswriter_worksheet`

xml定义

同之前不同的是只需要写一个table即可,templates的name与py中
`_table_template`一致,具体使用请参考设备模块

js使用

目前正常需求不需要写新的js,其中预制了行点击操作,前端会吧py 中反
回的form参数、tr上携带的所有参数返回,方法名为 
`open_action_form(self,vals,form)`
如需要个性化使用,请继承 `dy_base.dy_report_base` 添加自定义方法		

新增加前台excel报表预览功能

dy_report_base 不同的是该写法继承dy.report.spreadsheet

私有属性:_report_name = 默认sheet名称/报表显示名称

重写 build_spreadsheet_data 进行数据的绘制

ws = self.add_worksheet() # 可选参数:name:sheet页名称,style:页签内style样式集合
添加行函数:
ws.write_cell(row,cell,value,style) #style可选
ws.write_merge_cell(row_start,cell_start,row_end,cell_end,value,style) #style可选
#固定头行:
ws.set_freeze('A2')
#设置样式
ws.set_styles(styles)
#设置行数及行高(非必要可不使用)
ws.set_row(style)
#设置列宽(非必要可不使用)
"""
默认26列且第一列宽度200:{'0':{'width':200}}
总共32列且第一列宽度200:{'len':32,'0':{'width':200}}
"""
ws.set_cols(style)
0

评论区