最简单的jxl导出Excel方法

摘要:
jxl导出Excel的方法有很多,但是基本上不能够做到简便灵活,如,只写一个方法就可以实现所有需要导出的数据。代码如下:for{Objectobject=list.get;Classclass1=object.getClass();//方法数组是无序的,这样取出的值就不能够保证与Excel标题一一对应Method[]methods=class1.getMethods();//遍历对象的所有方法intcount=0;for{Methodmethod=methods[k];StringmethodName=method.getName();//只处理getXXX方法if(methodName.startsWith("get")&&!methodName.equals){System.out.println;//调用该方法,invoke方法参数一obj表示对象实例,参数二为该方法的实参,getXXX方法没有参数,故为null,returnValue为getXXX方法的返回值ObjectreturnValue=method.invoke;System.out.println;Stringcell=?

jxl导出Excel的方法有很多,但是基本上不能够做到简便灵活,如,只写一个方法就可以实现所有需要导出的数据。除非使用方法反射机制,把对象所有的getxxx()方法遍历出来,取得它返回的值,但是得到的方法数组是无序的。代码如下:

for(int j=0;j<list.size();j++){
                    Object object =list.get(j);
                    Class class1 =object.getClass();
//方法数组是无序的,这样取出的值就不能够保证与Excel标题一一对应 Method[] methods
=class1.getMethods(); //遍历对象的所有方法 int count = 0; for(int k=0;k<methods.length;k++){ Method method =methods[k]; String methodName =method.getName(); //只处理getXXX方法 if(methodName.startsWith("get")&&!methodName.equals("getClass")){ System.out.println("方法的名字="+methodName); //调用该方法,invoke方法参数一obj表示对象实例,参数二为该方法的实参,getXXX方法没有参数,故为null,returnValue为getXXX方法的返回值 Object returnValue = method.invoke(object, null); System.out.println(returnValue); String cell = (returnValue==null)?"":returnValue.toString(); Label label = new Label(count, j+2, cell); sheet.addCell(label); sheet.setColumnView(k,25);//设置单元格的宽度 count++; }

这种方法,如果要让方法有序排序还得另外写方法,麻烦。所以打算采用第二种方式:

public static voidproExcel(){
        Student student1 = new Student(1,"wukailing","1100208131",newDate());
        Student student2 = new Student(1,"wukailing","1100208131",newDate());
        Student student3 = new Student(1,"wukailing","1100208131",newDate());
        List<Student> list = new ArrayList<Student>();
        list.add(student1);
        list.add(student2);
        list.add(student3);
        String headers[] = {"学生ID","学生姓名","学号","入学日期"};
        try{
            WritableWorkbook booWorkbook = Workbook.createWorkbook(new File("C:/test2.xls"));
            WritableSheet sheet = booWorkbook.createSheet("测试用的数据", 0);
            //添加标题标题
            for(int i=0;i<headers.length;i++){
                sheet.addCell(new Label(i, 0, headers[i]));
            }
            //填充单元格的内容:注意:自己必须清楚知道每一行的每一个单元格的数据类型
            for(int j=0;j<list.size();j++){
                Student student =(Student)list.get(j);
                sheet.addCell(new jxl.write.Number (0,j+1,student.getId()));
                sheet.addCell(new Label(1,j+1,student.getNo()));
                sheet.addCell(new Label(2,j+1,student.getName()));
                jxl.write.DateTime labelDT = new jxl.write.DateTime(3, j+1, student.getDate());
                sheet.addCell(labelDT);
            }
            //写数据、关闭
booWorkbook.write();
            booWorkbook.close();
        } catch(Exception e) {
            e.printStackTrace();
        }

    }

种方法非常的简单,缺点就是如果有很多类对象的数据需要导出,我们就得要写很多个方法,没办法了,本人能力有限,只能采用这种方法。

如果在浏览器中导出Excel表,还需要在方法的前面加上下面几句:

        WritableWorkbook book = null;
//通过输出流的方法向浏览器输送数据 HttpServletResponse response
=ServletActionContext.getResponse();
////这个必须写上,可以写在action的Result中即配置文件中,也可以写在导出数据的方法中 response.setContentType(
"application/x-msdownload");
//这里定义了导出Excel文件的文件名称 response.setHeader(
"Content-Disposition", "attachment;filename=gaiyaedu.xls"); OutputStream out =response.getOutputStream(); //我们通过输出流来创建一个Workbook,即Excel表 book =Workbook.createWorkbook(out); //生成名为"学生"的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet("订单表", 0);

各位有啥更好导出Excel的办法,欢迎留言指教啦!!

免责声明:文章转载自《最简单的jxl导出Excel方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jsoup教程jsoup开发指南,jsoup中文使用手册,jsoup中文文档QOS-CBQ概述下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度(转)

原文出处:http://zhouhaitao.iteye.com/blog/1842769 最近项目中需要用到导出Excel文件,以下是我写了一个通过jxl操作Excel的例子,熟悉Jxl的使用。 有一个比较难以处理的问题就是自动适应文本宽度的问题。 以下我也在网上找了一下 :有如下的方式处理: CellView cellView = new CellVi...

用Java实现excel转txt

import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read....

【转载】JExcelApi(JXL)学习笔记

在公司的项目中,有excel生成、导出的需求,因此学习了用JXL读写excel,做个简单的笔记,以供参考。      实现用java操作excel的工具,一般用的有两个:一个是JXL,另一个是apache的POI。JXL的功能不如POI强大,但是对中文的支持性好,因此在中文项目中用JXL的比较多。 源代码介绍     JXL的源代码有11个包:    ...

java生成Excel(JXL类库)

jxl是java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支...

Java:将数据库数据导出到Excel (一眼就看会)

所用Jar包 1. sqljdbc4.jar 连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008) 2.Jxl.jar 访问Excel的Jar包 注意:支持以.xls结尾的Excel文件,可能不支持.xlsx结尾的 实现效果: 数据库数据: 导出的Excel: 完整代码: 导出的核心代码就四五行 类里需要import的包也...