<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>博计报表↓专注于提升.net报表项目的开发效率</title>
	<atom:link href="http://www.bonzerreport.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bonzerreport.com</link>
	<description>专注于提升.net报表项目的开发效率</description>
	<pubDate>Thu, 29 Jul 2010 02:32:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>授权问题与解决办法汇总（二）</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e6%8e%88%e6%9d%83%e9%97%ae%e9%a2%98%e4%b8%8e%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95%e6%b1%87%e6%80%bb%ef%bc%88%e4%ba%8c%ef%bc%89.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e6%8e%88%e6%9d%83%e9%97%ae%e9%a2%98%e4%b8%8e%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95%e6%b1%87%e6%80%bb%ef%bc%88%e4%ba%8c%ef%bc%89.html#comments</comments>
		<pubDate>Thu, 29 Jul 2010 02:10:53 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[XML文件]]></category>

		<category><![CDATA[升级版本]]></category>

		<category><![CDATA[授权]]></category>

		<category><![CDATA[设计器]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=457</guid>
		<description><![CDATA[本文提出了授权过程中出现的问题，并给予了相应的解决办法... ]]></description>
			<content:encoded><![CDATA[<div class="entry">
<p><span style="font-size: 24px;"><strong>设计器授权问题</strong></span></p>
<p>打开设计器，选择设计器授权的时候报”无效的logo文件”，无论是重做授权还是更新jar包都不能解决问题。</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-007p1b8c2980.png" alt="" width="387" height="149" /></p>
<p><strong>问题出现原因</strong></p>
<p>当用尽各种方法都未能解决问题时，要关注以下问题的提示信息，如下：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-008n68e84f36.png" alt="" width="411" height="146" /></p>
<p>请注意红框内的内容，发现在bonzer.gif后面多了一个空格，这就是产生问题的原因。</p>
<p><span style="font-family: 宋体;"><strong>解决办法</strong></span></p>
<p><span style="font-family: 宋体;">让销售重新做一份bonzer.gif后面没有空格的授权即可。</span></p>
<p><span style="font-family: 宋体;">这个问题虽然不是什么难题，但也必须注意，除了操作过程中大家要细心以外，在写程序的时候也要考虑周全。</span></p>
<p><span style="font-size: 24px; font-family: 宋体;"><strong>3.5升级至4.0及其以上版本问题</strong></span></p>
<p><span style="font-family: 宋体;">客户方报表升级后，一直有授权不对的问题，指导客户放置对应的位置和一些修改文件的操作后，问题仍然存在。</span></p>
<p><span style="font-family: 宋体;"><strong>问题出现原因</strong></span></p>
<p><span style="font-family: 宋体;">如果报授权不匹配的错误，而且是产品升级以后才出现的，那说明在升级过程中，用户并未将旧系统中的相关配置或授权文件完全删除。这样需要检查web.xml文件以及reportConfig.xml文件以及一些缓存文件等。</span></p>
<p><span style="font-family: 宋体;">经检查，客户的web.xml文件确实存有3.5的信息，这会导致授权错误。</span></p>
<p><span style="font-family: 宋体;"><strong>解决办法</strong></span></p>
<p><span style="font-family: 宋体;">将web.xml中关于3.5的信息完全删除，并配置reportConfig.xml文件，将正确的授权放到相应位置即可。</span></p>
<p><span style="font-family: 宋体;">这个问题不是什么特别的问题，但是我们在解决过程中明白了一个道理，任何操作都有可能导致最后的结果出现问题，所以在实施过程中，应该尽量做到考虑全面、操作细致。</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e6%8e%88%e6%9d%83%e9%97%ae%e9%a2%98%e4%b8%8e%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95%e6%b1%87%e6%80%bb%ef%bc%88%e4%ba%8c%ef%bc%89.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>reportConfig.xml两种数据源连接的配置方式</title>
		<link>http://www.bonzerreport.com/knowledge/install/reportconfigxml%e4%b8%a4%e7%a7%8d%e6%95%b0%e6%8d%ae%e6%ba%90%e8%bf%9e%e6%8e%a5%e7%9a%84%e9%85%8d%e7%bd%ae%e6%96%b9%e5%bc%8f.html</link>
		<comments>http://www.bonzerreport.com/knowledge/install/reportconfigxml%e4%b8%a4%e7%a7%8d%e6%95%b0%e6%8d%ae%e6%ba%90%e8%bf%9e%e6%8e%a5%e7%9a%84%e9%85%8d%e7%bd%ae%e6%96%b9%e5%bc%8f.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 02:03:27 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[安装部署]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[dataSource]]></category>

		<category><![CDATA[jdbc]]></category>

		<category><![CDATA[jndi]]></category>

		<category><![CDATA[reportConfig.xml]]></category>

		<category><![CDATA[数据源配置]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=456</guid>
		<description><![CDATA[在reportConfig.xml配置文件中,提供了两种数据源连接的配置方式,本文简要介绍了这两种方法... ]]></description>
			<content:encoded><![CDATA[<p>在reportConfig.xml配置文件中,提供了两种数据源连接的配置方式,如下：</p>
<p><strong>1.jndi数据源配置（即在dataSource中配置）</strong></p>
<p>此配置适用于在j2ee的服务器中配置了jndi连接池，比如：tomcat服务器下在conf\Catalina\localhost配置了连接池，则可以通过reportConfig.xml的jndi配置连接数据源。</p>
<p>格式如下：</p>
<p>&lt;config&gt;<br />
&lt;name&gt;dataSource&lt;/name&gt;<br />
&lt;value&gt;jdbc/test,oracle;exercise,sqlsvr,1,iso8859-1,GBK,0&lt;/value&gt;<br />
&lt;/config&gt;</p>
<p>关于reportConfig.xml中的jndi数据源的配置详细如下：</p>
<p>数据源的JNDI名称,数据库类型[,取数时是否需要转换编码,数据库字符集编码,显示报表时的字符集编码][,SQL是否需要转码];[重复]……</p>
<p>另外需要注意的是，这里的数据源的jndi名称要与连接池中配置的jndi数据源名称一致。</p>
<p><strong>2、jdbc直连数据源配置：</strong></p>
<p>此配置适用于没有在j2ee服务器上配置jndi连接池。</p>
<p>详细的配置方法如下：</p>
<p>在&lt;reportConfig&gt;&lt;/reportConfig&gt;加入如下的配置：</p>
<p>&lt;jdbc-ds-configs&gt;<br />
&lt;jdbc-ds-config&gt;<br />
&lt;name&gt;db2&lt;/name&gt;<br />
&lt;db-type&gt;db2&lt;/db-type&gt;<br />
&lt;connection-url&gt;jdbc:db2://192.168.0.217:50000/sample&lt;/connection-url&gt;<br />
&lt;driver-class&gt;com.ibm.db2.jcc.DB2Driver&lt;/driver-class&gt;<br />
&lt;user-name&gt;administrator&lt;/user-name&gt;<br />
&lt;password&gt;runqian&lt;/password&gt;<br />
&lt;db-charset&gt;gbk&lt;/db-charset&gt;<br />
&lt;client-charset&gt;gbk&lt;/client-charset&gt;<br />
&lt;extend-properties&gt;&lt;/extend-properties&gt;<br />
&lt;/jdbc-ds-config&gt;<br />
&lt;/jdbc-ds-configs&gt;</p>
<p>注：读取配置文件的时候，会首先读取dataSource中jndi的配置，如果dataSource没有相关的数据源配置才会读取jdbc直连配置的数据源。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/install/reportconfigxml%e4%b8%a4%e7%a7%8d%e6%95%b0%e6%8d%ae%e6%ba%90%e8%bf%9e%e6%8e%a5%e7%9a%84%e9%85%8d%e7%bd%ae%e6%96%b9%e5%bc%8f.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>多个横向扩展区域的报表的设计方法</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%a4%9a%e4%b8%aa%e6%a8%aa%e5%90%91%e6%89%a9%e5%b1%95%e5%8c%ba%e5%9f%9f%e7%9a%84%e6%8a%a5%e8%a1%a8%e7%9a%84%e8%ae%be%e8%ae%a1%e6%96%b9%e6%b3%95.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%a4%9a%e4%b8%aa%e6%a8%aa%e5%90%91%e6%89%a9%e5%b1%95%e5%8c%ba%e5%9f%9f%e7%9a%84%e6%8a%a5%e8%a1%a8%e7%9a%84%e8%ae%be%e8%ae%a1%e6%96%b9%e6%b3%95.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 01:55:18 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[to函数]]></category>

		<category><![CDATA[valueat函数]]></category>

		<category><![CDATA[嵌入式]]></category>

		<category><![CDATA[引入式]]></category>

		<category><![CDATA[强制换行]]></category>

		<category><![CDATA[横向扩展]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=454</guid>
		<description><![CDATA[本文介绍多个横向扩展区域的报表的设计方法... ]]></description>
			<content:encoded><![CDATA[<p>在报表的设计过程中，会遇到一个复杂报表中有多个区域，这样的报表如果只包含纵向的扩展，设计起来还是比较容易的，但是当遇到有一个或者多个横向扩展的报表的话，如果按照原来的设计方法进行设计，不仅不够美观，而且数据可能不够准确，所以这类报表不能按照原有的方法来实现，需要根据具体的需求进行分析，从而找到合适的设计方法。</p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">当报表出现横向扩展的时候，导致横向扩展所在列也横向扩展，这样就会影响此扩展格的上方和下方的单元格，这个就是问题产生的原因。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">1<strong>：嵌入式或者引入式的主子表</strong></span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">此种方法由于子报表放在固定了宽度的单元格中，所以子报表在扩展的时候不会影响到其他单元格，这样，在子报表的横向扩展就对其他区域有什么影响了。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">两种报表浏览样式如下（这两种报表的具体设计方法请参照初级设计教程）：</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-004n4c2c15f8.png" alt="" width="382" height="302" /></span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">可以看到两个报表都有横向扩展而且展示出来的结果是不一样的。</span><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">嵌入式主子表的优点是固定了单元格的大小，而由于每个单元格内容都不同，所以有可能出现列无法对其的现象；引入式主子表没有出现这个问题，但是如果横向扩展过多，也会影响美观。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><strong>2：横向扩展的强制换行</strong></span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">这种方法使得所有区域的报表都是横向扩展的，这样就可以控制横向扩展了多少单元格，让报表可以只横向扩展固定个数的单元格就进行换行，这样就可以避免上述不美观的情况。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">这种横向扩展强制换行方法有以下两种：</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">（a）：使用to函数进行强制换行，这种方法可以参考强制换行这篇文章，里面有详细介绍。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">（b）：使用to函数加valueat函数，实现动态的取数，这样也可以实现报表的强制换行，这种方法可以参考valueat函数的使用方法和相关文章的介绍。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">注意：由于使用to函数实现了横向扩展固定的列数，当报表区域过多时，可能会出现有的单元格根本不需要扩展但也随着横向扩展了的情况，这样就需要对报表进行修改了。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">3：这种方法是将以上两种方法进行中和，将有横向扩展的子报表进行横向的强制换行，这样在显示的时候就在横向上进行了控制，既取到了想要的数据，又使得页面变得美观。</span></p>
<p><span style="font-family: Times New Roman; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">综合比较上面的几种方法，如果需求比较简单，可以选择方法1和2，设计起来比较简单；如果需求比较复杂而且对美观度要求比较高的话，可以采用方法3。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%a4%9a%e4%b8%aa%e6%a8%aa%e5%90%91%e6%89%a9%e5%b1%95%e5%8c%ba%e5%9f%9f%e7%9a%84%e6%8a%a5%e8%a1%a8%e7%9a%84%e8%ae%be%e8%ae%a1%e6%96%b9%e6%b3%95.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表按内容类别分页展现问题</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%8c%89%e5%86%85%e5%ae%b9%e7%b1%bb%e5%88%ab%e5%88%86%e9%a1%b5%e5%b1%95%e7%8e%b0%e9%97%ae%e9%a2%98.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%8c%89%e5%86%85%e5%ae%b9%e7%b1%bb%e5%88%ab%e5%88%86%e9%a1%b5%e5%b1%95%e7%8e%b0%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 01:48:05 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[分类]]></category>

		<category><![CDATA[分页]]></category>

		<category><![CDATA[左主格]]></category>

		<category><![CDATA[行后分页]]></category>

		<category><![CDATA[页面展现]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=453</guid>
		<description><![CDATA[最近发现一些客户的需求，用字符串组参数传递给报表某个参数的若干值，然后报表根据传过来的值分类，每一个分类在页面上形成一个报表，并且占一页，导出excel的时候也分页显示，下面就... ]]></description>
			<content:encoded><![CDATA[<p>最近发现一些客户的需求，用字符串组参数传递给报表某个参数的若干值，然后报表根据传过来的值分类，每一个分类在页面上形成一个报表，并且占一页，导出excel的时候也分页显示，下面就用一个简单的小例子实现上面的需求。</p>
<p><strong>第一步：新建一张报表，连接demo数据源。</strong></p>
<p>新建一张报表，连接sql数据源，增加一个参数arg1，类型为字符串组；然后增加一个数据集ds1，数据集的sql为：SELECT 类别.类别ID,类别.类别名称,类别.说明 FROM 类别 ，给数据集增加两个参数，如下图所示：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-010p2d23e00f.png" alt="" width="553" height="395" /></p>
<p>然后增加数据集的检索条件：类别.类别ID in (?) or ? is null，最后数据集的sql样式如下图所示：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-011n4192c1d2.png" alt="" width="554" height="387" /><br />
<strong>第二步：设计报表</strong></p>
<p>设计一张如下图所示的报表，报表的上下两行都为空白行：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-012n438e763d.png" alt="" width="553" height="381" /></p>
<p><strong>第三步：设置行后分页和左主格</strong></p>
<p>设置A3、B3、C3单元格的左主格为A2，然后设置第三行为行后分页，如下图所示：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-013na113258.png" alt="" width="576" height="356" /></p>
<p><strong>第四步：制作参数模板</strong></p>
<p>新建一张可以填报的普通报表，连接demo数据源，然后新建一个数据集ds1，数据集的sql为：SELECT 类别.类别ID,类别.类别名称 FROM 类别，如下图所示，设置B1单元格的编辑风格为下拉数据集，具体的样式如下图所示：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-014p4ba2085d.png" alt="" width="553" height="394" /></p>
<p>然后设置B1的变量名为arg1，设置的方法见下图：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-015n5420c4ca.png" alt="" width="554" height="381" /></p>
<p><strong>第五步：保存并发布报表</strong></p>
<p>保存主报表名字为fenye.raq，参数模板的名字为fenye_arg.raq，然后在设计器中发布主报表，并选择相应的参数，就能看到下面两幅图的效果：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-016n7f4cb8fc.png" alt="" width="553" height="358" /></p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-017n4f56b1cb.png" alt="" width="554" height="316" /></p>
<p>这样就可以根据类别分页，导出的时候也会跟页面上一样，分多个sheet页展现，实现了上面的需求。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%8c%89%e5%86%85%e5%ae%b9%e7%b1%bb%e5%88%ab%e5%88%86%e9%a1%b5%e5%b1%95%e7%8e%b0%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表中巧用参数实现交叉表行列互换</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%b7%a7%e7%94%a8%e5%8f%82%e6%95%b0%e5%ae%9e%e7%8e%b0%e4%ba%a4%e5%8f%89%e8%a1%a8%e8%a1%8c%e5%88%97%e4%ba%92%e6%8d%a2.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%b7%a7%e7%94%a8%e5%8f%82%e6%95%b0%e5%ae%9e%e7%8e%b0%e4%ba%a4%e5%8f%89%e8%a1%a8%e8%a1%8c%e5%88%97%e4%ba%92%e6%8d%a2.html#comments</comments>
		<pubDate>Fri, 23 Jul 2010 01:58:02 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[web报表]]></category>

		<category><![CDATA[博计报表]]></category>

		<category><![CDATA[样式变动]]></category>

		<category><![CDATA[超链接]]></category>

		<category><![CDATA[转换参数]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=452</guid>
		<description><![CDATA[博计报表在发布到web页面后，其样式就被固定了，如果想把报表换种形式展现，通常的做法是重新设计一张报表模板来实现。下面介绍一种简单方法来结局这种需求... ]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><span style="font-size: 16px; font-family: 宋体;"><span style="font-size: 16px; font-family: 宋体;"><a class="alinks_links" title="博计报表" onclick="return alinks_click(this);" rel="external" href="http://www.bonzerreport.com/" target="_blank">博计报表</a>在发布到web页面后，其样式就被固定了，如果想把报表换种形式展现，通常的做法是重新设计一张报表模板来实现。下面介绍一种简单方法来结局这种需求。</span></span></p>
<p style="text-align: left;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><strong><span style="font-size: 16px;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><strong>实现思路</strong>：</span></span></strong><br />
1. 设计单元格表达式根据参数不同而变化，从而实现样式跟随表达式变动。<br />
2．点击一个超链接按钮通过url强制传参给报表中的单元格，从而控制报表的样式。</span></p>
<p><span style="font-size: 16px; font-family: 宋体;">首先来看这样一张报表（bonzer\webroot\reportFiles\1.基础报表\交叉报表.raq），在页面上的展现效果如下图:</span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><img src="http://192.168.0.6/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=3dffbf40-e500-4218-a149-2c6ee1ad9462" alt="" width="528" height="435" /></span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">这是一个多维交叉分组报表，上表头是地区/城市，左表头是日期。</span></span></span></span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">如果想动态改变一下报表的样式，左表头变成地区和城市的分组展现，上表头变成年份和月份的分组展现，并且只通过一张报表，这就需要用文章标题中提到的：利用参数实现行列变换的方法了。</span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">本文以此报表为基础，实现可以行列互换的功能（上表头和左表头互换），使得报表在web页面上样式改变。</span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><strong>第一步：设计器中选择配置-参数</strong></span></p>
<p><span style="font-size: 16px; line-height: 150%; font-family: 宋体;">给报表增加一个参数，我们把这个参数叫做转换参数，顾名思义，这个参数就是控制行列转换用的。</span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-001p2485805b.png" alt="" width="553" height="373" /></span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><br />
</span></p>
<p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><strong><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><strong>第二步：修改单元格表达式，让单元格接受参数</strong></span></strong></span></p>
<p><span style="font-size: 16px; font-family: 宋体;">我们把C2单元格的表达式修改为：<br />
= if(@arg1==”1″,ds1.group(year(OrderDate),false,OrderDate!=null)+”年”,ds1.group(ShipRegion,false,ShipRegion!=null))<br />
此表达式的意思是：当参数arg1的值为1时，C2单元格的表达式为ds1.group(year(OrderDate),false,OrderDate!=null)+”年”，否则默认为ds1.group(ShipRegion,false,ShipRegion!=null)<br />
关于博计报表中if（）函数的用法请参考博计帮助文档中的相关介绍。<br />
据这个逻辑，依照地区与城市之间的关系，年份和月份之间的关系，把单元格的表达式做如下修改：<br />
C3：= if(@arg1==”1″,ds1.group(month(OrderDate),false)+”月”,ds1.group(ShipCity,false))<br />
A4：= if(@arg1==”1″,ds1.group(ShipRegion,false,ShipRegion!=null),ds1.group(year(OrderDate),false,OrderDate!=null)+”年”)<br />
B4：= if(@arg1==”1″,ds1.group(ShipCity,false),ds1.group(month(OrderDate),false)+”月”)</span></p>
<p><strong style="font-size: 16px; font-family: 宋体;">第三步：修改交叉表头并在其中设置超链接</strong></p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-002pf84dc82.png" alt="" width="531" height="265" /></p>
<p><span style="font-size: 16px;"><span style="font-size: 16px;"><span style="font-size: 16px;">红色框中的交叉表头区是整张报表的关键，既要在行列转换的时候做到文字跟随变化，又要充当转换控制的按钮。<br />
修改此单元格的表达式为：=if(@arg1==”1″,”分布,运货重,时间”,”时间,运货重,分布”)<br />
然后在此单元格的属性中：</span></span></span></p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-004p3ebf9430.png" alt="" width="318" height="322" /></p>
<p><span style="font-size: 16px; font-family: 宋体;">加入超链接属性</span>：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-005n7b21fe5f.png" alt="" width="414" height="311" /></p>
<p><span style="font-size: 16px; font-family: 宋体;"><br />
if(@arg1==null, “/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq&amp;arg1=1″,”/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq”）</span></p>
<p><span style="font-size: 16px; font-family: 宋体;">这个超链接的作用就是点击这个单元格，赋予arg1参数值，然后通过超链接中的url把参数传递到asp中的报表里，通过对参数值的判断，来确定超链接中的url，这样就可以来回转换，防止只能转换一次的情况出现。（超链接也可以设置在其他单元格中，本文中这样做是为了美观且容易理解）<br />
接下来，我们把报表发布到页面上去看效果：</span></p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-006p7aef0de4.png" alt="" width="553" height="326" /></p>
<p><span style="font-size: 16px; font-family: 宋体;"><br />
<span style="font-size: 16px; font-family: 宋体;">点击设置了超链接的表头单元格后，url自动转换为/reportBase/reportAspx/showContent.aspx?report=/交叉报表.raq&amp;arg1=1，强制把参数arg1=1传给报表的各个单元格，单元格表达式发生变化，报表样式也随之变化，于是实现了行列互换的效果：</span></span></p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/zrclip-007p46d54871.png" alt="" width="553" height="182" /></p>
<p><span style="font-size: 16px; font-family: 宋体;">此时，如果想转换到前一种样式，只需再点击一次表头单元格即可。<br />
在这个报表中，我们运用了很多颇具技巧性的方法，例如参数结合超链接的运用，if（）函数的运用，往往一些看似很复杂的报表，通过一些技巧性的做法都是可以迎刃而解的。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%b7%a7%e7%94%a8%e5%8f%82%e6%95%b0%e5%ae%9e%e7%8e%b0%e4%ba%a4%e5%8f%89%e8%a1%a8%e8%a1%8c%e5%88%97%e4%ba%92%e6%8d%a2.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表打印缩放说明</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%89%93%e5%8d%b0%e7%bc%a9%e6%94%be%e8%af%b4%e6%98%8e.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%89%93%e5%8d%b0%e7%bc%a9%e6%94%be%e8%af%b4%e6%98%8e.html#comments</comments>
		<pubDate>Wed, 21 Jul 2010 10:18:35 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[web报表]]></category>

		<category><![CDATA[打印]]></category>

		<category><![CDATA[打印设置]]></category>

		<category><![CDATA[打印预览]]></category>

		<category><![CDATA[按高缩放]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=451</guid>
		<description><![CDATA[本文对博计报表打印缩放进行了详细说明... ]]></description>
			<content:encoded><![CDATA[<p><strong>问题描述：</strong></p>
<p>客户在使用博计打印功能的时候，在打印预览页面选择”按高”或”按宽”缩放。</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/14.png" alt="1.png" width="266" height="291" /></p>
<p>当前报表行数比较少（如本例中是一行），当点击”按高缩放”的时候会出现下面的提示，</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/22.png" alt="2.png" width="532" height="197" /></p>
<p>点击确定以后，打印内容会有所变化，有的客户比较费解。</p>
<p><strong>现象说明：</strong></p>
<p>打印缩放是根据当前内容进行宽高同比例缩放，当报表内容超过一页纸时，整个报表会按比例缩小到一张纸的范围；当报表内容不足一页纸时，报表会按比例填充到整张纸范围。</p>
<p>如本例中的A1单元格，设置其宽高都为8.0，然后选择按高缩放。此时报表的内容会填充满整张纸，即报表行高会变成纸张高度，同时，报表宽度也会同比例增加到纸张高度大小，这时问题出现了。因为A4纸张的宽度要远小于其高度，此时A1单元格的宽度为纸张高度，那么它将远远超过纸张宽度，就是说，报表中的某一列宽度比给定（A4纸）的纸张宽，这种情况是报表工具不允许的。</p>
<p>同理，按宽缩放也一样。</p>
<p>那如何避免这种情况的发生呢？我们还需要从报表设计入手：</p>
<p>首先，我们制作的报表如果行数比较少，但还想使用按高缩放的功能，这时对于我们列宽的要求就比较高了，当选择按高缩放的时候，一定不能让其中的某列宽度大于纸张宽度；</p>
<p>其次，行高的问题可以通过将该单元格设置成合并格，并勾选”单元格”拆分选项来解决；</p>
<p>最后，要遵循报表设计的规则，尽量避免一些极端情况的发生。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e6%89%93%e5%8d%b0%e7%bc%a9%e6%94%be%e8%af%b4%e6%98%8e.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表中如何利用JavaScript函数获取单元格的值</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8javascript%e5%87%bd%e6%95%b0%e8%8e%b7%e5%8f%96%e5%8d%95%e5%85%83%e6%a0%bc%e7%9a%84%e5%80%bc.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8javascript%e5%87%bd%e6%95%b0%e8%8e%b7%e5%8f%96%e5%8d%95%e5%85%83%e6%a0%bc%e7%9a%84%e5%80%bc.html#comments</comments>
		<pubDate>Tue, 20 Jul 2010 01:41:58 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[Aspx]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[table]]></category>

		<category><![CDATA[web报表]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=450</guid>
		<description><![CDATA[博计报表展现在web页面以后，有时需要通过鼠标点击单元格的事件来获取该单元格的值。本文介绍如何在博计报表中实现上述需求，博计报表中通过在aspx页面中设定JavaScript函数就可以完成... ]]></description>
			<content:encoded><![CDATA[<p><a class="alinks_links" title="博计报表" onclick="return alinks_click(this);" rel="external" href="http://www.bonzerreport.com/">博计报表</a>展现在web页面以后，有时需要通过鼠标点击单元格的事件来获取该单元格的值。本文介绍如何在博计报表中实现上述需求，博计报表中通过在aspx页面中设定JavaScript函数就可以完成。</p>
<p>首先，需要知道报表是如何在页面上展现的。设计器安装目录：</p>
<p>\webroot\reportBase\reportAspx\showReport.aspx就是一个典型的展现博计报表的aspx例子：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/13.png" alt="1.png" width="381" height="333" /></p>
<p style="line-height: 1.5; text-align: left;"><span>从上图可以看到整个报表标签&lt; rq:HtmlTag&gt;包含在一个&lt; table&gt;标签中，在报表扩展的时候，就是在这个table中去扩展。<br />
想通过点击鼠标去获得单元格的值，就要定位单元格。如何去定位一个单元格呢，就要通过&lt; rq:HtmlTag&gt;中的name属性，然后加上单元格的位置来定位。这里我们举例的报表来自博计设计器的安装目下的：</span></p>
<p style="line-height: 1.5; text-align: left;"><span>\webroot\reportFiles\1.基础报表\交叉报表</span></p>
<p style="line-height: 1.5; text-align: left;"><span>例如：(”report1″).rows[1].cells[1]就代表的是报表的B2单元格。(表头为rows[0],第一列为cells[0])</span></p>
<p style="line-height: 1.5; text-align: left;"><span>接下来，在页面中增加一段JavaScript函数，用这个函数去获得单元格的值。</span></p>
<p style="line-height: 1.5; text-align: left;"><span>&lt; script language=”javascript”&gt;<br />
function _getDispValueByName(){<br />
var cell = document.getElementById(”report1″).rows[1].cells[1].innerText; //通过ID去定位单元格位置<br />
alert(cell); //用alert()函数弹出这个单元格的值<br />
}<br />
&lt; /script&gt;</span></p>
<p style="line-height: 1.5; text-align: left;"><span>最后，可以做一下效果展示，在页面上增加一个按钮，来触发这个JavaScript函数。</span></p>
<p style="line-height: 1.5; text-align: left;"><span>&lt; input type=”button” onclick=_getDispValueByName() value=”check”&gt;</span></p>
<p style="line-height: 1.5; text-align: left;"><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/21.png" alt="2.png" width="474" height="451" /></p>
<p style="line-height: 1.5; text-align: left;">通过这个例子,不仅知道怎样去定位单元格获取单元格的值，还可以看出博计报表中是可以使用强大的JavaScript函数来实现很多特殊功能的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e4%b8%ad%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8javascript%e5%87%bd%e6%95%b0%e8%8e%b7%e5%8f%96%e5%8d%95%e5%85%83%e6%a0%bc%e7%9a%84%e5%80%bc.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表api设计统计图</title>
		<link>http://www.bonzerreport.com/knowledge/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8api%e8%ae%be%e8%ae%a1%e7%bb%9f%e8%ae%a1%e5%9b%be.html</link>
		<comments>http://www.bonzerreport.com/knowledge/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8api%e8%ae%be%e8%ae%a1%e7%bb%9f%e8%ae%a1%e5%9b%be.html#comments</comments>
		<pubDate>Mon, 19 Jul 2010 03:39:20 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[知识库]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[graph]]></category>

		<category><![CDATA[web报表]]></category>

		<category><![CDATA[柱状图]]></category>

		<category><![CDATA[统计图]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=449</guid>
		<description><![CDATA[本文介绍了博计报表api设计统计图... ]]></description>
			<content:encoded><![CDATA[<p><a class="alinks_links" title="博计报表" onclick="return alinks_click(this);" rel="external" href="http://www.bonzerreport.com/">博计报表</a>提供了api接口，供用户进行设计开发，给客户自行开发程序很大的扩展空间，并且也使得开发变得更加灵活，控制性更强。本篇文章主要介绍一下如何通过api接口绘制一个统计图。</p>
<p>例如客户想画一个柱状图，下面讲一下实现过程。新建一个jsp。</p>
<p>jsp需要引入的相关包，因为本例比较简单所以引用的包也较少。</p>
<p>&lt;%@ page import=”com.runqian.report4.usermodel.*”%&gt;<br />
&lt;%@ page import=”com.runqian.report4.model.*”%&gt;<br />
&lt;%@ page import=”com.runqian.report4.util.*”%&gt;<br />
&lt;%@ page import=”com.runqian.report4.usermodel.graph.*”%&gt;</p>
<p><strong>第一步新建一个默认的空报表，代码如下</strong></p>
<p>ReportDefine rd = new ReportDefine2(1, 1);//一行一列的报表<br />
IRowCell rowCell = rd.getRowCell(1);<br />
IColCell colCell = rd.getColCell((short)1);<br />
rowCell.setRowHeight((float)150);<br />
colCell.setColWidth((float)150);</p>
<p><strong>第二步构造一个空的统计图：</strong></p>
<p>// 构造一个空统计图<br />
GraphProperty gp = new GraphProperty();</p>
<p>// 设置统计图类型–柱状图<br />
gp.setType(GraphTypes.GT_COL);</p>
<p>// 设置坐标轴颜色<br />
gp.setAxisColor(238130238);</p>
<p>// 设置柱形图间距<br />
gp.setBarDistance(”20″);</p>
<p>// 设置统计图标题<br />
gp.setGraphTitle(”统计图例子”);</p>
<p>// 设置标题与图形之间的距离<br />
gp.setTitleMargin(”10″);</p>
<p>// 设置横轴标题<br />
gp.setXTitle(”横坐标轴”);</p>
<p>// 设置纵轴标题<br />
gp.setYTitle(”纵坐标轴”);</p>
<p><strong>第三步，构造分类轴和系列值的定义，并把他们赋给统计图，</strong></p>
<p>GraphCategory[] graphCat = new GraphCategory[1];<br />
GraphSery[] sery=new GraphSery[1];<br />
for(int i = 0; i&lt;graphCat.length;i ++){//由于本例比较简单，所以这个循环看起来是多余的，但是在实际的应用中，这个循环 在赋值过程中很有用处<br />
GraphCategory category = new GraphCategory();<br />
category.setCategory(”销量”);<br />
graphCat[i] = category;</p>
<p>//根据分类设置它对应的系列对象</p>
<p>for(int j = 0; j&lt;sery.length; j ++ ){<br />
GraphSery gSery = new GraphSery();<br />
gSery.setName(”name”);<br />
gSery.setExp(”=200″);<br />
sery[j]=gSery; }<br />
graphCat[i].setSeries(sery);<br />
}<br />
gp.setCategories(graphCat);</p>
<p><strong>最后设置单元格，并设置该单元格的图表</strong></p>
<p>INormalCell iGraphCell = rd.getCell(1,(short) 1);<br />
iGraphCell.setCellType(iGraphCell.TYPE_GRAPH);</p>
<p>iGraphCell.setGraphProperty(gp);</p>
<p>rd.setCell(3, (short)1, iGraphCell);<br />
IByteMap exp3 = new ByteMap();<br />
exp3.put(INormalCell.VALUE, “graph()”);<br />
iGraphCell.setExpMap(exp3);</p>
<p>这样统计图就画完了，在后面加上标签进行解析</p>
<p>//设置request中报表定义对象<br />
String rptName = “RPT_”+Double.toString(Math.random());<br />
request.setAttribute(rptName,rd);</p>
<p>&lt;report:html name=”report1″<br />
srcType=”defineBean”<br />
beanName=”&lt;%=rptName%&gt;”<br />
/&gt;</p>
<p>这样就可以浏览这个jsp，在页面上可以看到一个有关于销量的统计。如图：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/1.png" alt="1.png" width="412" height="412" /></p>
<p>这样就完成了api的统计图设计。有需要的朋友可以用这个作为参考。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8api%e8%ae%be%e8%ae%a1%e7%bb%9f%e8%ae%a1%e5%9b%be.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表页面超过255列导出excel</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e9%a1%b5%e9%9d%a2%e8%b6%85%e8%bf%87255%e5%88%97%e5%af%bc%e5%87%baexcel.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e9%a1%b5%e9%9d%a2%e8%b6%85%e8%bf%87255%e5%88%97%e5%af%bc%e5%87%baexcel.html#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:24:00 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[excelUsePaperSize]]></category>

		<category><![CDATA[jsp]]></category>

		<category><![CDATA[web报表]]></category>

		<category><![CDATA[不分页]]></category>

		<category><![CDATA[分页]]></category>

		<category><![CDATA[大数据量]]></category>

		<category><![CDATA[导出excel]]></category>

		<category><![CDATA[标签]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=448</guid>
		<description><![CDATA[最近接触到一些客户的需求，客户想在页面展现的时候不分页，然后在导出excel的时候分页，而客户的报表列数很多，超过了excel的255列的限制。这样如果不做任何处理，直接在页面上点击导出e... ]]></description>
			<content:encoded><![CDATA[<p>最近接触到一些客户的需求，客户想在页面展现的时候不分页，然后在导出excel的时候分页，而客户的报表列数很多，超过了excel的255列的限制。这样如果不做任何处理，直接在页面上点击导出excel的按钮，就会弹出对话框提示excel不支持超过255列，也就无法正常导出，所以要想导出这样的报表就必须采取一些特殊的设置，下面就做一个简单的例子，实现超过255列的不分页报表导出excel。</p>
<p>有两种办法可以实现上面的需求，分别为：</p>
<p>1．展现时候展现一张不分页的，导出的时候导出另外一张报表，在导出的时候调用API导出那个分页的报表。</p>
<p>2．在jsp中设置width=”-1″ ,excelUsePaperSize=”yes”然后把报表设置成按纸分页的，也可以正常导出excel。</p>
<p>下面分别介绍一下这两种方法的实现过程：</p>
<p>第一种：调用API的方法。</p>
<p>第一步：制作一张超过255列的报表，报表的样式如下图所示(这里直接用to(1,300)函数实现了)</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/111.gif" alt="1.gif" width="285" height="83" /></p>
<p>保存这个报表为300col.raq。</p>
<p>第二步：设置分页。</p>
<p>点击属性-报表属性-分页，设置分页方式为按纸分页，然后另存这个报表为300col1.raq</p>
<p>第三步：编写导出的API</p>
<p>导出excel的API内容如下：</p>
<p><span>&lt;%@ page language=”java” contentType=”text/html; charset=gbk”<br />
pageEncoding=”gbk”%&gt;<br />
&lt;%@page<br />
import=”com.runqian.report4.usermodel.*,com.runqian.report4.util.*,com.runqian.report4.model.ReportDefine”%&gt;<br />
&lt;%@ page import=”java.io.*,com.runqian.report4.usermodel.DataSetConfig<br />
“%&gt;<br />
&lt;%<br />
Context cxt = new Context();<br />
String reporthome = Context.getInitCtx().getMainDir();<br />
String path = application.getRealPath(reporthome);<br />
String raq = path+File.separator+”300col1.raq”;<br />
ReportDefine rd = (ReportDefine) ReportUtils.read(raq);<br />
Engine engine = new Engine(rd,cxt);<br />
IReport ir = engine.calc();<br />
ReportUtils.exportToExcel(path+File.separator+”300col.xls”,ir,true);<br />
%&gt;</span></p>
<p>在发布不分页的报表(也就是300col.raq)的jsp中调用上面的jsp，将300col1.raq导出，就可以实现导出超过255列excel的需求了。</p>
<p>第二种：使用标签实现。</p>
<p>在展现报表jsp的博计标签中加入如下两个内容： width=”-1″ , excelUsePaperSize=”yes”，width=”-1″的含义是页面展现的时候纸张宽度无线大，这样展现的时候就不分页了，而excelUsePaperSize=”yes”的含义是导出excel的时候按照设置的纸张大小来分页，jsp的内容如下：</p>
<p><span>&lt;%@ page contentType=”text/html;charset=GBK” %&gt;<br />
&lt;%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %&gt;</span></p>
<p>&lt;% //这里为两种方法准备图片连接的公共部分<br />
String appmap = request.getContextPath();<br />
String printImage = “&lt;img alt=打印 src=’” + appmap + “/images/print.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String wordImage = “&lt;img alt=导出Word src=’” + appmap + “/images/doc.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String excelImage = “&lt;img alt=导出excel src=’” + appmap + “/images/excel.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String pdfImage = “&lt;img alt=导出PDF文件 src=’” + appmap + “/images/pdf.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String firstPageImage = “&lt;img src=’” + appmap + “/images/firstpage.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String lastPageImage = “&lt;img src=’” + appmap + “/images/lastpage.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String nextPageImage = “&lt;img src=’” + appmap + “/images/nextpage.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String prevPageImage = “&lt;img src=’” + appmap + “/images/prevpage.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String submitImage = “&lt;img alt=保存到数据库 src=’” + appmap + “/images/savedata.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
String importExcelImage = “&lt;img alt=导入Excel文件 src=’” + appmap + “/images/importExcel.gif’ border=no style=’vertical-align:middle’&gt;”;<br />
%&gt;<br />
&lt;form id=”form1″ action=”excel.jsp”&gt;<br />
&lt;table align=center&gt;<br />
&lt;tr&gt;&lt;td&gt;<br />
&lt;input type=”button” onclick=”form1.action” value=”导出excel”&gt;<br />
&lt;report:html name=”report1″ reportFileName=”300col.raq”<br />
needSaveAsWord=”yes”<br />
needSaveAsPdf=”yes”<br />
needSaveAsExcel=”yes”<br />
width=”-1″<br />
excelUsePaperSize=”yes”<br />
wordLabel=”&lt;%=wordImage%&gt;”<br />
pdfLabel=”&lt;%=pdfImage%&gt;”<br />
submit=”&lt;%=submitImage%&gt;”</p>
<p>/&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;</p>
<p>使用上面的jsp发布第一种方法制作的300col1.raq，点击导出excel的按钮，选择分页方式导出，具体样式如下图所示：</p>
<p><img src="http://www.runqian.com.cn/know-how/wp-content/uploads/2010/07/29.gif" alt="2.gif" width="554" height="260" /></p>
<p>点击确定，就会导出按纸分页的excel了，这样在页面上导出超过255列不分页报表的excel就实现了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e9%a1%b5%e9%9d%a2%e8%b6%85%e8%bf%87255%e5%88%97%e5%af%bc%e5%87%baexcel.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>博计报表–初始化为空的参数报表制作</title>
		<link>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e2%80%93%e5%88%9d%e5%a7%8b%e5%8c%96%e4%b8%ba%e7%a9%ba%e7%9a%84%e5%8f%82%e6%95%b0%e6%8a%a5%e8%a1%a8%e5%88%b6%e4%bd%9c.html</link>
		<comments>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e2%80%93%e5%88%9d%e5%a7%8b%e5%8c%96%e4%b8%ba%e7%a9%ba%e7%9a%84%e5%8f%82%e6%95%b0%e6%8a%a5%e8%a1%a8%e5%88%b6%e4%bd%9c.html#comments</comments>
		<pubDate>Thu, 08 Jul 2010 06:51:19 +0000</pubDate>
		<dc:creator>yanghe</dc:creator>
		
		<category><![CDATA[设计基础]]></category>

		<category><![CDATA[bonzer]]></category>

		<category><![CDATA[frame]]></category>

		<category><![CDATA[frame.html]]></category>

		<category><![CDATA[param.aspx]]></category>

		<category><![CDATA[report.aspx]]></category>

		<category><![CDATA[参数模板]]></category>

		<guid isPermaLink="false">http://www.bonzerreport.com/?p=447</guid>
		<description><![CDATA[博计报表由于没有动态参数和动态宏，按照传统的参数判断来实现报表初始化为空，点击查询才展现数据的需求比较困难。那有没有其他的方法实现该功能呢？当然是有的。今天就来介绍一种... ]]></description>
			<content:encoded><![CDATA[<p><a class="alinks_links" title="博计报表" onclick="return alinks_click(this);" rel="external" href="http://www.bonzerreport.com/">博计报表</a>由于没有动态参数和动态宏，按照传统的参数判断来实现报表初始化为空，点击查询才展现数据的需求比较困难。那有没有其他的方法实现该功能呢？当然是有的。今天就来介绍一种使用frame的方法来实现该需求。</p>
<p><span style="font-size: 16px;"><strong>准备报表：</strong></span></p>
<p>实现用报表使用设计器自带应用中的 参数报表.raq 和 参数报表_arg.raq。</p>
<p><strong>具体实现：</strong></p>
<p><strong>新建frame.html文件，文件内容如下：</strong></p>
<p><span style="color: #0000ff;">&lt;frameset rows=”100,*” framespacing=”2″ frameborder=”yes” border=”2″<br />
bordercolor=”#993300″&gt;<br />
&lt;frame src=”params.aspx” name=”topFrame” scrolling=”NO” noresize &gt;<br />
&lt;frame src=”&#8221; name=”reportFrame”&gt;<br />
&lt;/frameset&gt;</span></p>
<p><strong>新建param.aspx文件，文件内容如下：</strong></p>
<p><span style="color: #0000ff;">&lt;%@ Page Language=”C#” AutoEventWireup=”true” %&gt;<br />
&lt;%@ Register Assembly=”report35net” Namespace=”com.runqian.report.tag” TagPrefix=”rq” %&gt;<br />
&lt;%@ Import Namespace=”System.IO” %&gt;</span></p>
<p>&lt;html&gt;<br />
&lt;body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0&gt;<br />
&lt;table id=param_tbl align=center&gt;<br />
&lt;rq:ParamTag<br />
ID=”ParamTag_1″<br />
Name=”param1″<br />
ParamFileName=”参数报表_arg.raq”<br />
NeedSubmit=”no”<br />
runat=”server”<br />
resultPage=”reportBase/testAspx/report.aspx”<br />
target=”reportFrame” /&gt;<br />
&lt;td&gt;&lt;a href=”javascript:_submit( param1 );”&gt;&lt;img src=”img/query.jpg” border=no style=”vertical-align:middle”&gt;&lt;/a&gt;&lt;/td&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>其中resultPage=”reportBase/testAspx/report.aspx”，resultPage是博计的发布参数报表标签中的属性，<strong>属性含义</strong>：提交参数后，显示报表的结果页面；<strong>属性取值</strong>：相对于应用根目录的页面URL。</p>
<p><strong>新建report.aspx文件，内容如下：</strong></p>
<p><span style="color: #0000ff;">&lt;%@ Page Language=”C#” AutoEventWireup=”true” %&gt;<br />
&lt;%@ Register Assembly=”report35net” Namespace=”com.runqian.report.tag” TagPrefix=”rq” %&gt;<br />
&lt;%@ Import Namespace=”System.IO” %&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;/title&gt;</span></p>
<p>&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table align=center&gt;<br />
&lt;tr&gt;&lt;td&gt;<br />
&lt;rq:HtmlTag<br />
ID=”HtmlTag_1″<br />
Name=”report1″<br />
ReportFileName=”参数报表.raq”<br />
funcBarLocation = “”<br />
needSaveAsExcel=”yes”<br />
needSaveAsPdf=”yes”<br />
needSaveAsWord=”yes”<br />
needSaveAsText=”yes”<br />
needPrint=”yes”<br />
funcBarFontSize=”12px”<br />
funcBarFontColor=”red”<br />
functionBarColor=”yellow”<br />
runat=”server”<br />
/&gt;<br />
&lt;/td&gt;&lt;/tr&gt;</p>
<p>&lt;/table&gt;</p>
<p>&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>在页面上访问frame.html后，发现初始只有一个参数报表，当点击查询后，出现了结果报表,并显示出了正确的结果。</p>
<p>至此该需求已满足。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bonzerreport.com/knowledge/basic/%e5%8d%9a%e8%ae%a1%e6%8a%a5%e8%a1%a8%e2%80%93%e5%88%9d%e5%a7%8b%e5%8c%96%e4%b8%ba%e7%a9%ba%e7%9a%84%e5%8f%82%e6%95%b0%e6%8a%a5%e8%a1%a8%e5%88%b6%e4%bd%9c.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
