2009-10-19 16 views
1

如何使用JRSwapFileVirtualizer在Java碧玉報告碧玉報道,這是我使用的代碼..如何使用JRSwapFileVirtualizer在Java

JRSwapFileVirtualizer virtualizer = null; 
virtualizer = new JRSwapFileVirtualizer(10000, new JRSwapFile("F://", 1000, 1000), false); 
param.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); 

xmlDataSource = new JRXmlDataSource(reportFile,"/table/tr"); 
jasperPrint = JasperFillManager.fillReport(jasperpath, param, xmlDataSource); 

還是我得到的堆空間誤差(OutOfMemeoryException),和創建的文件是空的。

+0

你不是已經問了幾乎相同的問題嗎?您可以自行發佈該問題的答案,也可以等到有人回答。不要在同一問題上氾濫多個問題的頁面 – jitter 2009-10-19 14:20:35

回答

6

JRSwapFileVirtualizer的構造函數的第一個參數是報表的各部分存儲在虛擬內存(磁盤)中之前將存儲在主內存(RAM)中的報表頁面的最大數量。因此,如果您的報告頁面大小不超過10000頁,那麼您無法將它們存儲在虛擬內存中,即使您編寫虛擬器代碼,您實際上也不會使用這種美觀。

試着這麼做,

JRSwapFileVirtualizer virtualizer = null; 
virtualizer = new JRSwapFileVirtualizer(3, new JRSwapFile("F://", 2048, 1024), false); 
param.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); 

希望工程:-)

歡呼聲......

+0

當我使用此代碼時,它工作正常。問題是當我用40000記錄以xls格式創建報告時,它會給我一個堆內存錯誤。 – 2014-05-13 10:23:07

+0

「F://」是你碧玉的路徑嗎?或者你的excel是在哪裏生成的? – 2016-03-02 17:57:09