﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-kxbin-文章分类-皕杰报表</title><link>http://www.blogjava.net/kxbin/category/50167.html</link><description>创出一片天地</description><language>zh-cn</language><lastBuildDate>Tue, 27 Dec 2011 03:23:04 GMT</lastBuildDate><pubDate>Tue, 27 Dec 2011 03:23:04 GMT</pubDate><ttl>60</ttl><item><title>如何将一个List对象传递给皕杰报表在页面展示（二）</title><link>http://www.blogjava.net/kxbin/articles/366950.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 21 Dec 2011 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/366950.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/366950.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/366950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/366950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/366950.html</trackback:ping><description><![CDATA[参照两个文件<br />1.java文件，继承CustomDataSet，文件下载<a title="java文件" href="/Files/kxbin/CustomDs.rar">java文件</a><br />2. 皕杰报表，存在参数及变量，文件下载<a title="皕杰报表下载" href="/Files/kxbin/自定义数据集.rar">皕杰报表下载</a><img src ="http://www.blogjava.net/kxbin/aggbug/366950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-12-21 16:53 <a href="http://www.blogjava.net/kxbin/articles/366950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何将一个List对象传递给皕杰报表在页面展示</title><link>http://www.blogjava.net/kxbin/articles/366944.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 21 Dec 2011 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/366944.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/366944.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/366944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/366944.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/366944.html</trackback:ping><description><![CDATA[1.创建List对象，访问皕杰报表<br /><div><div>List list = systemService.find(hql); //查询结果集，放到list对象中</div><div>request.getSession().setAttribute("list", list);//结果集放到session容器中，<br /><span style="color: red; ">注意：为啥将结果集放到session容器，而不放入request对象中？查询的结果集过多，涉及到翻页，使用request对象，翻页后不能获得list对象中的内容。</span></div><div>request.getRequestDispatcher("/ReportEmitter?rpt=contractState.brt").forward(request, response);<br />2.继承ContractStateDataSet，将结果集放到报表中<br />&nbsp;package bios.report.user.dev.demo.dataset;</div><div><div></div><div>import java.util.ArrayList;</div><div>import java.util.Iterator;</div><div>import java.util.List;</div><div>import java.util.Set;</div><div></div><div>import javax.servlet.http.HttpSession;</div><div></div><div>import bios.report.engine.api.CustomDataSet;</div><div>import bios.report.engine.api.UserContext;</div><div></div><div>import com.dhcc.itsm.document.model.Contract;</div><div>import com.dhcc.itsm.document.model.ContractPay;</div><div>import com.dhcc.itsm.document.model.ContractSettlement;</div><div></div><div>/**</div><div>&nbsp;* @author dhcc</div><div>&nbsp;*/</div><div>public class ContractStateDataSet implements CustomDataSet{</div><div></div><div><span style="white-space:pre">	</span>private String[] metaData;<span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private List&lt;Contract&gt; conList = new ArrayList&lt;Contract&gt;();</div><div><span style="white-space:pre">	</span>@SuppressWarnings("unchecked")</div><div><span style="white-space:pre">	</span>private List data;</div><div></div><div><span style="white-space:pre">	</span>public String[] getMetaData() {</div><div><span style="white-space:pre">		</span>return metaData;</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public int getRowCount() {</div><div><span style="white-space:pre">		</span>return data.size();</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public Object[] getRowData(int rowIndex) {</div><div><span style="white-space:pre">		</span>return (Object[])data.get(rowIndex);</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>@SuppressWarnings("unchecked")</div><div><span style="white-space:pre">	</span>public void applyParams(Object[] arg0) {</div><div><span style="white-space:pre">		</span>HttpSession req = UserContext.getCurrentUserContext().getRequest().getSession();</div><div><span style="white-space:pre">		</span>conList = (List&lt;Contract&gt;) req.getAttribute("list");</div><div><span style="white-space:pre">		</span>metaData = new String[]{"合同名称","合同金额","结算日期","结算金额","结算合计","付款日期","付款金额","付款合计","施工单位"};</div><div><span style="white-space:pre">		</span>data = new ArrayList();</div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>if(conList != null &amp;&amp; !conList.isEmpty()){</div><div><span style="white-space:pre">				</span>for(int i=0;i&lt;conList.size();i++){</div><div><span style="white-space:pre">					</span>Contract con = conList.get(i);</div><div><span style="white-space:pre">					</span>String[] settleStr = getSettle(con.getSettleSet());//结款信息放到字符串中</div><div><span style="white-space:pre">					</span>String[] payStr = getPay(con.getPaySet()); //付款信息放到字符串中</div><div><span style="white-space:pre">					</span>data.add(new Object[]{con.getContractName(),con.getMoney(),settleStr[0],settleStr[1],</div><div><span style="white-space:pre">							</span>Double.parseDouble(settleStr[2]),payStr[0],payStr[1],Double.parseDouble(payStr[2]),con.getYiFang()});</div><div><span style="white-space:pre">				</span>}</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>} catch (Exception e) {</div><div><span style="white-space:pre">			</span>e.printStackTrace();</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public List&lt;Contract&gt; getConList() {</div><div><span style="white-space:pre">		</span>return conList;</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public void setConList(List&lt;Contract&gt; conList) {</div><div><span style="white-space:pre">		</span>this.conList = conList;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>/**</div><div><span style="white-space:pre">	</span> * 结款信息放到放到字符串中</div><div><span style="white-space:pre">	</span> * @param settleList</div><div><span style="white-space:pre">	</span> * @return</div><div><span style="white-space:pre">	</span> */</div><div><span style="white-space:pre">	</span>@SuppressWarnings("unchecked")</div><div><span style="white-space:pre">	</span>private String[] getSettle(Set&lt;ContractSettlement&gt; settleSet){</div><div><span style="white-space:pre">		</span>String[] settleStr = new String[3];</div><div><span style="white-space:pre">		</span>String settleTemp = "\n";//结算日期</div><div><span style="white-space:pre">		</span>String moneyStr ="\n";//结算金额</div><div><span style="white-space:pre">		</span>double settleSum = 0;//结款总金额</div><div><span style="white-space:pre">		</span>if(settleSet != null &amp;&amp; !settleSet.isEmpty()){</div><div><span style="white-space:pre">			</span>Iterator it = settleSet.iterator();</div><div><span style="white-space:pre">			</span>while(it.hasNext()){</div><div><span style="white-space:pre">				</span>ContractSettlement settle = (ContractSettlement) it.next();</div><div><span style="white-space:pre">				</span>settleTemp += settle.getBalanceDate() +"\n\n";</div><div><span style="white-space:pre">				</span>moneyStr += settle.getMoney()+"\n\n";</div><div><span style="white-space:pre">				</span>settleSum +=Double.parseDouble(settle.getMoney());</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>settleStr[0]=settleTemp;</div><div><span style="white-space:pre">		</span>settleStr[1]=moneyStr;</div><div><span style="white-space:pre">		</span>settleStr[2]=String.valueOf(settleSum);</div><div><span style="white-space:pre">		</span>return settleStr;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>/**</div><div><span style="white-space:pre">	</span> * 付款信息放到放到字符串中</div><div><span style="white-space:pre">	</span> * @param settleList</div><div><span style="white-space:pre">	</span> * @return</div><div><span style="white-space:pre">	</span> */</div><div><span style="white-space:pre">	</span>@SuppressWarnings("unchecked")</div><div><span style="white-space:pre">	</span>private String[] getPay(Set&lt;ContractPay&gt; paySet){</div><div><span style="white-space:pre">		</span>String[] payStr = new String[3];</div><div><span style="white-space:pre">		</span>String payTemp = "\n";//</div><div><span style="white-space:pre">		</span>String moneyStr ="\n";</div><div><span style="white-space:pre">		</span>double paySum = 0;//付款总金额</div><div><span style="white-space:pre">		</span>if(paySet != null &amp;&amp; !paySet.isEmpty()){</div><div><span style="white-space:pre">			</span>Iterator it = paySet.iterator();</div><div><span style="white-space:pre">			</span>while(it.hasNext()){</div><div><span style="white-space:pre">				</span>ContractPay pay = (ContractPay) it.next();</div><div><span style="white-space:pre">				</span>payTemp += pay.getPayDate() +"\n\n";</div><div><span style="white-space:pre">				</span>moneyStr += pay.getMoney()+"\n\n";</div><div><span style="white-space:pre">				</span>paySum +=Double.parseDouble(pay.getMoney());</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>payStr[0]=payTemp;</div><div><span style="white-space:pre">		</span>payStr[1]=moneyStr;</div><div><span style="white-space:pre">		</span>payStr[2]=String.valueOf(paySum);</div><div><span style="white-space:pre">		</span>return payStr;</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span></div><div>}<br />3.皕杰报表设置及下载<br /><div><a title="皕杰报表" href="http://www.blogjava.net/Files/kxbin/contractState.rar">皕杰报表</a>下载</div></div></div><div></div></div><img src ="http://www.blogjava.net/kxbin/aggbug/366944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-12-21 16:33 <a href="http://www.blogjava.net/kxbin/articles/366944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给皕杰报表每行加序号</title><link>http://www.blogjava.net/kxbin/articles/366346.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 14 Dec 2011 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/366346.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/366346.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/366346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/366346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/366346.html</trackback:ping><description><![CDATA[<div><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><strong>需求1：给报表的每一行都加上序号，并且分页后连续</strong></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">打开报表设计器，设计如下报表：</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb.png" border="0" alt="image" width="456" height="72" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">将a2单元格的值设置为ds1.#0,并将a2单元格的左主格设置成b2，预览效果如下：（假设每页20条记录的分页方式）</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image1.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb1.png" border="0" alt="image" width="217" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a>&nbsp;<a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image2.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb2.png" border="0" alt="image" width="217" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">我们可以看到，序号已经产生了，并且是第二页的序号是与第一页连续的。</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">可是在有些情况下希望分页后序号不连续，而要重新计算，这怎么实现呢？下面来看看我今天分析的第二个小技巧：</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><strong>需求2：给报表的每一行都加上序号，并且每页都从1开始计算</strong></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">要实现这样的需求，我们可以用给序号取模的原理来让 每页都从1开始排序，具体操作是把A2单元格中的表达式换成：=ds1.#0%2，然后我们看一下发布后的效果：</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image3.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb3.png" border="0" alt="image" width="225" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a>&nbsp;<a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image4.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb4.png" border="0" alt="image" width="223" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">我们可以看到，第二页还是从1开始排序的，基本满足了要求！</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">等等，怎么第20行变成0了？这可不行！！！</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">由于是对20取模运算，所以第20行的序号就变成0了，我们可以在a2单元格的显示值中进行设置，当值为0的时候，让其显示为20，这样问题就解决，显示值表达式：=if(@value=0,20,@value);再次预览一下效果如下：</p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image5.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb5.png" border="0" alt="image" width="222" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a>&nbsp;<a href="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image6.png" style="color: #104991; text-decoration: none; "><img title="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/08/image_thumb6.png" border="0" alt="image" width="223" height="244" style="display: inline; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; " /></a></p><p style="color: #232323; font-family: Arial, ����; font-size: 12px; line-height: normal; background-color: #ffffff; ">到这里，全部需求满足！！下次我要分享另外一种序号报表制作方式</p></div><img src ="http://www.blogjava.net/kxbin/aggbug/366346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-12-14 16:21 <a href="http://www.blogjava.net/kxbin/articles/366346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在编辑查询SQL中使用if语句（皕杰报表）</title><link>http://www.blogjava.net/kxbin/articles/365117.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Tue, 29 Nov 2011 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/365117.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/365117.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/365117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/365117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/365117.html</trackback:ping><description><![CDATA[<div><div>1.如何接收为空的参数。如果参数的值为空，则and ias.origin='' "，如果参数的值不为空，则&nbsp;and ias.origin=?<br />="select * from itsm_assets ias,itsm_department ide</div><div>where ias.del = '0'</div><div>&nbsp;&nbsp; &nbsp; &nbsp;and ias.department=ide.id &nbsp; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp;and ide.name=?"</div><div>&nbsp;&nbsp; &nbsp; &nbsp;+if((@origin==null or @origin=='')," and ias.origin='' "," and ias.origin=? ") +</div><div>"order by ias.date_recorded desc"</div></div><img src ="http://www.blogjava.net/kxbin/aggbug/365117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-11-29 15:06 <a href="http://www.blogjava.net/kxbin/articles/365117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>皕杰报表（BIOS Report）中如何使用html元素</title><link>http://www.blogjava.net/kxbin/articles/364674.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 23 Nov 2011 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/364674.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/364674.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/364674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/364674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/364674.html</trackback:ping><description><![CDATA[<div><span style="color: #29303b; font-family: 'Trebuchet MS', Georgia, Arial, fantasy; font-size: 13px; line-height: 18px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; "><a href="http://www.bijetsoft.com/" target="_blank" style="color: #000000; ">皕杰报表</a>的单元格有一个特性，就是可以设定单元格的类型，我们通常编辑单元格的值和表达式时，默认的单元格数据类型是文本。上面所说的情况则要用到超文本的单元格。下面给出一个例子来实际说明一下用法。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; ">一个简单的报表，有四列，分别为客户编号、客户名称、联系电话和客户类型，现在希望在将客户编号显示为复选框，可以自由选中需要的行。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; ">设计步骤：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; ">1、将A3单元格的属性&#8220;是否HTML&#8221;设置为&#8220;是&#8221;，再使用html语法设计出checkbox样式风格"&lt;input type=&#8217;checkbox&#8217; name=&#8217;checkbox&#8217; value=&#8217;"+ds1.select(CUSTOMER_ID)+"&#8217;/&gt;"。如下图所示：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/07/image.png" style="color: #8a3207; text-decoration: none; "><img title="image" alt="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/07/image_thumb.png" border="0" height="483" width="455" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; display: inline; " /></a></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; ">2、发布到网页上，可以看到，第一列出现了复选框</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5em; "><a href="http://biworld.org/wp-content/uploads/biworld.org/2009/07/image1.png" style="color: #8a3207; text-decoration: none; "><img title="image" alt="image" src="http://biworld.org/wp-content/uploads/biworld.org/2009/07/image_thumb1.png" border="0" height="276" width="454" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; display: inline; " /></a></p></span></div><img src ="http://www.blogjava.net/kxbin/aggbug/364674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-11-23 22:34 <a href="http://www.blogjava.net/kxbin/articles/364674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>皕杰报表小技巧：巧用空值判断函数</title><link>http://www.blogjava.net/kxbin/articles/364661.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 23 Nov 2011 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/364661.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/364661.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/364661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/364661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/364661.html</trackback:ping><description><![CDATA[<div><span style="color: #5e88d0; font-family: Arial; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><p style="line-height: normal; ">在设计企业报表时，报表单元格的表达式中经常需要用到空值判断，例如在单元格的显示值属性中，判断当单元格的值为空时，显示为0，否则显示单元格的真实值，等等。一般这种情况下，用户习惯写的表达式是： if(@value=null, 0, @value)。</p><p style="line-height: normal; ">如果我们把@value换成更加复杂的表达式，例如if(ds1.getone(&#8230;)==null, 0, ds1.getone(&#8230;))，大家可以看出，这种算法明显很慢，需要把ds1.getone(&#8230;)这样的复杂表达式运算两次，而如果采用nvl() 则可以避免这个问题。</p><p style="line-height: normal; ">单元格函数：nvl()</p><p style="line-height: normal; ">函数说明：&nbsp;<br style="line-height: normal; " />根据第一个表达式的值是否为空，若为空则返回指定值</p><p style="line-height: normal; ">语法：&nbsp;<br style="line-height: normal; " />nvl( valueExp1, valueExp2 )</p><p style="line-height: normal; ">参数说明：&nbsp;<br style="line-height: normal; " />valueExp1&#8211;需要计算的表达式，其结果不为空时返回其值&nbsp;<br style="line-height: normal; " />valueExp2&#8211;需要计算的表达式，当valueExp1结果为空时返回此值</p><p style="line-height: normal; ">返回值：&nbsp;<br style="line-height: normal; " />valueExp1或valueExp2的结果值</p><p style="line-height: normal; ">示例：&nbsp;<br style="line-height: normal; " />例1：nvl(A1,&#8221;&#8221;) 表示当A1为空时，返回空串，否则返回A1</p><p style="line-height: normal; ">例2：nvl(@value,0) 表示当当前格为空时返回0，否则返回当前格的值</p><p style="line-height: normal; ">应用举例：</p><p style="line-height: normal; ">正确写法，速度快:</p><p style="line-height: normal; ">nvl(ds1.getone(&#8230;), 0)&nbsp;<br style="line-height: normal; " />nvl(a1[&#8230;&#8230;]{&#8230;&#8230;}, &#8220;&#8211;&#8221;)</p><p style="line-height: normal; ">错误写法，速度慢:</p><p style="line-height: normal; ">if(ds1.getone(&#8230;)==null, 0, ds1.getone(&#8230;))&nbsp;<br style="line-height: normal; " />if(a1[&#8230;&#8230;]{&#8230;&#8230;}==null, &#8220;&#8211;&#8221;, a1[&#8230;&#8230;]{&#8230;&#8230;})</p></span></div><img src ="http://www.blogjava.net/kxbin/aggbug/364661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-11-23 18:09 <a href="http://www.blogjava.net/kxbin/articles/364661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>皕杰报表的斜线单元格设计</title><link>http://www.blogjava.net/kxbin/articles/364612.html</link><dc:creator>kxbin</dc:creator><author>kxbin</author><pubDate>Wed, 23 Nov 2011 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/kxbin/articles/364612.html</guid><wfw:comment>http://www.blogjava.net/kxbin/comments/364612.html</wfw:comment><comments>http://www.blogjava.net/kxbin/articles/364612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kxbin/comments/commentRss/364612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kxbin/services/trackbacks/364612.html</trackback:ping><description><![CDATA[<div><span style="line-height: 22px; color: #555555; font-family: 'ms shell dlg'; font-size: 12px; "><div align="left" style="font-size: 12px; word-wrap: break-word; ">在中国式报表的设计中，经常会使用到斜线单元格，如：</div><div align="left" style="font-size: 12px; word-wrap: break-word; "><div align="left" style="font-size: 12px; word-wrap: break-word; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height="58" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_1.JPG" width="165" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></div><a href="http://www.bijetsoft.com/" target="_blank" style="color: #9f8248; text-decoration: none; ">皕杰报表</a>的斜线单元格有二分斜线和三分斜线，分别将一个单元格分为两部分和三部分，其中，二分斜线单元格又分为二分正斜线和二分反斜线，三分斜线单元格分为左上三分线和右下三分线。这里对<a href="http://www.bijetsoft.com/" style="color: #9f8248; text-decoration: none; ">皕杰报表</a>的斜线单元格做个简单介绍。<br style="clear: both; " />斜线单元格设计的第一步，是要将单元格的类型设置为&#8220;斜线单元格&#8221;。在单元格上单击鼠标右键，弹出右键菜单，选择【设置类型】&#8212;&gt;【斜线单元格】。<br style="clear: both; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height="247" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_2.JPG" width="236" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="clear: both; " />斜线单元格设计的第二步，是选择斜线类型。用户根据需要选择斜线类型，四种斜线类型如下图：<br style="clear: both; " /><img height="80" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_3.JPG" width="115" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<img height="84" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_4.JPG" width="115" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<img height="87" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_5.JPG" width="115" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<img height="84" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_6.JPG" width="116" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="clear: both; " />斜线单元格设计的第三步，在斜线单元格内添加文字。单元格中每个区域的文字用&#8220;,&#8221;隔开，需要注意的是，这里的逗号是英文标点的逗号。如：&#8220;地区,销售额,时间&#8221;，单元格效果如下：<br style="clear: both; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height="66" alt="" src="http://images.cnblogs.com/cnblogs_com/pighome/2_7.JPG" width="128" border="0" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /><br style="clear: both; " />这样，斜线单元格就设计好了。<br style="clear: both; " /><a href="http://www.bijetsoft.com/" style="color: #9f8248; text-decoration: none; ">皕杰报表</a>的斜线单元格有一个特点，就是在导出EXCEL表格的时候，是以斜线和文本的形式显示，这样，在导出EXCEL表格之后，无论横向或纵向拉伸斜线单元格，斜线和文字会根据单元格的变化来调整长度和位置。</div></span></div><img src ="http://www.blogjava.net/kxbin/aggbug/364612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kxbin/" target="_blank">kxbin</a> 2011-11-23 09:23 <a href="http://www.blogjava.net/kxbin/articles/364612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>