Posted on 2017-01-05 10:18
FineReport——報表技術領跑者 閱讀(206)
評論(0) 編輯 收藏 所屬分類:
Java報表制作
在FineReport中,會出現希望直接將txt、excel等文件整個保存在數據庫中進行備份,并且希望通過FineReport制作報表將這些文件下載下來的情況。
上傳:使用文件控件上傳文件,以二進制流保存至數據庫字段中(字段類型必須是用于保存二進制數據的);
下載:直接將二進制數據拖入單元格,設置單元格的其他屬性>用下載鏈接顯示二進制內容,就可以下載文件。
下面通過上傳一個txt文件至sql server數據庫中并下載為例來說明實現過程。Sqlite數據庫僅支持上傳,不支持下載的。
前提準備
準備一個txt文件,數據庫中創建一張數據庫表file,包含字段(filename[文本]、file[Blob對象])
數據庫不同可以保存文件的字段類型是不同的,以下列出常用數據庫保存二進制數據的字段類型:

上傳文件至數據庫
前提準備好后,就可以制作一張填報模板,上傳文件到數據庫,文件以二進制數據流保存在數據庫字段中,模板設計界面如下,并按照圖上說明設置報表填報屬性:

如果是單文件上傳,則可嚴格控制,勾選只支持單文件上傳,還可以設置允許上傳的文件類型;如果是多文件上傳,就不需要勾選只支持單文件上傳這個勾選項了。
保存模板,進行填報預覽,上傳文件并提交,文件就會以二進制數據保存到數據庫中:
鼠標移至文件控件所在單元格,即B2,單擊右上角的編輯按鈕,進入編輯狀態,點擊上傳按鈕即可上傳文件,如下圖:



提交成功之后,在數據庫中可以看到數據。
下載
重新打開模板,添加數據庫查詢ds1,SQL語句為select *from file,將保存的數據查詢出來;將字段拖入到單元格中,并設置文件字段所在單元格的其他屬性>用下載鏈接顯示二進制內容,并設置下載后的文件名:

再次保存模板,填報預覽,就可以點擊下載了:
