目前整个报表开发已经全部使用新版预览加导出,但是存在问题是部分报表的头没有固定,每次创建新的报表时都需要写新的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)
评论区