现在的位置: 首页 > 综合 > 正文

Lab project_java excel

2017年10月25日 ⁄ 综合 ⁄ 共 1757字 ⁄ 字号 评论关闭

项目中涉及到了java导出excel报表的问题,后来发现解决这个问题因为不同的需求从而有了很多不同的解决方式,不管好猫黑猫,抓住老鼠就是好猫,现在整理一下这些导出excel的方法,以备后用

1、由于我要导出的excel需要从数据库里取数据,而且需要导出不同的表,而不仅仅是一张表,同时涉及到sql语句的拼接和更改,从而可以根据过滤条件筛选得到不同的数据,然后再生产出来。则如果一个批量的方法,那sql语句还有列名等信息都是不同的,从而想到了用xml配置文件,为每一张表单写一个配置文件,用java读取xml配置文件,从而得到不同的每一张表单的相关信息,存储到一定的数据结构中,再在导出excle的方法里当做参数传入即可。这个方法在一定程度上满足程序的可扩展性。

    在这个方法中主要锻炼了java读取xml文件,了解xml文件的结构,详细列一下xml文件的相关知识,(这个是额外的)

2、导出一张固定的表单,excel格式已经固定,只是对应的数据需要从数据库中取出来,这个时候的解决方式就是用一个模板excel,读取其中的数据,然后填入数据之后再生成一张新的表单即可。这个方法就是简单的java导出导入excel,主要用的方法就是POI来进行编写,利用java文件流进行设置,相关的程序代码为:

http://hi.baidu.com/xiami9910/item/f1d13d73b86cb840ee1e5348

http://wenku.baidu.com/view/c904fa315a8102d276a22f61.html

两篇POI例子

     InputStream input = new FileInputStream("C:\\temp\\confirm.xls");
     POIFSFileSystem fs = new POIFSFileSystem(input);
     HSSFWorkbook wb = new HSSFWorkbook(fs);
     HSSFSheet sheet = wb.getSheetAt(0);
     HSSFRow row1 = sheet.createRow(1);
     //HSSFRow row2 = sheet.getRow(2);
     row1.createCell(0).setCellValue("success");
     String file = "C:\\temp\\new1.xls";
     FileOutputStream fileOut = new FileOutputStream(file);
     wb.write(fileOut);
     fileOut.close();

后来又发现其中第一个需求中的情况也可以用第二种方法来实现,用一个excel模板然后往里面填写读取到的数据即可,只是可能读取的时候要按个写列名,所以不具有扩展性。

3、这里面共同的一个问题是 ,不太清楚网页上面那个导出excel的按钮如何链接到所写的函数上面,然后利用传递过来的参数得到当前页面上的id等信息,这一块是有点模糊的,希望能够找机会了解一下清楚。

发现仍然是两种方法,一种是写在jsp页面上,通过display 的值来决定其是否显示,但是让其显示的函数是在哪里调用的呢?一直没找到……

2013年9月5日:找到了,一段js, 在java里面render,并且设置xml配置文件是否存在来判断display值的函数,display的值作为变量被设置,这段js直接添加到相应jsp页面里面,不过src的值要确定好,涉及到jfinal 里面的一些规则,在jfinal里面可以自定义设置路径,并且url参数可以获取。 

render 这个函数很不错,可以再一个函数里面渲染不同类型的视图返回客户端,同时在服务器上设置相应的参数和函数判断。(这里面可能描述不正确)

另外一种是在它提供的平台的表单的源代码上写的,这样也可以完成定制化,用script写的jquery相关,这个才是真正的js嘛!要锻炼应该要锻炼这种才对,大体可以看懂,但是细节上的问题还是很多,看来这个八月份要 把那本书上的例子打一遍,才会对一些dom操作的一些属性之类的有理解,好,就这么办,八月份的任务之一。

【上篇】
【下篇】

抱歉!评论已关闭.