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.