首页 > 其他分享 >JXLS使用

JXLS使用

时间:2023-05-24 13:06:16浏览次数:35  
标签:String import Excel jxls JXLS 使用 new public


JXLS是一个简单易用的一个用于生成和读入Excel的工具,有兴趣的朋友可以到Jxls的官网上面下载最新版本的Jxls,目前Jxls最新的版本是0.9.5,下载的Zip包里面有一个Doc和Example,不过,官网所提供的东西太过简单,如果,需要详细了解Jxls的功能和使用方法的话,可以仔细研究其源代码。
将Jxls源代码导入到Eclipse的环境中就可以查看和分析其源代码了,导入Eclipse的方法是:
1)将下载的压缩包里面的Src目录下面的jxls-core和jxls-reader两个文件夹拷贝到一个目录下面(也可以不用拷贝)
2)在DOS下面进入jxls-core目录下面,输入命令:mvn -eclipse:eclipse。jxls-reader的生成方式也是一样的
3)打开Eclipse,将生成的两个项目导入
使用jxls的时候其实就使用两个类就够了:XLSTransformer和Util,至少在我目前的使用过程中只使用到这么两个类。
jxls的使用方法:
1)将jxls的jar文件放到我们的程序目录下面,如果,使用Maven的话,直接在Project的pom.xml里面配置依赖就可以了
2)根据需要生成的Excel文件或者Report的格式,设置一个jxls的Template文件,Template其实就是一个特殊的一些Excel文件,里面包含了一些jxls的Tag标签。
jxls的Tag其实有点想jstl标签库的使用方式,在取出一个对象的值的时候可以利用下面这样的Tag来将值输出:${object1.property1};如果需要将一个Map输出到Excel的时候定义方式如下:${map.get('property1')};
3)声明一个XLSTransformer对象,生成方式就是使用new操作符

XLSTransformer transformer = new XLSTransformer();


4)得到Template的FIle:

String xlsTemplateFileName = this.getClass().getClassLoader().getResource("template.xls");


5)利用XLSTransformer的类的方法生成Excel文件

String xlsFileName = "c:"+File.separator+"resule.xls";

 Map beans = new HashMap();

 beans.put("newBeans1","new beans1");

 beans.put("newBeans2","new beans2");

 transformer.transformXLS(xlsTemplateFileName , beans, xlsFileName);


XLSTransformer类的transformXLS方法的定义如下:

public void transformXLS(String srcFilePath, Map beanParams, String destFilePath) throws ParsePropertyException, IO

Exception其中:
srcFilePath:是Template文件的全文件名(包含路径)
beanParams:需要传入Excel里面的一个Map,jxls根据Template里面的定义和Map里面的对象对Template进行解析,将Map里面的对象值填入到Excel文件中
destFilePath:需要生成的Excel文件的全文件名(包含路径)
注:jxls虽然提供了Example,但是,都过于简单,如果想详细了解jxls,可以仔细研究jxls-core,其实没有必要查看其全部代码,如果只是想了解其具体操作,可以详细查看类XLSTransformerTest,即XLSTransformer的测试代码。




项目中所用到的jar,可以到[url]http://www.findjar.com/index.x[/url]下载


ExcelUtil类源码:

[java] view plaincopy

package util; 


import java.io.IOException; 

import java.net.URL; 

import java.util.HashMap; 

import java.util.List; 

import java.util.Map; 


import net.sf.jxls.exception.ParsePropertyException; 

import net.sf.jxls.transformer.XLSTransformer; 

/** 

 * Excel生成类. 

 */ 

public class ExcelUtil { 

 /** 

 * 根据模板生成Excel文件. 

 * @param templateFileName 模板文件. 

 * @param list 模板中存放的数据. 

 * @param resultFileName 生成的文件. 

 */ 

 public void createExcel(String templateFileName, List<?> list, String resultFileName){ 

 //创建XLSTransformer对象 

 XLSTransformer transformer = new XLSTransformer(); 

 //获取java项目编译后根路径 

 URL url = this.getClass().getClassLoader().getResource(""); 

 //得到模板文件路径 

 String srcFilePath = url.getPath() + templateFileName; 

 Map<String,Object> beanParams = new HashMap<String,Object>(); 

 beanParams.put("list", list); 

 String destFilePath = url.getPath() + resultFileName; 

 try { 

 //生成Excel文件 

 transformer.transformXLS(srcFilePath, beanParams, destFilePath); 

 } catch (ParsePropertyException e) { 

 e.printStackTrace(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 } 

 } 


}



Test类源码:

package test;  

import java.util.ArrayList;  
import java.util.List;  

import po.Fruit;  
import util.ExcelUtil;  
/** 
 * 测试类. 
 */  
public class Test {  

    public static void main(String[] args) {  
        List<Fruit> list = new ArrayList<Fruit>();  
        list.add(new Fruit("苹果",2.01f));  
        list.add(new Fruit("桔子",2.05f));  
        String templateFileName = "template/template.xls";  
        String resultFileName = "result/fruit.xls";  
        new ExcelUtil().createExcel(templateFileName,list,resultFileName);  

    }  

}






注意:如果你是用的office 2007生成的excel模板,要另存为97-2003版本的。



Fruit类源码:


package po;  
/** 
 * 水果. 
 */  
public class Fruit {  
    /** 
     * 水果名称. 
     */  
    private String name;  
    /** 
     * 水果价格. 
     */  
    private float price;  


    public Fruit() {  
        super();  
    }  

    public Fruit(String name, float price) {  
        super();  
        this.name = name;  
        this.price = price;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public float getPrice() {  
        return price;  
    }  
    public void setPrice(float price) {  
        this.price = price;  
    }  

}



标签:String,import,Excel,jxls,JXLS,使用,new,public
From: https://blog.51cto.com/u_3871599/6338592

相关文章

  • 使用JPA+Struts2+Spring 在 google Appengine开发应用
    本文同时发表在我在googleAppengine上的搭建的博客:[url]http://blogfor11lu.appspot.com/articleaction_view.action?article.id=agtibG9nZm9yMTFsdXIPCxIHQXJ0aWNsZRjBtQMM[/url]之前用JDO和Struts2在googleAppengine上试着写了一个简单的blog程序,但我还是希望使用Spring......
  • 使用Maven管理Web工程
    使用命令创建webapp工程:到workdpace运行命令[b][color=red]mvnarchetype:create-DgroupId=com.pandy-DartifactId=MavenDemo-DarchetypeArtifactId=maven-archetype-webapp[/color][/b]使用maven构建web项目实例[url]http://hnzhoujunmei.iteye.com/......
  • 学习Maven的使用
    学习maven的使用:[url]http://fluagen.blog.51cto.com/146595/40086[/url]Maven试用手记----开始一个新的项目并编译和测试:[url]http://www.blogjava.net/lvdougao/articles/26827.html[/url]maven编译命令:[url]http://radio123.iteye.com/blog/1490......
  • 使用spring初始化器创建出来的gradle项目,gradle.build.ks文件extra报错的解决方法
    有关讨论:https://github.com/spring-io/initializr/issues/922https://github.com/spring-io/start.spring.io/issues/581springboot生成器:https://start.spring.io/......
  • Mininet拓扑构建与命令使用
    实验目的1、通过命令模拟创建SDN网络。2、深入了解Mininet的命令使用。3、学会使用网络构建启动参数、内部交互命令及外部运行参数。实验环境Mininet拓扑构建与命令使用实验拓扑如下图所示。设备名称软件环境硬件环境主机Mininet_2.2.0_desktop_cv1.1CPU:1核内......
  • BeanUtils使用总结
    [color=red][size=x-large]Commons-BeanUtils学习笔记[/size][/color[color=red][b]1、BeanUtils一共分4个包:[/b][/color][b]org.apache.commons.beanutilsorg.apache.commons.beanutils.convertersorg.apache.commons.beanutils.localeorg.apache.commons.beanutils.loc......
  • golang使用小技巧
    封装gorouting并捕捉panic从k8s源码中学到的,觉得小而精,感觉比定时器好用呢k8s源码中是这样使用的//每隔peroid后就执行传入的函数funcForever(ffunc(),periodtime.Duration){ for{ func(){ deferHandleCrash()//捕捉函数中的panic f() }() time.Sleep(per......
  • 如何在 Linux 中安装和使用 duf 命令
    导读今天我们来分享一下如何在 Linux 中安装和使用duf 命令。该命令显示磁盘空间的利用率,显示方式如下图所示:​duf命令是du命令和​​​df命令​​​​的一个结合,且结果输出是以更加易读的结构化方式,来检查系统空间。其显示跟易读,对不?今天我们来分享一下如何......
  • windows环境下的vue部署(使用nginx)
    首先需要将vue项目打包成dist,在需要部署的服务器上进行解压然后我们使用nginx进行反向代理设置,具体操作如下打开解压后的nginx,进入目录:nginx-1.23.4->conf,打开编辑nginx.conf*注意:对于后端路径的映射这里一定是^~/前缀/对应于地址的端口/前缀/,这里一定是两个//包裹。以下......
  • flask框架使用unittest单元测试
    user_labels_api.py1#-*-coding:utf-8-*-2#Author:Ethan3#Time:2023/5/1612:504fromflaskimportFlask,jsonify,render_template,request,json5importrequests6#fromflask_sqlalchemyimportSQLAlchemy7app=Flask(__name__)8#bd......