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 {
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.