simplejf


导出Excel

<h3>说明</h3> <ul> <li>导入和导出是系统中最常见的操作。系统中所有的导出均使用Excel方式导出</li> <li>导出使用的jar包为hutool-poi</li> </ul> <h5>步骤1</h5> <p>在前端页面中添加导出按钮,并且给予事件</p> <pre><code class="language-html">&lt;a class="btn btn-success btn-xs no-border" onclick="$.table.export()"&gt; &lt;i class="fa fa-download"&gt;&lt;/i&gt; 导出 &lt;/a&gt;</code></pre> <p>其中export内部就是提交查询表单:</p> <pre><code class="language-javascript">export: function(){ $.alert.confirm("最多只能导出5万条数据,确认导出?",function(){ var json = $.form.serializeObject() || {}; $.common.wpost($.table._option.exportUrl,json,true); }); },</code></pre> <p>配置导出链接</p> <pre><code class="language-javascript">$.table.init({ modalName:"日志", modalType:"log", exportUrl:path + "/log/export" // 可以省略,默认就是这个地址,具体原因,请参考前端章节。 });</code></pre> <h5>步骤2</h5> <p>在项目webapps/export/tpl目录下,创建导出模板,例如:log.tpl,该模板完成符合Jfinal Enjoy模板引擎规范。更复杂的导出完全可以通过Enjoy模板引擎来定制。</p> <ul> <li>第1,2行定义了常量,方便导出时候可以自由转换字段。</li> <li>第3行定义导出的表头信息,用英文逗号分隔</li> <li> <p>循环模板数据,开始导出数据。注意如果是时间格式,可以通过 <code>x.create_time.toDate()</code> 完成时间转换</p> <h1>set(log_status={-1:&quot;全部&quot;,1:&quot;成功&quot;,2:&quot;失败&quot;})</h1> <h1>set(log_op={10:&quot;登录&quot;,20:&quot;查询&quot;,30:&quot;新增&quot;,40:&quot;修改&quot;,50:&quot;删除&quot;,60:&quot;导出&quot;,70:&quot;导入&quot;})</h1> <p>操作用户,操作IP,IP归属地,操作URL,类型,状态,描述,操作时间</p> <h1>for(x : datas)</h1> <pre><code>#(x.create_user),#(x.log_ip),#(x.ip_location),#(x.log_url),#(log_op[x.log_op]),#(log_status[x.status]),#(x.log_desc),#(x.create_time.toDate())</code></pre> <h1>end</h1> </li> </ul> <h5>步骤3</h5> <p>在查询待导出的数据,调用模板导出。</p> <ul> <li>此例子中使用了Modal层paginate 方法,只是举例,也可以自己来实现方法。但是要将查询结果出入到CSVRender 中。</li> </ul> <pre><code class="language-java">// 注意此时 PageOrder 不能通过 getAttr("PageOrder") 获取,因为不是分页,分页拦截器没有办法封装 PageOrder对象。 public void export() throws Exception{ Log log = getModel(Log.class); log.put("start_time", getDatePara2Long("start_time")); Page&lt;Log&gt; page = Log.dao.paginate(new PageOrder(), log); render(new CSVRender("log.tpl",page.getList())); }</code></pre>

页面列表

ITEM_HTML