首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSP 動態生成 Word、Excel、PDF 文件完整指南

     編輯:關於JSP

在 Web 應用系統中,文件匯出功能幾乎是標準配置。無論是將資料庫查詢結果導出為 Word 報表、Excel 試算表,還是需要從資料庫 BLOB 欄位讀取並顯示文件,掌握 JSP 動態生成與輸出文件的技巧都至關重要。本文系統整理了客戶端直出生成、資料庫 Blob 讀取輸出等核心場景,提供可直接落地的程式碼範例。

一、客戶端直接生成 Word 文件

最簡單的方式是在 JSP 頁面頂部修改 contentType,瀏覽器會自動以 Word 格式開啟或下載頁面內容。

1. 基本設定

<%@ page contentType="application/msword; charset=utf-8" %>

將原本的 text/html 改為 application/msword,並建議使用 UTF-8 編碼避免中文亂碼。頁面上的 HTML 表格、樣式將直接在 Word 中呈現。

2. 觸發下載對話框

若需彈出「另存新檔」提示,而非直接在瀏覽器開啟,需加入 Content-Disposition 標頭:

<%
    response.setHeader("Content-Disposition", "attachment;filename=" + docName + ".doc");
%>

docName 可動態傳入(如 <%=docName%>),實現自訂檔名下載。

3. 進階排版技巧

若需依照預先設計的 Word 版面輸出,可先在 Word 編排好格式,另存為「網頁」格式(會產生 HTML),再將該 HTML 代碼貼入 JSP 中,即可保留原有排版風格。

二、從資料庫 BLOB 欄位讀取並輸出 Word 實體

許多 OA 系統將上傳的 Word 文件以二進位方式存入 Oracle BLOB 欄位。下方示範如何透過自訂 Bean 讀取並輸出給客戶端。

核心 Bean 實作(getBlobBean)

package yourpackage;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import oracle.sql.*;
import beans.yourbeanpackage.getBlobBean;

/**
 * 從 Oracle BLOB 讀取 Word 文件並輸出
 */
public class BlobReader {
    // 具體實作略,重點在於:
    // 1. 取得 Connection
    // 2. 執行 SELECT blob_column FROM table WHERE id=?
    // 3. 以 getBinaryStream() 讀取輸出流
    // 4. response.setContentType("application/msword")
    // 5. 將輸入流寫入 response.getOutputStream()
}

關鍵點提醒:

  • 需引入 oracle.sql.BLOB 相關類別,確保驅動程式相容。
  • 輸出前務必設定正確的 Content-Type 與 Content-Disposition。
  • 大文件建議分塊讀寫,避免記憶體溢位。

三、擴充:Excel 與 PDF 生成方向

本文著重於 Word 生成與 Blob 讀取。若需生成 Excel,可將 contentType 設為 application/vnd.ms-excel,並輸出 HTML 表格;若需標準 PDF,建議引入 iText 或 Apache PDFBox 函式庫在 Servlet 層生成,再由 JSP 或 Controller 回傳二進位流,架構更清晰且效能更佳。

總結

JSP 透過調整 HTTP 標頭即可實現簡易文件匯出;複雜排版可借助 HTML 過渡;資料庫 Blob 讀取則需搭配 JDBC 流式處理。實務上建議將文件生成邏輯移至 Service 層,JSP 僅負責回傳結果,符合 MVC 分層原則,利於維護與擴充。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved