Heis的Blog

          保持簡(jiǎn)單,保持愚蠢
          隨筆 - 29, 文章 - 1, 評(píng)論 - 122, 引用 - 0
          數(shù)據(jù)加載中……

          我的評(píng)論

          @常興
          可以嘗試一下把pagebreak放到主報(bào)表去,放在子報(bào)表之間。
          @DDR
          一般來(lái)說(shuō)是子報(bào)表的高度超了而導(dǎo)致的問(wèn)題,不過(guò)你描述的不是很清楚,要不你把截圖發(fā)我郵箱,讓我看看吧
          @會(huì)跑的蝸牛
          今日還上youtube了:-)真不好意思。
          @隔葉黃鶯
          哈哈,是比不上你啦。我是比較晚,你比較早泄露了天機(jī)。
          @大衛(wèi)
          雖然jdk5以后反射性能有了很大的提升,但是反射性能肯定會(huì)差一點(diǎn)。通常情況下,如果可以通過(guò)getter和setter訪問(wèn),盡量使用getter和setter,這樣重構(gòu)起來(lái)也簡(jiǎn)單。
          @liguangjun
          邊框是自己設(shè)置的;
          字段是靜態(tài)添加的,不是動(dòng)態(tài),所以要自己設(shè)計(jì);
          @梁章坪
          不好意思,我借來(lái)的紙質(zhì)書(shū)。不過(guò)你可以關(guān)注我的博客,我覺(jué)得直接看筆記會(huì)比看書(shū)有效率很多。
          @cici
          不用子報(bào)表是會(huì)有問(wèn)題的,估計(jì)是你的數(shù)據(jù)源配置錯(cuò)誤。
          @zhenlu
          這與博文的主題沒(méi)關(guān),這可能要找一些支持RTF文件操作的代碼看看咯。
          @5452
          在技術(shù)領(lǐng)域有統(tǒng)一的術(shù)語(yǔ)是非常重要的,當(dāng)然術(shù)語(yǔ)背后的原理更為重要。
          @zl
          每一行對(duì)應(yīng)一個(gè)按鈕來(lái)打單?這個(gè)我不是很明白,我們郵件聯(lián)系吧。畢竟評(píng)論不是留言版。我郵箱:heisun@yeah.net
          @zl
          1.檢查你的子報(bào)表,field是否放在detail區(qū)域內(nèi)。
          2.檢查父報(bào)表的subreport元素內(nèi)的XPATH是否是/NameList/Person
          3.你的XML數(shù)據(jù)源不會(huì)只有一條數(shù)據(jù)吧?

          如果還發(fā)現(xiàn)錯(cuò)誤,下載我的模板源代碼對(duì)比一下。
          @sky ao
          精辟!
          我個(gè)人認(rèn)為很多技術(shù)問(wèn)題不是只了解結(jié)論就行了。
          @zl
          首先確認(rèn)你的xml文件沒(méi)有錯(cuò),文件編碼注意要是UTF8;
          如果沒(méi)錯(cuò),這可能是ireport的xml解析器bug,我也經(jīng)常遇到這樣的問(wèn)題。你可以試一下先把原來(lái)的ireport的xml數(shù)據(jù)源刪掉,然后重啟ireport,再試著新建一個(gè)xml數(shù)據(jù)源。這個(gè)bug也困擾我很久,有時(shí)候會(huì)莫名奇妙地不能解析。
          @銀河使者
          1.這道題目沒(méi)有說(shuō)字符就一定是ASCII字符;
          2.用256的數(shù)組來(lái)保存次數(shù)難免會(huì)造成空間的浪費(fèi)。
          @sun
          打印之前肯定是可以修改的,我猜你的意思是打印預(yù)覽的階段對(duì)報(bào)表進(jìn)行修改吧?
          從Jasperreport的生成報(bào)表原理上來(lái)看,有這樣一個(gè)過(guò)程。
          1.模板設(shè)計(jì)階段。這是一個(gè)XML文件,以jrxml后綴名結(jié)尾。
          2.編譯階段。通過(guò)編譯jrxml文件得到一個(gè)jasper文件。
          3.數(shù)據(jù)填充階段。通過(guò)將數(shù)據(jù)源填充到j(luò)asper文件上,然后生成一個(gè)jrprint文件。jrprint可以轉(zhuǎn)換為PDF,Excel等格式的報(bào)表。jrprint文件已經(jīng)是填充了數(shù)據(jù)的報(bào)表,不能編輯內(nèi)容了。

          所以要做到修改,有兩個(gè)方法:
          一是修改數(shù)據(jù)源,你需要將數(shù)據(jù)源轉(zhuǎn)為可編輯的形式,例如XML數(shù)據(jù)源,像javaBean或數(shù)據(jù)庫(kù)類型的數(shù)據(jù)源就無(wú)能為力了。
          二是,打印預(yù)覽階段將導(dǎo)出可編輯的文件,例如像HTML,然后提供HTML的編輯器,修改后可以打印。

          我個(gè)人推薦第一種方法。因?yàn)榭梢詫?bào)表導(dǎo)為各種形式的文件,雖然需要工作量比較多。第二種方法就只能綁定在一種報(bào)表格式上了。
          @nesta
          1.可以,在屬性-字體 里面有一個(gè)垂直居中的選項(xiàng)。
          2.你可以嘗試在subreport屬性當(dāng)中配置一個(gè)合適的數(shù)據(jù)源,像net.sf.jasperreports.engine.data.JRBeanArrayDataSource(Object[])或者net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(Collection)。你可以去查一下API,但是這個(gè)解決方法的思路有問(wèn)題,你為什么不統(tǒng)一數(shù)據(jù)源,這樣可以更好地處理問(wèn)題。還有你的bean是通過(guò)參數(shù)傳入,還是設(shè)想在報(bào)表里構(gòu)造?
          3.Jasperreport的參數(shù)傳遞是通過(guò)在subreport里設(shè)置傳遞的參數(shù)名,例如為ParamA,然后你再在子模板里新建一個(gè)相同名稱的參數(shù)ParamA,就可以獲取到這個(gè)參數(shù)的值了。
          @sun
          報(bào)表的數(shù)據(jù)是依賴數(shù)據(jù)源的,修改數(shù)據(jù)源自然能修改報(bào)表內(nèi)容。
          @凌晨風(fēng)
          “分成兩列橫著打印”是不是指像我現(xiàn)在的報(bào)表逆時(shí)針轉(zhuǎn)90度。如果是,那在Jasperreport里是做不到的。文章中也有提及,Jasperreport是只能一個(gè)區(qū)域(band)一個(gè)區(qū)域地去渲染,因?yàn)閰^(qū)域的排列是由上到下,所以渲染的順序也是從上到下的,沒(méi)辦法從左到右渲染。
          @john
          那你的意思是適合中國(guó)的報(bào)表才有意義?那什么是中國(guó)式的報(bào)表呢?
          @凌晨風(fēng)
          首先,針對(duì)你說(shuō)的“報(bào)表做起來(lái)很麻煩”。我前面的文章有說(shuō)過(guò),以XML作為數(shù)據(jù)源是針對(duì)不同的需求的,請(qǐng)考慮下面的幾種情況:如果你的報(bào)表數(shù)據(jù)要經(jīng)過(guò)一系列的精確計(jì)算,然后在報(bào)表上展示計(jì)算結(jié)果;如果你的報(bào)表數(shù)據(jù)并不是全部都來(lái)自于數(shù)據(jù)庫(kù),而是某些來(lái)自程序或其他配置文件;SQL能不能解決問(wèn)題?

          其次,我不能認(rèn)同“多個(gè)子報(bào)表效率無(wú)疑會(huì)很底”這句話。標(biāo)簽式報(bào)表主體報(bào)表的subreport元素都是指向相同的子報(bào)表模板。這相當(dāng)于java中一個(gè)類調(diào)用同一個(gè)類的多個(gè)實(shí)例,這樣并不會(huì)有效率問(wèn)題。使用“無(wú)疑”這個(gè)詞并不是程序員應(yīng)有的素質(zhì),至少你應(yīng)該先去運(yùn)行一下這個(gè)報(bào)表。

          我猜想你說(shuō)的“多結(jié)果集”是指subdatasets,這個(gè)是只適用于連接(Connection)類型的數(shù)據(jù)集(像數(shù)據(jù)庫(kù),Hibernate之類),并不適用于數(shù)據(jù)源(Data Source)類型的數(shù)據(jù)集(像XML,CSV之類)。

          對(duì)于你的“分欄”操作,我并不是很理解,請(qǐng)賜教。
          @tide
          我理解你的意思是像下面這樣的表格嗎?
          _______________
          | |____|____|
          | |____|____|
          | |____|____|
          | |____|____|
          如果是,我會(huì)在下一篇文章中介紹。
          @游上岸的魚(yú)
          使用XML作為數(shù)據(jù)源比直接讀取數(shù)據(jù)庫(kù)更有優(yōu)勢(shì)的地方在于:
          1.數(shù)據(jù)可以在程序里處理;
          2.數(shù)據(jù)獨(dú)立性和可讀性好

          但是劣勢(shì)也是很明顯的,因?yàn)橐獜臄?shù)據(jù)庫(kù)讀取數(shù)據(jù)到對(duì)象,對(duì)象再轉(zhuǎn)換為XML,這個(gè)過(guò)程消耗的資源要更多,效率也會(huì)受到影響。具體的效率我也沒(méi)測(cè)試過(guò),但是我在項(xiàng)目里生成的XML在一萬(wàn)行左右時(shí),效率是可以接受的。
          但是對(duì)于效率要求比較高的報(bào)表,但是數(shù)據(jù)不需要做中間處理的報(bào)表,我并不推薦XML作為數(shù)據(jù)源這種方式。
          主站蜘蛛池模板: 东城区| 定西市| 辽宁省| 沧州市| 乌拉特前旗| 太谷县| 吴旗县| 丰县| 化德县| 蒙阴县| 南开区| 江阴市| 岱山县| 永安市| 丽水市| 寻乌县| 衡东县| 曲水县| 通州区| 合阳县| 铜鼓县| 石楼县| 乌鲁木齐县| 太谷县| 独山县| 湖州市| 尼玛县| 双城市| 漾濞| 连云港市| 屏东县| 白城市| 吴忠市| 收藏| 荔浦县| 西安市| 林西县| 南陵县| 临沂市| 高青县| 甘南县|