`
f303153041
  • 浏览: 44783 次
社区版块
存档分类
最新评论

JSP页面 直接导出文本文件 对泛型进行反射

 
阅读更多
大多数导出数据都用EXCEL吧,但是数据量过大的时候 导出EXCEL是个头疼的事,所以这时候选择直接导出文本文件,为了便于使用,此方法程序员只需要设置一下响应头格式,传递对象集合 和 列标题 即可
ACTION 里面的一部分:
response.setCharacterEncoding("UTF-8");
     response.setContentType("application/octet-stream");//可以对文件进行另存为操作
     response.addHeader("Content-Disposition","attachment; filename="+fileName+".txt");
         TxtExport exp = new TxtExport();
         String[] titles = {"时间","所在分公司","所在区域","客户经理","Boss工号","集团编码","产品名称","号码数量","单价"
         ,"计量奖金","封顶值","奖金"};
         exp.export(fileName,titles,list,response.getOutputStream());

现在是导出方法 很简单
public class TxtExport<T> {

     public  void export(String title, String[] headers, 
             Collection<T> dataset, OutputStream out){

    StringBuilder  content   = new StringBuilder();
    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(out));
    try{
    for(String tip:headers){
    content.append(tip).append("||");
    bw.append(tip).append("||");
    }
             bw.newLine();
             content.append("\n");
     
      Iterator<T> it = dataset.iterator(); 
          int index = 0; 
          while (it.hasNext()) 
          { 
              index++;
              content.append(index).append(" ");
              bw.append(String.valueOf(index)).append(" ");
              T t = (T) it.next(); 
              Field[] fields = t.getClass().getDeclaredFields(); 
              for (int i = 0; i < fields.length; i++) 
              { 
                  Field field = fields[i]; 
                  String fieldName = field.getName(); 
                  String getMethodName =  "get"
                       + fieldName.substring(0, 1).toUpperCase() 
                       + fieldName.substring(1); 
                  Class tCls = t.getClass(); 
                  try{
                  Method getMethod = tCls.getMethod(getMethodName,new Class[]{}); 
                  Object value = getMethod.invoke(t, new Object[]{});
                  if(value ==null){
                  value = "      ";
                  }
                  content.append(String.valueOf(value)).append("||");
                
                  bw.append(String.valueOf(value)).append("||");
                 
                  }catch(Exception e){
                  e.printStackTrace();
                  }
               }
              content.append("\n");
              bw.newLine();
          }
          System.out.println(content.toString());
         
          bw.flush();
          bw.close();
          }catch(Exception e){
          e.printStackTrace();
          }finally { 
          try { 
           bw.close();
           out.close(); 
        } catch (Exception e) { 
           e.printStackTrace(); 
             } 
          }
     }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics