發表文章

Crystal Report報表開發(七)_缺列補空白_Runtime參數設置_公式設置_避免多浪費空白頁的後端程式修正

圖片
  在很久之前由於接獲需要用水報翻升廠內用ActiveX舊版報表程式 因而遇到有點挑戰的報表程式設計 特徵: 有格子框住頁首頁尾 每頁20筆(缺列補空白) 轉用水晶報表 有格子框住頁首頁尾 ==>可插入方塊 問題1.每頁20筆(缺列補空白) 這裡就先解決空白列問題,由於Crystal Report 設定細目(詳細資料) 資料源頭時候,主要透過ReportDocument物件SetDataSource的 方法,其中一個overload型態可以Assign DataTable。 這裡自定義一個回傳DataTable的Function,命名為 GetTableWithInSufficientEmptyRow (考量到當只有一頁或不只一頁的問題) 傳入原本兜好資料的DataTable(可能11筆or55筆這種...剛好不足 每頁預顯示的基數的) 傳入每頁預指定顯示的資料筆數(目前驗證 當每頁水晶報表只有一個Grid時候最大可設到22,這裡設定20)==>設定每頁顯示列數請參考上一篇針對細目的公式設定 程式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ''' <summary> ''' 自動湊滿每頁N筆,缺列補空白列 ''' </summary> ''' <param name="tbGridData"></param> ''' <param name="RowCountEachPage"></param> ''' <returns></returns> Function GetTableWithInSufficientEmptyRow (tbGridD...

Crystal Report報表開發(六)_每頁限制細目顯示資料列數

圖片
  每頁限制細目顯示資料列數 限制每一頁每隔15個資料就換頁 這裡模擬當資料有到達55筆的情況,由於目前 測資from真實案例的只有11列,因此後端暫時用Merge先連續5次。 公式編輯:對細目右鍵 -> 區段專家 -> 選細目 -> 切分頁 -> 在之後新增分頁(X-2)  ->  編寫如下公式 (在寫好後存檔就會變成紅色代表已經套用至報表) if RecordNumber mod 15 =0 and OnLastRecord=false then  true 最終效果 控制每頁顯示多少列,還是會有頁面空間限制!! 這裡Try 每頁若只有單一個表格包含頁首頁尾,最大限制可以到每一頁顯示22列空間 這裡將公式中的15改為30 結果 第一頁顯示22筆隨後的8筆被編排到第二頁去了 這裡在安排報表距離時候也要注意記得拉好適當距離並且右鍵調整區段來進行空間縮放的調適 比如下方是有留多餘空間的時候 會使每頁限制列數機制失真 。

Crystal Report報表開發(五)_每張報表表頭表尾顯示差別_調整區段自動縮放技巧

圖片
  Crystal Report 中分為這些基本區段 Section1. 報表首 ( 放置於此內容只會在第一張出現 ) Section2. 頁首 ( 每一頁開頭都會出現 , 適合資料表頭和其他 Title 內容 ) Section3. 細目 ( 每一頁都會出現 , 適用於每一列資料內容呈現 ) Section4. 報表尾 ( 放置於此內容只會在 最後一 張出現 ) Section5. 頁尾 ( 每一頁底部都會出現 ) 以收驗單樣板為例 目前每一張上限為20筆,每張都會有黃色標註的上下區塊。 這裡的資料是水晶報表預設自動串出的系統 因此在報表設計時報表首、報表尾皆不太會需要用到 且留太多空白會影響實際列印空間被壓縮 因此記得要縮短不留太大空白。 將要呈現的內容(LineObhect、TextObject、BoxObject)放置於頁首、頁尾即可, 這裡可對此兩個 section右鍵=>選擇調整區段自動縮放 不用自己去拉縮放空間喔!! (其餘Section如有類似要節省自動縮放列印剩餘空白也能用這招稍微調適一下) 最終效果 (PS:這裡顯示出來的資料也是水晶報表自動串出來模擬的非真實資料喔!!)

Crystal Report報表開發(四)_報表欄位的自動換行與自動編號

圖片
在 Crystal Report  中若要去顯示 表頭 ( 固定唯一的 Columns)                 ==> 是設置在 頁首 ( 大陸用語 : 頁眉  /  英文 :Page Header) ==> 拖放或自動產生的物件為 ITextObject 很多欄位 ( 會變動的 Data Row 內容 )==> 是設置在 細目 ( 大陸用語 : 詳細資料  /  英文 :Details Section ) ==> 拖放或自動產生的物件為 IFieldObject 頁首==>拖放或自動產生的物件為ITextObject 細目==>拖放或自動產生的物件為IFieldObject 若細目中某些欄位突然太多字而超出欄寬就可能出現被遮蔽or重疊的問題 效果如下(這裡尚未串資料) 目前顯示的是Crystal Report自動生成的演示用測資 所以看起來會感覺內容怪是正常的,已經開始有換行了只是超出格線。 Step1.至細目對該IFieldObject屬性修改GanRow 為True Step2.對細目Section進行區段專家的屬性設置(可從上面或直接右鍵點擊),放置在隨後區段勾選起來。 Step3.對線條或BOX的EXTENDTOBOTTOMSECTION為『True』,可以一個一個點對屬性設置,也可以用程式動態設置。 (備註:除了表頭的兩橫線之外,做了表頭就沒有橫格線了) 方法1.刻苦耐勞一個一個設置法 方法2.程式調整避開Header上半部分兩條 最終效果 自動編號 每列若要自動添加流水編號可直接在細目中增加一個[特殊欄位]->[資料錄編號]即可  

Crystal Report報表開發(三)_綁定資料庫資料源_動態參數傳入

圖片
Crystal Report綁定資料庫資料源 這裡用北風資料庫(公開測試用途的)來進行示範   Crystal Report 動態參數帶入(非Table類型的Record) 如果是單一報表object要傳參數 可以直接透過CAST運算來轉為對應型態後調用其相應屬性 比方TextObject就有Text可以Assign (PS:BoxObject物件跟TextObject物件都繼承自 ReportObject) 若要進行Object Value的動態設置,可透過TypeOf 搭配去區分對應資料型態 設值填入白色...etc

ASP.NET_NPOI使用時遇到的陷阱_CreateSheet不要傳入完整路徑

圖片
最近於工作專案中遇到的一個坑 由於要進行Excel檔案的匯出,使用到C# NPOI的第三方庫 出現如下錯誤 System.ArgumentException: 'Invalid char (:) found at index (1) 由於之前實作過的function是將DataGridView中資料匯出 對應直接採用SaveFileDialog方式設置副檔名、路徑、檔名等資訊沒報錯 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 public void GridToExcel ( string fileName, DataGridView dgv) { if (dgv.Rows.Count == 0 ) { return ; } SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel 2003格式|*.xls" ; sfd.FileName = fileName + DateTime.Now.ToString( "yyyyMMdd_HHmmss" ); if (sfd.ShowDialog() != DialogResult.OK) { return ; } HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = (HSSFSheet)...

Crystal Report報表開發(二)_基礎操作排版對齊_基本組成部分介紹

圖片
Step1.Crystal Reports 的新建 Crystal Reports基本組成部分(因不同地理位置、國家而有不同稱呼) Section1.台灣:報表首/大陸用語:報表頭(頁眉) / 英文:Report Header Section2.台灣:頁首/大陸用語:頁眉 /英文:Page Header Section3.台灣:細目/大陸用語:詳細資料 /英文:Details Section4.台灣:報表尾/大陸用語:報表尾(頁腳) /英文:Report Footer Section5.台灣:頁尾/大陸用語:頁腳 /英文:Page Footer 在此每個報表區塊基本單位為:Section(台灣:區段/大陸用語:節) 各國使用不同語系軟體呈現情況 Step2.Crystal Reports設計面板基礎操作(rpt檔案) 文字物件內容編輯 調整文字物件對齊方式 有時報表首(或者頁首、細目...)可能不只一個因此需要擴充相同層級的section 版面橫印、直印調整 如何By版面去水平置中定位文字物件 (PS:縮放最大極限只能放大到400%),縮放比例不同尺規精密度有差。 如何不用重複設置相同格式,直接套用上一個物件格式。 除了右鍵新增物件之外,也可透過工具箱去拖曳。 表單編號這個文字物件我們設置為14pt置中對齊 表單版本這個文字物件我們也想套用相同格式 就可以對表單編號文字物件右鍵複製格式-->出現刷子鼠標位置代表可套用按一下即可 文字物件的對齊->複選後對想以其作為對齊基準的物件去右鍵對齊 (不一定要Shift按著不放依序複選也可直接滑鼠拖曳選取方框)->重點在最後選誰去右鍵!!! 常用物件(方塊物件) 方塊物件的填滿顏色屬性設置