一、功能:将界面table数据,导出为excel文件保存
二、具体实现:
2.1 jsp
序号书名作者价格
1 | 科幻世界 | 匿名 | 10 |
2 | 语文 | 驾教育出版社 | 23.5 |
3 | 落花 | 张三 | 10.5 |
注:button: <input type="button" value="导出excel" οnclick="exportExcel()">
确定 引入调用的正确 js文件
2.2 js
- <SPAN style="FONT-SIZE: 14px">function exportExcel(){
- alert("导出");
- var archiveaccount = document.forms['arcAccount'];
- archiveaccount.submit();
- }</SPAN>
function exportExcel(){ alert("导出"); var archiveaccount = document.forms['arcAccount']; archiveaccount.submit(); }
2.3 action
- <SPAN style="FONT-SIZE: 14px">public String exportExcel() throws Exception {
- List<List<Object>> data = getExportData(); //将表格数据转换为list,此方法省略
- String fn = new String(("ArchiveAccount"+new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())).getBytes(), "ISO-8859-1")+ ".xls"; //设置导出文件名
- if(createExcel(fn, data, "统计结果")){
- return "success";
- }
- return "init";
- }</SPAN>
public String exportExcel() throws Exception { List<List<Object>> data = getExportData(); //将表格数据转换为list,此方法省略 String fn = new String(("ArchiveAccount"+new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())).getBytes(), "ISO-8859-1")+ ".xls"; //设置导出文件名 if(createExcel(fn, data, "统计结果")){ return "success"; } return "init"; }
- <SPAN style="FONT-SIZE: 14px"> /**
- * 创建新的Excel 工作簿
- * */
- public boolean createExcel(String filename, List<List<Object>> data,String sheetName) {
- HSSFWorkbook workbook = null;
- HSSFSheet sheet = null;
- HSSFRow[] rows = null;
- HSSFCell[][] cells = null;
- workbook = new HSSFWorkbook();
- if (sheetName.trim().equals("")) {
- sheet = workbook.createSheet("表");
- } else {
- sheet = workbook.createSheet(sheetName);
- }
- try {
- int row = 0;
- int col = 0;
- if (data.size() > 0) {
- row = data.size();
- col = data.get(0).size();
- }
- rows = new HSSFRow[row];
- cells = new HSSFCell[row][col];
- for (int i = 0; i < data.size(); i++) {
- rows[i] = sheet.createRow((short) i);
- for (int j = 0; j < data.get(i).size(); j++) {
- cells[i][j] = rows[i].createCell((short) j);
- cells[i][j].setCellType(HSSFCell.CELL_TYPE_STRING);
- if (data.get(i).get(j) != null
- && !data.get(i).get(j).toString().trim().equals("")) {
- cells[i][j].setCellValue(data.get(i).get(j).toString()
- .trim());
- } else {
- cells[i][j].setCellValue("");
- }
- }
- }
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- HttpUitls.getResponse().setHeader("Content-disposition","p_w_upload; filename=" +filename);
- workbook.write(baos);
- byte[] ba = baos.toByteArray();
- excelStream = new ByteArrayInputStream(ba);
- return true;
- } catch (Exception e) {
- return false;
- }
- }</SPAN>
/** * 创建新的Excel 工作簿 * */ public boolean createExcel(String filename, List<List<Object>> data,String sheetName) { HSSFWorkbook workbook = null; HSSFSheet sheet = null; HSSFRow[] rows = null; HSSFCell[][] cells = null; workbook = new HSSFWorkbook(); if (sheetName.trim().equals("")) { sheet = workbook.createSheet("表"); } else { sheet = workbook.createSheet(sheetName); } try { int row = 0; int col = 0; if (data.size() > 0) { row = data.size(); col = data.get(0).size(); } rows = new HSSFRow[row]; cells = new HSSFCell[row][col]; for (int i = 0; i < data.size(); i++) { rows[i] = sheet.createRow((short) i); for (int j = 0; j < data.get(i).size(); j++) { cells[i][j] = rows[i].createCell((short) j); cells[i][j].setCellType(HSSFCell.CELL_TYPE_STRING); if (data.get(i).get(j) != null && !data.get(i).get(j).toString().trim().equals("")) { cells[i][j].setCellValue(data.get(i).get(j).toString() .trim()); } else { cells[i][j].setCellValue(""); } } } ByteArrayOutputStream baos = new ByteArrayOutputStream(); HttpUitls.getResponse().setHeader("Content-disposition","p_w_upload; filename=" +filename); workbook.write(baos); byte[] ba = baos.toByteArray(); excelStream = new ByteArrayInputStream(ba); return true; } catch (Exception e) { return false; } }
转载于:https://blog.51cto.com/ajiao13/1133869