java导出csv方法实现讲解

 更新时间:2013年12月02日 11:46:51   作者:  
这篇文章主要介绍了java导出csv的方法,客户要求在项目中有导出CSV文件的功能,并且给出了如何在不知道如何在不知道对象类型(没有应用泛型)的List中如何得到对象的属性值,下面就详细说下这个功能是如何实现的

首先,通过ibatis中的sql语句查询出所要得到的记录,并将其存放在List中:

复制代码 代码如下:

List<?> results = this.reportService.getArrayBeanReportDataSource(super.getQuery_sql_csv(), query_obj);

这样的情况下,因为我们是要写公共方法,所以使用?而没有使用一个确定的类型来标注。

所以才需要使用反射从List里取出的对象的属性值。

复制代码 代码如下:

String[] Column = super.getReport_data_column().split(",");

这句得到需要得到的属性,通过spring的注入实现。

复制代码 代码如下:

StringBuffer sb = new StringBuffer();
Field[] fields = query_obj.getClass().getDeclaredFields();

通过getDeclaredFields();方法来获取对象中声明的属性。

然后,首先将需要的属性和所有的属性进行比较,因为后面的操作是在需要的属性下产生的,如果没有比较的话,导出的CSV文件中出现很多的空列,这个道理很容易想明白。
另外,还要注意,声明的属性在声明为private的时候,必须利用setAccessible()方法来设置其值可以取出。

最后,利用循环将各列的值用逗号分隔开写入文件就OK了。

复制代码 代码如下:

for(Object object : results) {
    try{
        Field.setAccessible(fields, true);
        for(int i=0;i<Column.length;i++){
            for(int j=0;j<fields.length;j++){
                if(fields[j].getName().equals(Column[i])){
                    if(i!=(Column.length-1)){
                                sb.append((fields[j].get(object)==null?"":fields[j].get(object))+",");
                                break;
                    }else{
                                sb.append((fields[j].get(object)==null?"":fields[j].get(object))+"\r\n");
                                break;
                    }
                    }
                    }
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }  

相关文章

  • java实现停车场系统

    java实现停车场系统

    这篇文章主要为大家详细介绍了java实现停车场系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • JDK环境变量配置教程分享

    JDK环境变量配置教程分享

    这篇文章主要为大家分享了JDK环境变量配置教程,JDK环境变量的配置,是java开发中必备的配置
    2016-05-05
  • 你知道将Bean交给Spring容器管理有几种方式(推荐)

    你知道将Bean交给Spring容器管理有几种方式(推荐)

    Spring核心是 IOC 和 AOP ,我们在Spring项目中,我们需要将Bean交给Spring容器,也就是IOC管理,这样你才可以使用注解来进行依赖注入,这篇文章主要介绍了你知道将Bean交给Spring容器管理有几种方式,需要的朋友可以参考下
    2022-10-10
  • Java 实现限流器处理Rest接口请求详解流程

    Java 实现限流器处理Rest接口请求详解流程

    在工作中是否会碰到这样的场景,高并发的请求但是无法全部执行,需要一定的限流。如果你是使用的微服务框架,比如SpringCloud,可以使用Gateway增加限流策略来解决。本篇文章是在没有框架的情况实现限流器
    2021-11-11
  • Java实现Redis延时消息队列

    Java实现Redis延时消息队列

    本文主要介绍了Java实现Redis延时消息队列,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • MyBatis拦截器分表实践分享

    MyBatis拦截器分表实践分享

    部门内有一些亿级别核心业务表增速非常快,增量日均100W,但线上业务只依赖近一周的数据,随着数据量的迅速增长,慢SQL频发,数据库性能下降,系统稳定性受到严重影响,本篇文章,将分享如何使用MyBatis拦截器低成本的提升数据库稳定性,需要的朋友可以参考下
    2024-01-01
  • Intellij IDEA如何修改配置文件位置

    Intellij IDEA如何修改配置文件位置

    这篇文章主要介绍了Intellij IDEA--修改配置文件位置,文章末尾给大家介绍了Intellij IDEA--宏的用法记录操作过程,对此文感兴趣的朋友跟随小编一起看看吧
    2022-08-08
  • Spring boot整合jsp和tiles模板示例

    Spring boot整合jsp和tiles模板示例

    这篇文章主要介绍了Spring boot整合jsp模板和tiles模板的示例演示过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Spring Boot如何配置内置Tomcat的maxPostSize值

    Spring Boot如何配置内置Tomcat的maxPostSize值

    这篇文章主要介绍了Spring Boot如何配置内置Tomcat的maxPostSize值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • idea中如何创建scala项目

    idea中如何创建scala项目

    idea中创建scala项目有三种方式1.通过maven;2.通过idea;3.通过sbt的方式;本文就每种方法通过图文并茂的形式给大家详细介绍,需要的朋友参考下吧
    2021-07-07

最新评论