Java导出数据到Excle

27 篇文章 0 订阅
 

ExcelReporter.java

package com.pub;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ExcelReporter {
 public boolean exportToExcel(HttpServletResponse response, String filename,
   String sheetname, String[] titles, List<List> rows) throws Exception {
  OutputStream os = null;
  boolean b1 = true;
  try {
   os = response.getOutputStream(); // 取得输出流
   response.reset(); // 清空输出流
   response.setHeader("Content-disposition", "attachment;  filename="
     + filename + ".xls"); // 设定输出文件头
   response.setContentType("application/msexcel"); // 定义输出类型
  } catch (IOException ex) {
   b1 = false;
   System.out.println("流操作错误:" + ex.getMessage());
  }
  WritableWorkbook workbook = null;
  try {
   // 创建新的Excel 工作簿
   workbook = Workbook.createWorkbook(os);
   // 在Excel工作簿中建一工作表,其名为:第一页
   jxl.write.WritableSheet wsheet = workbook.createSheet(sheetname, 0); // sheet();
   WritableFont font = new WritableFont(WritableFont.ARIAL, 14,
     WritableFont.BOLD, false,
     jxl.format.UnderlineStyle.NO_UNDERLINE,
     jxl.format.Colour.BLACK);
   WritableCellFormat format = new WritableCellFormat(font);
   
   
   //循环标头
   for (int i = 0; i < titles.length; i++) {
    Label wlabel1 = new Label(i, 0, titles[i], format); // 列、行单元格中的文本、文本格式
    wsheet.addCell(wlabel1);
   }
   font = new jxl.write.WritableFont(WritableFont.createFont("宋体"),
     12, WritableFont.NO_BOLD, false,
     jxl.format.UnderlineStyle.NO_UNDERLINE,
     jxl.format.Colour.BLACK);
   format = new jxl.write.WritableCellFormat(font);
   

   //循环表内数据
   for(int i =0;i<rows.size();i++){
    List row = rows.get(i);
    for(int j =0;j<row.size();j++){
     Object o = row.get(j);
     Label label = new Label(j,i+1,o.toString(),format);//输出表内数据时,必须行号加1,让出标题否则会覆盖标题
     wsheet.addCell(label);
    }
   }
   
/*   Iterator key = table.keySet().iterator();
   for (int i = 0; i < table.size(); i++) { // 在索引0的位置创建行(最顶端的行)
     Object o = key.next();
     System.out.println(o.toString()+"%%%%%%%"+table.size());
     System.out.println(table.get(o).toString());
     Label wlabel1 = new Label(0, i+1, String.valueOf(i+1), format); // 行、列、单元格中的文本、文本格式
     Label wlabel2 = new Label(1, i+1, o.toString(), format);
     Label wlabel3 = new Label(2, i+1, table.get(o).toString(), format);
     wsheet.addCell(wlabel1);
     wsheet.addCell(wlabel2);
     wsheet.addCell(wlabel3);
   }*/
   workbook.write(); // 写入文件
  } catch (WriteException ex1) {
   b1 = false;
   System.out.println("WriteException:" + ex1.getMessage());
  } catch (IOException ex2) {
   b1 = false;
   System.out.println("IOException:" + ex2.getMessage());
  }
  workbook.close();
  os.close();
  return b1;
 }
}


Action中添加:

/**
  * 导出数据
  */
 public ActionForward exportExcel(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  // 实例化一个范性集合
  List<List> rows = new ArrayList<List>();
  //获取所有的用户
  List list= this.userBiz.getAllUsers();
  
  for(int i=0;i<list.size();i++){
   List row = new ArrayList();
   Users user=(Users)list.get(i);
   row.add(user.getUname());
   row.add(user.getUpass());
   row.add(user.getUage());
   rows.add(row);   
  }
  
  // Excel文件名
  Date date = new Date();
  SimpleDateFormat df = new SimpleDateFormat("yyMMddHHmmss");// 得到当前时间
  String da = df.format(date);
  String fileName = da + "";
  // Excel表头
  String[] titles = { "姓名", "性别", "年龄", };
  String sheetName = "简历表";
  // 实例化工具类
  ExcelReporter ep = new ExcelReporter();
  // 调用工具类方法,导出
  ep.exportToExcel(response, fileName, sheetName, titles, rows);
  return null;
 }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值