servlet生成Excel格式的数据:首先导入jxl.jar包。
在servlet中处理:
public void doPost(HttpServletRequrequest, HttpServletResponse response) throws ServletException, IOException { List theDataList = new ArrayList(); response.setContentType("text/html"); response.addHeader("Content-Disposition", "inline; filename="名称".xls"); JxlExcelWriter jxlExcelWriter = new JxlExcelWriter(); //封装数据 Object [] data = {temap.get("标题1内容"),temap.get("标题2内容"),temap.get("标题3内容"),temap.get("标题4内容"),temap.get("标题5内容"),temap.get("标题6内容")}; theDataList.add(data); //数据对象添加到List对象中 String[] theFirstCells = { "标题1", "标题2","标题3", "标题4", "标题5", "标题6"}; jxlExcelWriter.writerExcel(out, theDataList, theFirstCells); out.flush(); out.close(); } jxlExcelWriter类: import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; public class JxlExcelWriter { public void writerExcel(OutputStream out, List list, String[] title) throws IOException { if (list == null) throw new IllegalArgumentException("写excel流需要List参数!!!"); try { WritableWorkbook workbook = Workbook.createWorkbook(out); WritableSheet ws = workbook.createSheet("sheet1", 0); int rowNum = 0; if (title != null) { putRow(ws, 0, title); rowNum = 1; } for (int i = 0; i < list.size(); i++, rowNum++) { Object[] cells = (Object[]) list.get(i); putRow(ws, rowNum, cells); } workbook.write(); workbook.close(); } catch (IOException e) { System.out.println("jxl write file exception, cause by" + e.getMessage()); } catch (RowsExceededException e) { System.out.println("RowsExceededException, cause by" + e.getMessage()); } catch (WriteException e) { System.out.println("writeException,cause by" + e.getMessage()); } } private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException { for (int j = 0; j < cells.length; j++) { Label cell = new Label(j, rowNum, "" + cells[j]); ws.addCell(cell); } } /** * 将二维数组的数据写到excel * @author cyb * @throws WriteException * @throws RowsExceededException */ public void writeToExcel(File theFile, List theDataList, String[] title) throws RowsExceededException, WriteException { WritableWorkbook theExcelFileWorkbook; try { theExcelFileWorkbook = Workbook.createWorkbook(theFile); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("创建excel异常!!"); return; } WritableSheet theExcelFileSheet = theExcelFileWorkbook.createSheet("sheet1", 0); int rowNum = 0; if (title != null) { putRow(theExcelFileSheet, 0, title); rowNum = 1; } for (int i = 0; i < theDataList.size(); i++, rowNum++) { Object[] cells = (Object[]) theDataList.get(i); try { putRow(theExcelFileSheet, rowNum, cells); } catch (RowsExceededException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("超出excel的最大行数!!"); } catch (WriteException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("写入excel异常!!"); return; } } try { theExcelFileWorkbook.write(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { theExcelFileWorkbook.close(); } catch (WriteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }