說明:
1.下載http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.7-20101029.zip后,將poi-3.7目錄下的jar包放入lib目錄, 再將此工程載入Eclipse/MyEclipse即可。
2.界面中文本框供輸出數據量用,在我的T410上測試數據量在3.5W~3.6W之間,再多就報java.lang.OutOfMemoryError錯誤。附帶提一下輸出數據量的問題,如果修飾單元格的代碼越簡單,那么能輸出的數據就越多,反之數據就少了。
3.主要代碼如下:
Sevlet代碼:
package com.heyang.action;
import java.io.BufferedOutputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.heyang.service.DownloadService;
/**
* POI下載的Servlet
* @author heyang
*
*/
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 56890894234786L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
String fileName="download.xls";
response.setHeader("Content-disposition", "attachment; filename="+fileName);// 設定輸出文件頭
response.setContentType("application/msexcel");// 定義輸出類型
try{
int rowCount=Integer.parseInt(request.getParameter("rowCount"));
// 表頭行
String[] headers=new String[]{"更新ID","賬期","基站編號","基站名稱","站點狀態","部門名稱","站點類型","占用類型","預提(元)","未核銷金額","上期未核銷","開始月份","結束月份","上期抄表數","本期抄表數","電價","電量","本期報賬(元)","補提(元)","預提匯總(元)","成本中心","專業","本期報賬單號","基站類別","線損"};
DownloadService service=new DownloadService();
HSSFWorkbook workbook=service.generateWorkbook(rowCount, headers.length);
ServletOutputStream out = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(out);
workbook.write(bos);
bos.flush();
bos.close();
}catch(Exception ex){
ex.printStackTrace();
}
return ;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
doPost(request, response);
}
}
Service代碼:
package com.heyang.service;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* 下載服務類
*
* @author heyang
*
*/
public class DownloadService{
/**
* 生成工作簿對象
* @param rowCount
* @param columnCount
* @return
*/
public HSSFWorkbook generateWorkbook(int rowCount,int columnCount) throws Exception{
HSSFWorkbook workbook = new HSSFWorkbook(); //產生工作簿對象
HSSFSheet sheet = workbook.createSheet(); //產生工作表對象
String value=null;
HSSFRow row = null;
HSSFCell cell = null;
for(int i=0;i<rowCount;i++){
row = sheet.createRow(i);//創建一行
for(int j=0;j<columnCount;j++){
value=""+i+","+j;
cell = row.createCell(j);
cell.setCellValue(value);
cell = null;
}
row = null;
}
row = null;
cell = null;
return workbook;
}
}
4.工程下載地址: