大多数导出数据都用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();
}
}
}
}
分享到:
相关推荐
对java泛型以及反射机制进行原理和应用上的讲解,帮助初学者对这两个概念进行更轻松的掌握
同时,因为反射会带来性能损失,因此,可根据自己需求,针对每个类型轻松在两种模式之前切换,本例源码,测试实例俱全,而且代码浅显易懂,只要对泛型、反射、三层架构有一定了解的人都能轻松学习
java的基于泛型+反射的通用DAO例子,原创,没事写着玩的,请多指教哈。。。
详细介绍了JAVA泛型和反射,对学习JAVA很有帮助哦!!!!
泛型 反射 概念 方法 使用
鉴于使用三层架构的过程中,数据库变动造成大量代码改动的问题,特意对三层架构进行了改进,数据库变动只需要简单修改model即可,同时,因为反射会带来性能损失,因此,可根据自己需求,针对每个类型轻松在两种模式...
NPOL网上有返回DataTable,我自己编写了个泛型版的。
C#泛型、反射实例,分层,自动生成sql语句
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
j2ee泛型和反射有趣的集合j2ee泛型和反射有趣的集合j2ee泛型和反射有趣的集合j2ee泛型和反射有趣的集合
Java泛型和反射机制
先说一下遇到的问题:通过使用GSON泛型进行报文转换的时候想要对部分关键字段加密,发现在封装好的方法中,对个别字段的加密满足不了。 解决过程:首先通过反射获取到bean下的对象名称。 对象名称获取到了之后需要...
在C#中通过反射操作一个List泛型。。
主要介绍了应用Java泛型和反射导出CSV文件的方法,通过一个自定义函数结合泛型与反射的应用实现导出CSV文件的功能,具有一定的参考借鉴价值,需要的朋友可以参考下
通过泛型、反射 实现文本的 O/R mapping 示例
java泛型+反射使用的源码,比较详细,欢迎下载
可以对自定义的类型进行存取 自定义类型属性可以 包括泛型 数组 字典 字符串 日期 等等,类型存为xml格式;读取的类型集合与存储是完全一致。包括调用方法。消耗无数脑细胞资源分低了对不起自己。
java反射全解(反射原理+反射API详解+反射与数组+反射与泛型+反射源码与性能开销+反射优缺点+反射与内省)