1. 程式人生 > >JSP報表列印的一種簡單解決方案

JSP報表列印的一種簡單解決方案

1. 在Word或Excel中製作報表的樣式。

        Excel的行高和列寬單位無法用mm或cm表示。

        需要計算。在1024*768下,1CM約為38畫素。 

        以此為基準,可計算並控制報表的行列位置。

2. 在Word中設定“表格——標題行重複”。

    在Excel中設定“檔案——頁面設定——工作表——列印標題”。

3. 另存為網頁,改字尾名“htm”為“jsp”。

4. Word報表檔案頭為:

           <%@page contentType="application/msword;charset=GBK" language="java"%>

     Excel報表檔案頭為:

           <% @page  contentType="application/vnd.ms-excel;charset=GBK" language="java"%>

5. 在檔案頭部分定義列印引數變數如下(以Excel為例):

<%

   //需要列印的記錄條數
   int PrintRowCount=RowCount;   

   //每頁列印的記錄條數
   int PageRowCount=16;            

   //最後一頁需要列印的空行的數目
   int LoopNum=PageRowCount-PrintRowCount%PageRowCount; 

   //列印區域的高度,其中2的意思是每頁需要重複的標題行的數目
   int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount+2:PrintRowCount+LoopNum+2;

%>

6. 在<style></style>後,改動<!--[if gte mso 9]與<![endif]-->標籤中的XML標籤內容,主要是設定動態列印區域(以Excel為例):

    <%

     out.print(" ......
        "<x:ExcelName>"+
        "<x:Name>Print_Area</x:Name>"+
        "<x:SheetIndex>1</x:SheetIndex>"+
        "<x:Formula>=Sheet1!$A$1:$G$"+PrintAreaHeight+"</x:Formula>"+
        "</x:ExcelName>"+
         ...... ");

     %>

7. JSP其他編碼。

下面是主體迴圈列印部分(以Excel為例):

<%  
      for (int i=1;i<=PrintRowCount; i++)
       {
              out.print("<tr>"<td>"+i+"</td></tr>"); //有內容
       }
 
      if (LoopNum!=PageRowCount)  //有空行則列印空行補齊最末一頁
          for (int j=1;j<=LoopNum; j++)
            {
                   out.print("<tr><td> </td></tr>");//無內容
            }
%>

8. 測試並繼續修改。

相關推薦

JSP報表列印簡單解決方案

1. 在Word或Excel中製作報表的樣式。        Excel的行高和列寬單位無法用mm或cm表示。        需要計算。在1024*768下,1CM約為38畫素。         以此為基準,可計算並控制報表的行列位置。2. 在Word中設定“表格——標題行重

什麼是跨域以及幾簡單解決方案

要明白什麼是跨域之前,首先要明白什麼是同源策略?同源策略就是用來限制從一個源載入的文件或指令碼與來自另一個源的資源進行互動。那怎樣判斷是否是同源呢?如果協議,埠(如果指定了)和主機對於兩個頁面是相同的,則兩個頁面具有相同的源,也就是同源。也就是說,要同時滿足以下3個條件,才能

在ssm框架下時間互動的簡單解決方案

  總結基於ssm框架下的統一快速處理時間的簡單方案。 1 約定與頁面互動格式 後臺程式為前端頁面提供介面,統一使用時間字串互動:包含兩種字串格式:"yyyy-MM-dd HH:mm:ss"和"yyy

簡單,輕量,靈活的C#物件轉Json物件的方案

簡單,是因為只有一個類 輕量,是因為整個類程式碼只有300行 靈活,是因為擴充套件方式只需要繼承重寫某個方法即可   首先我將這個類稱之為JsonBuilder,我希望它以StringBuilder的方式來實現Json字串的轉換 public class JsonBu

簡單的加解密算法

coder 額外 lai hack crypt decrypt pro simple 無需   此算法源碼最初由 Borland 的 Delphi 語言編寫,似乎 Allen Bauer 是原作者,源碼如下。 const cMulKey = 52845; cA

SpringBank 開發日誌 簡單的攔截器設計實現

exp bst 一個 pin factory span 之前 system request 當交易由Action進入Service之前,需要根據不同的Service實際負責業務的不同,真正執行Service的業務邏輯之前,做一些檢查工作。這樣的攔截器應該是基於配置的,與Se

簡單的生產環境部署Node.js程序方法

set process 一次 ann 來安 環境配置 load 修改 evel 最近在部署Node.js程序時,寫了段簡單的腳本,發覺還挺簡單的,忍不住想與大家分享。 配置文件 首先,本地測試環境和生產環境的數據庫連接這些配置信息是不一樣的,需要將其分開為兩個文件存儲

簡單的對象賦值方法,定義實例後以{}賦值,比傳統方法更簡潔

method ott static set num arr nbsp st2 () public class Rectangle { public Point TopLeft { get; set; } public Point Botto

簡單的圖像修復方法

col nes gb2 tle .com splay 產生 end left 該方法可以用於美顏中的祛斑,通過快速叠代的方式去除斑點。 假設輸入圖像為: 計算方向權重: 對於其他方向,操作類似We。 最終的輸出為: 對要修復的區域,反復進行同樣的操作即可。 簡單

php生成excel的另簡單方法

.com com span 來看 nbsp pan blog table content 之前我用table的方式寫過excel,還用php-excel這個類庫寫過excel。今天,我再向大家推薦一個超級簡單的寫excel的方法。 代碼: $xstr = "問題id\t問

java安全性的簡單思路

授權 安全 時間格式 判斷 第三方接口 對比 當前時間 服務 格式 關於接口安全性的考慮。這客戶端在調用接口時,將acId授權碼以加密的方式(可逆加密方式)傳遞過來, 服務端這邊接收後進行解密,然後在服務器端這邊的授權名單中進行匹配,判斷該授權碼是否被授權,從而判斷第三方調

SSM框架之關於使用JSP作為視圖展示問題解決方案

span value 必須 div see 共享 web session問題 com JSP作為視圖層展示數據,已經有很長一段時間了,不管是在校學習還是企業工作,總會或多或少接觸這個。特別是對於一些傳統中小型或者一些幾年前的企業而言,有很多使用JSP作為視圖展示層。 JSP

數獨問題的簡單演算法程式碼實現

五一期間無聊時想起去年考研複試有一道上機題目當時沒作出來,於是一時興起想重新拾起看看是當時太緊張,還是自己能力不足。然後發現這道題目還真稍微有些難度,相當於一道數獨問題(sudoku)的簡化版。自己想來想去也只能想到兩種演算法,一種是拿剩餘元素做全排列測試,一種是回溯法測試。最後只實現了一個全排

關於ASP.NET MVC 5 的簡單的身份驗證方式:FormsAuthentication.Authenticate

在ASP.NET MVC 5中,身份驗證分別有三種方式。分別為使用FormsAuthentication、MemberShip和Identity進行驗證。   (PS:本系列的邏輯程式碼請勿直接用於生產,請自己多加一層抽象後再投入使用)   為了展示這三種方式,我們先新建一個MVC

Python單例的簡單寫法

this args self. name 創建方式 方法 沒有 easily 獲取 最原始的想法就是每個類都重寫new方法。 class Dog: dog = None def __new__(cls, *args, **kwargs):

js 同一個瀏覽器 限制兩個賬號登入 簡單解決方案

本文出自 http://blog.csdn.net/wyk304443164 你可以使用 以下兩種方案簡單處理 sessionStorage+JWT——伺服器需要修改 儲存sessionStorage+localStorage,兩個地方都存一下,然

移動端畫素解決方案

@charset "utf-8"; .border, .border-top, .border-right, .border-bottom, .border-left, .border-topbottom, .border-rightleft, .border-topleft, .border-righ

判斷中文文字編碼格式是gbk還是utf-8的簡單方式

import java.io.*; public class charsetTest { public static String charsetType(String fileName) throws IOException { BufferedReader reader =

LCG(linear congruential generator): 簡單的隨機數生成演算法

目錄 LCG演算法 python 實現 LCG演算法 LCG(linear congruential generator)線性同餘演算法,是一個古老的產生隨機數的演算法。由以下引數組成: 引數 m a c X

LCG(linear congruential generator): 簡單的隨機數生成算法

ble 優點 line 寫入 head 速度 body generator 上一個 目錄 LCG算法 python 實現 LCG算法 LCG(linear congruential generator)線性同余算法,是一個古老的產生隨機數的算法。由以下參數組成: