1. 程式人生 > 其它 >Java中使用jxl.jar將資料匯出為excel檔案

Java中使用jxl.jar將資料匯出為excel檔案

  Java對Excel檔案的讀寫操作可由jxl.jar或poi.jar實現,這裡使用jxl.jar完成對Excel檔案的匯出。

一、將Excel檔案匯出在本地

步驟:
  建立檔案 -> 建立工作簿 -> 建立Sheet -> 加入資料 -> 寫入檔案。

示意圖


示例:由指定的陣列生成Excel檔案,匯出在D盤根目錄下,檔名為‘ExportExcelToLocal.xls’。
實現程式

`
package cn.exporttoexceldemo;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import java.io.File;

public class ExportExcelToLocal {
public static void main(String[] args) {
String title[] = {"工號","姓名","部門"};
String content[][] = {
{"001","喬峰","財務部"},
{"002","段譽","銷售部"},
{"003","虛竹","採購部"},
{"004","張無忌","研發部"},
{"005","黃蓉","人力資源部"}
};
//1.建立一個檔案
File file = new File("D:\ExportExcelToLocal.xls");
try {

//2.建立WritableWorkbook工作簿物件,並將其接入建立的檔案
WritableWorkbook writableWorkbook = Workbook.createWorkbook(file);

        //3.建立一個Sheet,第一個引數是sheet的名稱,第二個引數是索引號
        //(可通過WritableFont、WritableCellFormat等方法對單元格的屬性進行設定)
        WritableSheet writableSheet = writableWorkbook.createSheet("sheet1", 0);

        //4.在sheet中加入資料
        for (int i = 0; i < title.length; i++) { //標題行
            writableSheet.addCell(new Label(i,0,title[i])); //new Label(列號,行號,內容)
        }
        for (int i = 0; i < content.length; i++) { //內容
            for (int j = 0; j < content[0].length; j++){
                writableSheet.addCell(new Label(j, i+1, content[i][j]));
            }
        }

        //5.對WritableWorkbook物件執行寫入操作
        writableWorkbook.write();
        writableWorkbook.close(); //關閉writableWorkbook

    }catch (Exception e){
        e.printStackTrace();
    }

}

}
`

生成的excel檔案的內容



## 二、將Excel檔案匯出在客戶端,由瀏覽器下載

  實現生成並由瀏覽器下載Excel檔案的功能有兩種方式:1.先將Excel檔案匯出在伺服器磁碟上,再由客戶端下載;2.直接匯出至輸出流,由瀏覽器下載為Excel檔案。這裡演示直接將資料內容匯出至輸出流,完成由瀏覽器下載為Excel檔案的功能。

步驟:定義輸出流 ->定義工作簿-> 輸出流接入網路響應 -> 工作簿接入輸出流 -> 建立sheet -> 加入資料 -> 寫入輸出流。

示意圖

示例:將指定陣列的資料匯出至輸出流,由瀏覽器下載為Excel檔案,檔名為‘ExportExcelToClient.xls’。

實現程式

`
package cn.exporttoexceldemo;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

@WebServlet("/ExportExcelToClientServlet")
public class ExportExcelToClientServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String title[] = {"工號","姓名","部門"};
    String content[][] = {
            {"001","喬峰","財務部"},
            {"002","段譽","銷售部"},
            {"003","虛竹","採購部"},
            {"004","張無忌","研發部"},
            {"005","黃蓉","人力資源部"}
    };
    String fileName = "ExportExcelToClient.xls"; //定義檔名
    //設定編碼
    response.setContentType("application/vnd.ms-excel;charset=UTF-8");
    try {
        if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){ //IE瀏覽器
            fileName = URLEncoder.encode(fileName,"UTF-8");
        }else {
            fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
        }
        response.setHeader("Content-Disposition", "p_w_upload; filename="+fileName);
    }catch (UnsupportedEncodingException e){
        e.printStackTrace();
    }
    //1.定義一個輸出流物件
    ServletOutputStream servletOutputStream = null;

    //2.定義一個WritableWorkbook工作簿物件
    WritableWorkbook writableWorkbook = null;

    try {
        //3.將輸出流物件接入響應端response
        servletOutputStream = response.getOutputStream();

        //4.將工作簿物件接入輸出流物件
        writableWorkbook = Workbook.createWorkbook(servletOutputStream);

        //5.建立一個Sheet,第一個引數是sheet的名稱,第二個引數是索引號
        WritableSheet writableSheet = writableWorkbook.createSheet("sheet1",0);
        
        //6.在sheet中加入資料
        for (int i = 0; i < title.length; i++) { //標題行
            writableSheet.addCell(new Label(i,0,title[i]));
        }
        for (int i = 0; i < content.length; i++) { //內容
            for (int j = 0; j < content[0].length; j++){
                writableSheet.addCell(new Label(j, i+1, content[i][j]));
            }
        }

        //7.對工作簿物件執行寫入操作
        writableWorkbook.write();
        servletOutputStream.flush();
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        try {
            writableWorkbook.close();
            servletOutputStream.close();
        }catch (Exception e1){
            e1.printStackTrace();
        }
    }

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
}

}
`

生成的excel檔案的內容

End.