该代码需要导入jxl.jar包
<%@ page language="java" import="java.util.*,java.io.*,jxl.write.WritableWorkbook,jxl.Workbook,jxl.write.WritableSheet,jxl.write.Label" pageEncoding="UTF-8"%> <% try { String city = "北京市"; String grade = "成绩"; response.setContentType("application/vnd.ms-excel"); //保证不乱码 String fileName = city + "excel表格数据.xls"; /* //到第一个值项是attachment,这是真正的关键,设定了这个值,浏览器就会老老实实地显示另存为对话框,如果这个值设成 inline,则无论怎样浏览器都会自动尝试用已知关联的程序打开文件。 response.addHeader("Content-Disposition","attachment; filename=\""+ new String(fileName.getBytes("gb2312"),"iso8859-1") + "\""); */ response.setHeader("Content-Disposition", "attachment;" + " filename=" + new String(fileName.getBytes(), "ISO-8859-1")); OutputStream os = response.getOutputStream(); out.clear(); out = pageContext.pushBody(); //这2句一定要,不然会报错。 // 新建excel的工作薄文件 WritableWorkbook book = Workbook.createWorkbook(os); // 生成名为"第一页"的工作表,参数0表示这是第一页 WritableSheet sheet1 = book.createSheet("第一页", 0); /***********start第一行(各个列的标题)************/ //第一列第一行(0,0) Label label1 = new Label(0, 0, "名字"); // 将定义好的单元格添加到工作表中 sheet1.addCell(label1); //第二列第一行 Label label2 = new Label(1, 0, "性别"); sheet1.addCell(label2); //第三列第一行 Label label3 = new Label(2, 0, "年龄"); sheet1.addCell(label3); /***********end第一行(各个列的标题)************/ for(int i=1; i<=50; i++){ //控制行数(从第二行开始) for(int j=0 ;j<3 ;j++) { //控制列数 if(j==0) { Label label = new Label(j, i, "zp"); sheet1.addCell(label); } if(j==1) { Label label = new Label(j, i, "男"); sheet1.addCell(label); } if(j==2) { Label label = new Label(j, i, "23"); sheet1.addCell(label); } } } // 写入数据并关闭文件 book.write(); book.close(); os.close(); } catch (Exception e) { System.out.println("生成信息表(Excel格式)时出错:"); e.printStackTrace(); } %>