JXL以下載方式匯出excel(JSP調用方式)

來源:互聯網
上載者:User

 -----------------------collectCorrectExp.jsp-------------------------------------------

<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@page import="java.io.OutputStream"%>
<%@page import="com.datacollect.DataCollectCorrectExp"%>
<%
 OutputStream os = response.getOutputStream(); // 取得輸出資料流
 response.reset();// 清空輸出資料流

 //不能用用中文設定 filename,會出錯
    response.setHeader("Content-disposition", "attachment; filename=student.xls");// 設定輸出檔案頭
 response.setContentType("application/msexcel");// 定義輸出類型
 
 DataCollectCorrectExp dccExp = new DataCollectCorrectExp();
 dccExp.createXls(os);
%>

 

 -----------------------collectCorrectExp.jsp-------------------------------------------

 

package com.datacollect;

import java.io.FileOutputStream;     
import java.io.IOException;
import java.io.OutputStream;     
import java.text.SimpleDateFormat;     
import java.util.ArrayList;     
import java.util.Date;     
import java.util.List;  

import jxl.*;     
import jxl.format.Alignment;     
import jxl.format.Border;     
import jxl.format.BorderLineStyle;     
import jxl.format.CellFormat;     
import jxl.write.Boolean;     
import jxl.write.Label;     
import jxl.write.Number;     
import jxl.write.WritableCellFormat;     
import jxl.write.WritableFont;     
import jxl.write.WritableSheet;     
import jxl.write.WritableWorkbook;     

/**
 * 摘要資料抵消模版匯出
 * @author yangning
 *
 */
public class DataCollectCorrectExp {

 public void createXls(OutputStream os) {
     // 準備設定excel工作表的標題     
     String[] title = {"編號","產品名稱","產品價格","產品數量","生產日期","產地","是否出口"};
    try {     
        // 獲得開始時間     
        long start = System.currentTimeMillis();     
        // 輸出的excel的路徑     
//             String filePath = "c:/test.xls";     
        // 建立Excel工作薄     
         WritableWorkbook wwb;     
        // 建立立一個jxl檔案,即在C盤下產生test.xls     
//           OutputStream os = new FileOutputStream(filePath);     
         wwb=Workbook.createWorkbook(os);     
        // 添加第一個工作表並設定第一個Sheet的名字     
         WritableSheet sheet = wwb.createSheet("產品清單", 0);     
         Label label;     
        for(int i=0;i<title.length;i++){     
            // Label(x,y,z)其中x代表儲存格的第x+1列,第y+1行, 儲存格的內容是y     
            // 在Label對象的子物件中指明儲存格的位置和內容     
             label = new Label(i,0,title[i]);
            
            // 將定義好的儲存格添加到工作表中     
             sheet.addCell(label);     
         }     
        // 下面是填充資料     
        /* 
          * 儲存數字到儲存格,需要使用jxl.write.Number 
          * 必須使用其完整路徑,否則會出現錯誤 
          * */    
        // 填充產品編號     
        jxl.write.Number number = new jxl.write.Number(0,1,20071001);     
         sheet.addCell(number);     
        // 填充產品名稱     
         label = new Label(1,1,"金鴿瓜子");     
         sheet.addCell(label);     
        /* 
          * 定義對於顯示金額的公用格式 
          * jxl會自動實現四捨五入 
          * 例如 2.456會被格式化為2.46,2.454會被格式化為2.45 
          * */    
        jxl.write.NumberFormat nf = new jxl.write.NumberFormat(" .  ");     
        jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);     
        // 填充產品價格     
        jxl.write.Number nb = new jxl.write.Number(2,1,2.45,wcf);     
         sheet.addCell(nb);     
        // 填充產品數量     
        jxl.write.Number numb = new jxl.write.Number(3,1,200);     
         sheet.addCell(numb);     
        /* 
          * 定義顯示日期的公用格式 
          * 如:yyyy-MM-dd hh:mm 
          * */    
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");     
         String newdate = sdf.format(new Date());     
        // 填充出產日期     
         label = new Label(4,1,newdate);     
         sheet.addCell(label);     
        // 填充產地     
         label = new Label(5,1,"陝西西安");     
         sheet.addCell(label);     
        /* 
          * 顯示布爾值 
          * */    
        jxl.write.Boolean bool = new jxl.write.Boolean(6,1,true);     
         sheet.addCell(bool);     
        /* 
          * 合併儲存格 
          * 通過writablesheet.mergeCells(int x,int y,int m,int n);來實現的 
          * 表示將從第x+1列,y+1行到m+1列,n+1行合并 
          * 
          * */    
         sheet.mergeCells(0,3,2,3);     
         label = new Label(0,3,"合并了三個儲存格");     
         sheet.addCell(label);     
        /* 
          * 
          * 定義公用字型格式 
          * 通過擷取一個字型的樣式來作為模板 
          * 首先通過web.getSheet(0)獲得第一個sheet 
          * 然後取得第一個sheet的第二列,第一行也就是"產品名稱"的字型 
          * */    
         CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();     
         WritableCellFormat wc = new WritableCellFormat();     
        // 設定置中     
         wc.setAlignment(Alignment.CENTRE);     
        // 設定邊框線     
         wc.setBorder(Border.ALL, BorderLineStyle.THIN);     
        // 設定儲存格的背景顏色     
         wc.setBackground(jxl.format.Colour.RED);     
         label = new Label(1,5,"字型",wc);     
         sheet.addCell(label);     

        // 設定字型     
        jxl.write.WritableFont wfont = new jxl.write.WritableFont(WritableFont.createFont("隸書"),20);     
         WritableCellFormat font = new WritableCellFormat(wfont);     
         label = new Label(2,6,"隸書",font);     
         sheet.addCell(label);     
             
        // 寫入資料     
         wwb.write();     
        // 關閉檔案     
         wwb.close();     
        long end = System.currentTimeMillis();     
         System.out.println("----完成該操作共用的時間是:"+(end-start)/1000);     
     } catch (Exception e) {     
         System.out.println("---出現異常---");     
         e.printStackTrace();     
     }   
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

 }

}

 

========================================================================

 

Struts Action版本

http://blog.163.com/ycyu05@126/blog/static/917133612009731111054968/

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.