精华内容
下载资源
问答
  • jxls2.4.2 依赖jar包

    2017-11-29 14:07:18
    commons-collections4-4.1.jar ...jxls-2.4.2.jar jxls-jexcel-1.0.6.jar jxls-poi-1.0.13.jar jxls-reader-2.0.3.jar poi-3.16.jar poi-ooxml-3.16.jar slf4j-api-1.7.23.jar slf4j-nop-1.7.25.jar
  • jxls2 依赖jar包

    2016-10-26 14:39:04
    commons-jexl-2.1.1.jar commons-lang3-3.4.jar commons-logging-1.2.jar jxl-2.6.10.jar log4j-1.2.17.jar poi-3.12.jar poi-ooxml-3.12.jar poi-ooxml-3.12.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.7.jar ...
  • 供个人参考,内部只是部分依赖包,用于jxls工具类使用Java语言导出excel
  • java导出excel的工具,最新版jxls1.0.1jar包以及它所有的必需依赖
  • Java中实现excel根据模板导出数据的方法有很多,一般简单的可以通过操作POI进行。还可以使用一些工具很轻松的实现模板导出。这些工具现在还在维护,而且做得...1. 首先加入JXLS依赖包。 <dependency> <gro...

    Java中实现excel根据模板导出数据的方法有很多,一般简单的可以通过操作POI进行。还可以使用一些工具很轻松的实现模板导出。这些工具现在还在维护,而且做得比较好的国内的有easyPOI,国外的就是这个JXLS了。个人觉得easyPOI做动态列导出(不固定列)比较好;JXLS做固定模板导出比较方便。

    1. 首先加入JXLS依赖包。

    <dependency>
          <groupId>org.jxls</groupId>
          <artifactId>jxls</artifactId>
          <version>2.4.6</version>
          <exclusions>
              <exclusion>
                  <groupId>ch.qos.logback</groupId>
                  <artifactId>logback-core</artifactId>
              </exclusion>
          </exclusions>
      </dependency>
    
      <dependency>
          <groupId>org.jxls</groupId>
          <artifactId>jxls-poi</artifactId>
          <version>1.0.15</version>
      </dependency>
    
      <dependency>
          <groupId>org.jxls</groupId>
          <artifactId>jxls-jexcel</artifactId>
          <version>1.0.7</version>
      </dependency>
    

    2.使用

    1. .在项目中编写util工具类
    public class JxlsExcelView extends AbstractView{
    	private static final String	CONTENT_TYPE	= "application/vnd.ms-excel";
    
    	private String				templatePath;
    	private String				exportFileName;
    
    	/**
    	 * @param templatePath
    	 *            模版相对于当前classpath路径
    	 * @param exportFileName
    	 *            导出文件名
    	 */
    	public JxlsExcelView(String templatePath, String exportFileName)
    	{
    		this.templatePath = templatePath;
    		this.exportFileName = exportFileName;
    		setContentType(CONTENT_TYPE);
    	}
    
    	@Override
    	protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception
    	{
    		Context context = PoiTransformer.createInitialContext();
    		if (model != null)
    		{
    			for (String key : model.keySet())
    			{
    				context.putVar(key, model.get(key));
    			}
    		}
    		String userAgent = request.getHeader("user-agent").toLowerCase();
    		response.setContentType(getContentType());
    		// 防止乱码
    		if (userAgent.contains("msie") || userAgent.contains("like gecko"))
    		{
    			// win10 ie edge 浏览器 和其他系统的ie
    			exportFileName = URLEncoder.encode(exportFileName, "UTF-8");
    		} else
    		{
    			exportFileName = new String(exportFileName.getBytes("UTF-8"), "ISO-8859-1");
    		}
    		response.setCharacterEncoding("UTF-8");
    		response.setHeader("content-disposition", "attachment;filename=" + exportFileName + ".xlsx");
    		ServletOutputStream os = response.getOutputStream();
    		Resource resource = new ClassPathResource("/static/xlstemplate/" + templatePath);
    		InputStream is = resource.getInputStream();
    		JxlsHelper jxlsHelper = JxlsHelper.getInstance();
    		Transformer transformer = jxlsHelper.createTransformer(is, os);
    		// 获得配置
    		JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
    		//设置静默模式,不报警告
    		evaluator.getJexlEngine().setSilent(true);
    		//必须要这个,否者表格函数统计会错乱
    		jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
    		is.close();
    	}
    }
    
    1. 在controller中调用方法
    @RequestMapping("downloadTeacherTemplate")
    	public JxlsExcelView downModel(Model model, HttpServletRequest request)
    	{
    		try
    		{
    			model.addAttribute("XB", dictService.queryDict("STD_GB_XB"));
    			model.addAttribute("MZ", dictService.queryDict("STD_GB_MZ"));
    			model.addAttribute("ZJLX", dictService.queryDict("STD_JB_SFZJLX"));
    			model.addAttribute("DQZT", dictService.queryDict("STD_JB_JZGDQZT"));
    			// 模版相对于当前classpath路径;导出文件名;
    			return new JxlsExcelView("jzgImportTemplate.xlsx", "教职工导入模板");
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    			return null;
    		}
    	}
    
    1. 编写模板jzgImportTemplate.xlsx
      在这里插入图片描述
      我此处是循环的批注写法jx:area(lastCell=“A1”) jx:each(items=“XB” var=“item” lastCell=“A1” )
      如果不循环,就更简单了。直接在所对应单元格中直接写入${XB}此种样式即可。
    展开全文
  • JXLS

    2017-11-07 15:00:00
    一.JXLS简介 在很多涉及到某种报表功能的Java程序中都需要生成Excel表格。目前通过Java来操作.xls文件最完整的类库是Apache POI类库,但是当需要创建多种自定义的复杂Excel报表的时候就会出现问题,这些Excel报表...

    一.JXLS简介

    在很多涉及到某种报表功能的Java程序中都需要生成Excel表格。目前通过Java来操作.xls文件最完整的类库是Apache POI类库,但是当需要创建多种自定义的复杂Excel报表的时候就会出现问题,这些Excel报表一般都带有多种格式和可扩展功能,在这种情况下,你就不得不写一大堆Java代码来创建报表的规则集(workbook),规则集一般包含所有要求的格式,公式,其他特定的设置和正确的Java对象集的数据出口。这些代码一般都是难以调试,任务也常常变得容易出错并且耗时。

    另外一个问题是有很多Excel组件都没有提供的API。幸运的是POI API读取Excel文件,可以保持它原有的格式,然后根据需要进行修改。很明显,用一些Excel编辑工具来创建所有格式正确的报告模板然后指定真实的数据应该放置的地方,会容易很多。JXLS是实现这种方法并且只用几行代码就能创建极其复杂的Excel报表。你只需要用特定的标记来创建一个带有所有要求的格式,公式,宏等规则的.xls模板文件来指定数据放置的位置然后再写几行代码来调用JXLS引擎来传递.xls模板和导出的数据作为参数。

    除了生成Excel报表功能,JXLS还提供了jxls-reader模块,jxls-reader模块会很有用,如果你需要解析一个预定义格式的Excel文件并在其中插入数据的话。jxls-reader允许你用一个简单的XML文件描述解析规则,读取Excel文件和你的各种JAVA对象(population of yourJava objects)的所有其他工作都会自动完成。

     

    二.JXLS安装

    为了使用JXLS引擎,你必须把jxls-core.jar添加到项目的classpath,如果计划使用JXLS来读取.xls文件,那么你必须还要把jxls-reader.jar加入到项目的classpath中。

    如果你用Maven来构建你的应用程序,你可以在你的pom.xml文件中配置指定要求的JXLS模块的依赖,让它们可以从Maven仓库下载。

     

    下面的Apache类库也要求添加到项目的classpath中

    ●POI 3.6 or higher

    ●Commons BeanUtils

    ●Commons Collections

    ●Commons JEXL

    ●Commons Logging

    ●Commons Digester

    注意:当前JXLS版本可能无法正常地与较早的POI库版本工作,因此,如果你必须要使用较早版本的POI(prior3.2)使用较老版本的JXLS就行了

     

    三.JXLS参考

    1.简介

    这部分描述在.xls模板文件的中的对象属性访问语法,如果想让JXLS引擎进行正确的处理.xls模板文件就必须使用规定的语法。

     

    接下来的部分假设我们有两个相互依赖的JAVA beans,类型分别为Department和Employee,在代码中像这样被传递到XLSTransformer中:

    Departmentdepartment;

    ...//initialization

    Map beans =new HashMap();

    beans.put("department",department);

    XLSTransformertransformer = new XLSTransformer(); transformer.transformXLS(xlsTemplateFileName,beans, outputFileName);

     

    2. 属性访问

    2.1.基本属性访问

    使用下面的语句来访问Excel单元格中简单的bean属性:

    ${department.name}

    在上面这个语句中,JXLS引擎会通过关键字department在当前bean映射下搜索这个bean,然后会尝试获取这个bean的name属性的值并把它放到相应的Excel单元格中。

    同理,我们可以访问更加复杂的属性,例如,要输出这个department中的属性chief中的name属性的值,我们可以用:

    ${department.chief.name}

    访问任何深度的对象属性都是可以的。例如

    ${bean.bean1.bean2.bean3.bean4.bean5.bean6.bean7.bean8.bean9.beanX.property1}

     

    2.2多个属性在一个单元格中

    在一个单元格,我们可以连接几个属性。例如:

    Employee:${employee.name} - ${employee.age} years

    这样,我们得到的输出是:

    Employee: John -35 years

    其中${employee.name}的值是John,同理${employee.age}的值是35.

     

    3.使用标签

    JXLS允许在模板中使用预定义的XML标签来控制XLS转换行为。

     

    3.1 jx:forEach标签

       <jx:forEach>标签的典型用法如下:

    <jx:forEach items="${departments}"var="department">

    ${department.name}| ${department.chief}

         </jx:forEach>

    jx标签可以相互嵌套使用

    如果你把jx:forEach标签的开始标签和结束标签放在同一行的话,JXLS会在同一行上重复在jx:forEach标签的开始标签和结束标签之间的Excel单元格。

     

    目前,如果你想要用jx:forEach标签重复Excel的行,那么你必须把jx:forEach标签的开始标签和结束标签放在不同的行,把要重复的行包含在中间,jx:forEach标签所在行的所有单元格都会被忽略。

     

    以下是一个实例的截图:

     

     

     

     

    图.1模板文件

     

     

    图.2生成的Excel报表

     

    3.1.2 forEach标签的数据分组

    jx:forEach标签可以通过一个底层bean的属性对数据集合的分组,这可以通过jx:forEach标签的groupBy and groupOrder属性完成,groupBy用于指定一个属性进行分组,groupOrder用于指定各个分组排列顺序。例如:

    <jx:forEachitems="${employees}" groupBy="age">

         Age: ${group.item.age}

     <jx:forEachitems="${group.items}" var="employee">

    ${employee.name} |${employee.payment} | ${employee.bonus}

     </jx:forEach>

      </jx:forEach>

    在这个例子中,我们把employees按age属性分组,当遇到groupBy属性的时候,JXLS内部执行分组并且放置名为group的新的bean到上下文中,这个新的bean是很简单-它包含两个属性:item属性和items属性,item属性是分组中当前处理的bean;items属性

    代表这个分组中所有bean的集合。

     

    正如你看到的,在这个例子中我们首先使用下列语句显示一些关于当前分组age属性的信息

    Age:${group.item.age}

    之后,我们使用内部<jx:forEach>标签来实现迭代并显示所有分组中的记录

    <jx:forEachitems="${group.items}" var="employee">

        ${employee.name}| ${employee.payment} | ${employee.bonus}

    </jx:forEach>

     

    默认情况下,如果没有groupOrder属性组的顺序将被按“原先”的顺序保留,以便这些分组的排列顺序跟原先的集合中一样,如果你需要按升序或是降序排列排列这些分组,那么你可以将groupOrder属性相应地设置为ASC或DESC

     

    在使用groupBy属性的情况下,jx:forEach标签的var属性将被忽略

     

    3.1.3forEach标签的筛选功能

    你可以用jx:forEach标签的‘select’属性来选择把哪些记录包含在循环中,例如,如果我们想只包含工资高于 2000元的员工,我们可以使用下面的语句:

    <jx:forEach items="${employees}"var="employee" select="${employee.payment > 2000}">

        ${employee.name}| ${employee.payment} | ${employee.bonus}

    </jx:forEach>

     

    3.14 forEach标签的varStatus 属性

    jx:forEach标签支持varStatus属性,varStatus属性用来定义一个循环状态的名字,在每一次迭代中,循环状态对象会被传递到bean上下文。循环状态对象是LoopStatus类的一个实例,LoopStatus类有一个单一(静态)的'index'属性用来确定当前记录在集合中的索引值(索引值从0开始)。

    <jx:forEachitems="${employees}" var="employee"varStatus="status">

     ${status.index}|${employee.name}|${employee.payment}|${employee.bonus}

     </jx:forEach>

     

    3.2 jx:if标签

     典型的<jx:if>标签的用法如下:

    <jx:iftest="${department.chief.payment > 2000.0}">

     Chief Name: ${department.chief.name}

    </jx:if>

    jx:if标签可以基于某些条件来排除某些行或是某些列,如果你把jx:if标签的开始标签和结束标签放在同一行的话,JXLS会根据test的条件来处理或删除包含在标签提内的列;如果你把jx:if标签的开始标签和结束标签放在不同行的话,JXLS会根据test的条件来处理或删除包含在标签提内的行。

     

    3.3 jx:outline标签

    <jx:outline>标签可以将特定的行组成一组。例如:

    图.3 模板文件

    图.4 产生的Excel文件(折叠)

    图.5 产生的Excel文件(展开)

    <jx:outline>标记有一个可选的布尔类型的属性“detail”声明结果初始化的状态-它们应该展开显示还是折叠显示,默认值是false即分组的行会被折叠显示(隐藏)

     

    3.4 jx:out标签

    <jx:out>标签的用法如下:

    <jx:outexpr="expression" />

    这个标签可以在任何地方使用,表达式将正常使用,只是将JXLS表达式作为属性值。

    例如:

    图.6 模板文件

    图.7 生成的Excel文件

    4. 执行SQL查询

    在许多企业级应用中,Excel报表起着非常重要的作用,现在JXLS可以直接吧SQL查询语句直接写入.xls模板文件中,这样在模板进行转换的时候,SQL语句会被执行,所有的查询结果都会正确地填入Excel报表中。

    要执行SQL查询,并在Excel文件中显示查询结果,你必须在模板进行转换之前把一个特殊的bean写入bean上下文,这个特殊的bean要实现ReportManager接口。目前这个接口只有一个方法:

    public Listexec(String sql) throws SQLException

    这个方法的参数是一个SQL查询语句,执行结果,返回一个list(list的泛型是bean)

    JXLS对这个接口提供了一个默认的实现,叫做ReportManagerImpl,ReportManagerImpl使用owSetDynaClass来把ResultSet对象封装到对象集合中,下面是这个类的用法:

    Connection conn =...// get database connection in some way

    Map beans = newHashMap();

    ReportManager rm =new ReportManagerImpl( conn, beans );

    beans.put("rm",rm);

    InputStream is =new BufferedInputStream(new FileInputStream("reportTemplate.xls"));

    XLSTransformertransformer = new XLSTransformer();

    HSSFWorkbookresultWorkbook = transformer.transformXLS(is, beans);

    ReportManagerImpl构造函数将数据库连接对象和bean的map作为参数传递给XLSTransformer,然后把ReportManager对象放到bean上下文中使用“rm”作为key。这意味着,我们可以执行任何SQL查询语句通过把它作为参数传递给rm.exec()方法,例如:

    ${rm.exec("SELECTname, age FROM employee")}

    通常情况下,这个语句和jx:forEach标签结合起来使用来遍历bean的集合(ResultSet)并把它显示在Excel文件中,例如:

    <jx:forEachitems="${rm.exec('SELECT e.name, e.age, e.payment FROM employee e')}"var="employee">

      ${employee.name}| ${employee.age} | ${employee.payment}

    </jx:forEach>

    可以使用jx:forEach标签的groupBy属性来实现按某些列的值进行分组查询。

    以下是一个实例:

            . . .//主要代码

        try {

               Class.forName("oracle.jdbc.driver.OracleDriver");

               conn=DriverManager.getConnection(url,"gaps32", "gaps32");

                    Map beans = new HashMap();

                ReportManager rm = new ReportManagerImpl( conn, beans );

                beans.put("rm", rm);

                XLSTransformer transformer = new XLSTransformer();

                transformer.transformXLS(report, beans,reportDest );

                conn.close();

            } catch (ClassNotFoundException e1) {

               e1.printStackTrace();

        } catch (SQLException e2){

               e2.printStackTrace();

    }//. . .

     

    图.8 模板文件

     

    图.9 生成的Excel

    4.2 依赖查询

    如果使用jdbc的数据库驱动话,你可以给ReportManagerImpl传递任何SQL语句,你可以把在一个查询中使用另一个查询的结果,你可以把一个查询的结果放到bean上下文中,当在依赖查询需要使用这个结果的时候就可以使用了。依赖查询(子查询)典型的用法可以用在两个jx:forEach标签,当其中一个标签嵌套在令一个标签里面的时候,下面是一个简单的例子:

    <jx:forEach items="${rm.exec('SELECT d.name, d.id FROM department d')}"var="dep">

       Department:${dep.name}

       Name |Payment | Bonus | Total

    <jx:forEach items="${rm.exec('SELECT name,age, payment, bonus, birthDate FROM employee e where e.depid = ' +dep.id)}" var="employee">

    ${employee.empname}|${employee.payment}|${employee.bonus}|$[B23*(1+C23)]

    </jx:forEach>

    </jx:forEach>

    在这里我们把第一次查询到的department信息放到上下文中以dep作为key,然后在内部的jx:forEach标签中使用

    <jx:forEachitems="${rm.exec('SELECT name, age, payment, bonus, birthDate FROMemployee e where e.depid = ' + dep.id)}" var="employee">

    JXLS会替换掉当前处理的部门的id值以便于能查询到当前部门的所有员工

    4.3 查询语句包含参数

    前面的例子已经显示了如何使用内部SQL查询参数,此外,我们还可以使用外部参数,如果我们把它放在bean上下文中。

    Map beans = new HashMap();

    ReportManager reportManager = new ReportManagerImpl(conn, beans );

    beans.put("rm", reportManager);

    beans.put("minDate", "1979-01-01");

    XLSTransformer transformer = new XLSTransformer();

    transformer.transformXLS(templateFileName, beans,destFileName);

    上面我们把日期“1979-01-01”放到bean的上下文中,以minDate作为key,下面我们使用它来构建一条查询语句:

     

    <jx:forEachitems="${rm.exec("SELECT d.name depname, e.name empname, age,payment, bonus, birthDate FROM employee e, department d WHERE d.id = e.depidAND birthDate > '1975-01-01' AND birthDate < '" + minDate + "'order by age desc")}" var="employee">

     

    你要可以从上面的语句中了解到如何在SQL查询语句中使用单引号。

     

    4.4 JDBC结果集

    虽然JXLS没有为JDBC查询结果集设计的数据出口,但是查询结果集可以使用Commons BeanUtils的动态类很容易进行输出,XLSTransformer有两种方法可以导出结果集中的数据,第一种使用org.apache.commons.beanutils.RowSetDynaClass,第二种是基于类net.sf.jxls.report.ResultSetCollection。

     

    4.4.1基于RowSet的输出

    当你构建一个org.apache.commons.beanutils.RowSetDynaClass类的实例的时候,底层数据被复制到内存中的动态bean集合中,这个集合就代表结果,所以你可以马上关闭结果集,通常当你处理实际数据之前,结果集就已经关闭了,这种方法的缺点就是你必须消耗一定的性能和内存来复制这些结果数据。

    使用这种方法首先你必须构建一个新的RowSetDynaClass的实例,并把结果集传递给它。

    ResultSetresultSet = ...

    RowSetDynaClassrowSet = new RowSetDynaClass(resultSet, false);

     

    第二个构造函数的参数表示属性名称在动态bean的结果集中不应该小写。在你初始化RowSetDynaClass的实例之后,你可以调用它的getRows()方法来获得动态bean的结果集,并用通常的方法输出。

    Map beans = newHashMap();

    beans.put("employee", rowSet.getRows() );

    XLSTransformertransformer = new XLSTransformer();

    transformer.transformXLS(templateFileName, beans, destFileName);

     

    下面是一个实例:

    …//

    Statement stmt = conn.createStatement();

    String query = "SELECT * FROM SAI";

    rs = stmt.executeQuery(query);

    Map beans = newHashMap();

    RowSetDynaClass rsc = new RowSetDynaClass(rs,false);

    beans.put("employee", rsc.getRows());

    XLSTransformer transformer = new XLSTransformer();

    transformer.transformXLS(report, beans,reportDest );

    conn.close();//…

     

     

    图.10模板文件

    图.11生成Excel文件

     

    4.4.2  结果集输出

    如果你不想在内存中加载所有的结果集数据,并同意在处理数据的时候一直保持数据库连接不断开的话,你可以使用net.sf.jxls.report.ResultSetCollection类,这个类以ResultSet(结果集)为参数并实现了Collection接口来操作底层数据,反过来ResultSetCollection使用org.apache.commons.beanutils.ResultSetDynaClass来返回检索到的数据作为动态对象。

    下面是net.sf.jxls.report.ResultSetCollection 类的使用:

    ResultSetCollectionrsc = new ResultSetCollection(resultSet, false);

    beans.put("employee", rsc );

    第二个构造函数的参数,表明属性名称在处理之前不应该小写。

    下面是一个实例:

    …//

    Class.forName("oracle.jdbc.driver.OracleDriver");

    conn=DriverManager.getConnection(url,"gaps32", "gaps32");

    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

    String query = "SELECT NAME, AGE, PAYMENT, BONUS, IDFROM SAI";

    rs = stmt.executeQuery(query);

    Map beans = newHashMap();

    ResultSetCollection rsc = new ResultSetCollection(rs,false);

    beans.put( "employee", rsc );

    XLSTransformer transformer = new XLSTransformer();

    transformer.transformXLS(report, beans,reportDest );

    //…

    注:不能使用Statement stmt=conn.createStatement();不然会出现异常(对只转发结果集的无效操作: last "的异常)应该使用Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

    分析:异常出现于移动结果集的指针时,原因是在生成statement对象的时候提供的参数不同无参数的那个方法使用的是默认参数,statement执行后得到的结果集类型为 ResultSet.TYPE_FORWARD_ONLY.这种类型的结果集只能通过rs.next();方法逐条读取,使用其他方法就会报异常. 如果想执行一些复杂的移动结果集指针的操作就要使用其他参数了

     

     

    图.12模板文件

    图.13生成的Excel文件

     

    4.5 在报表中插入图表

    List staff = newArrayList();

            staff.add(new Employee("Derek", 35, 3000, 0.30));

            staff.add(new Employee("Elsa", 28, 1500, 0.15));

            staff.add(new Employee("Oleg", 32, 2300, 0.25));

            staff.add(new Employee("Neil", 34, 2500, 0.00));

            staff.add(new Employee("Maria", 34, 1700, 0.15));

            staff.add(new Employee("John", 35, 2800, 0.20));

            staff.add(new Employee("Leonid", 29, 1700, 0.20));

            Map beans = newHashMap();

            beans.put("employee", staff);

            XLSTransformer transformer =new XLSTransformer();

            transformer.markAsFixedSizeCollection("employee");

            transformer.transformXLS(templateFileName, beans,destFileName);

    源码文件和普通的文件一样。

     

    图.14模板文件

    在Excel模板中插入图表,在工具栏选插入-----图表,然后选择图表的类型,有柱状图,饼状图等等,插入后,选中图表右击选择“选择数据”然后对图表中的数据进行设置,(横轴和水平轴)插入图表有一个缺陷,图表中的数据条数要固定,而且要预先设置好,不能在运行的时候确定,然后如果数据量太大的话,显示会很拥挤。

     

     

    四.注释

    Item-----记录(上文中把英文资料中的Item翻译为记录)

     

     

    作者:万琼瑶

    转载于:https://www.cnblogs.com/haoxiu1004/p/7799028.html

    展开全文
  • 一、项目中添加jxls依赖 &lt;!-- JXLS --&gt; &lt;dependency&gt; &lt;groupId&gt;org.jxls&lt;/groupId&gt; &lt;artifactId&gt;jxls&lt;/artifactId&gt; &...

    一、项目中添加jxls依赖

    		<!-- JXLS -->
            <dependency>
                <groupId>org.jxls</groupId>
                <artifactId>jxls</artifactId>
                <version>${jxls.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jxls</groupId>
                <artifactId>jxls-jexcel</artifactId>
                <version>${jxls-jexcel.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jxls</groupId>
                <artifactId>jxls-poi</artifactId>
                <version>${jxls-poi.version}</version>
            </dependency>
    

    二、制作excel模板
    1、设置模板的区域,批注jx:area(lastCell=“D4”)表示模板的区域由A1(加批注的单元格)到D4

    在这里插入图片描述

    2、定义Jxls Each循环命令,Each命令遍历Jxls Context中“data”对应的列表,并将列表中的每个值以“d”的键存入Context中(通过var定义)。Each命令的内容区域是A4:D4(通过lastCell定义),每一个context的d对象都会复制该区域并处理内容
    在这里插入图片描述

    3、在模板 区域A1:D4中,找到与之对应的key赋值
    在这里插入图片描述

    三、jxls生成excel处理代码

    				···
    				···
    				List list = (List) object;
                    // 计算导出excel文件的个数
                    int fileCount = (int) Math.ceil(Double.valueOf(list.size()) / excelMaxRowSize);
                    // 计算余数
                    int mod = list.size() % excelMaxRowSize;
                    ···
    

    四、生成结果
    在这里插入图片描述

    展开全文
  • jxls导入excel

    2016-10-03 19:31:55
    我们在开发中经常用jxls...首先在maven的pom中添加相关依赖,如下:   &lt;dependency&gt; &lt;groupId&gt;net.sf.jxls&lt;/groupId&gt; &lt;artifactId&gt;jxls-cor...

    我们在开发中经常用jxls实现导出功能,殊不知jxls也有导入功能,下面来介绍下如何使用jxls导入excel。

    首先在maven的pom中添加相关依赖,如下:

     

                     <dependency>
    			<groupId>net.sf.jxls</groupId>
    			<artifactId>jxls-core</artifactId>
    			<version>1.0.6</version>
    		</dependency>
    		<dependency>
    		    <groupId>net.sf.jxls</groupId>
    		    <artifactId>jxls-reader</artifactId>
    		    <version>1.0.6</version>
    		</dependency>

     

     

    然后需要配置导入模板(即字段映射关系),如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <workbook>
    	<worksheet name="新增局数据">
    		<section startRow="1" endRow="2" />
    		<loop startRow="3" endRow="3" items="tcs" var="tc" varType="com.aspire.train.bdc.demo.entity.TcPartner">
    			<section startRow="3" endRow="3">
    				<mapping row="3" col="0">tc.operType</mapping>
    				<mapping row="3" col="1">tc.partnerId</mapping>
    				<mapping row="3" col="2">tc.partnerName</mapping>
    				<mapping row="3" col="3">tc.description</mapping>
    				<mapping row="3" col="4">tc.validProvince</mapping>
    				<mapping row="3" col="5">tc.validDate</mapping>
    				<mapping row="3" col="6">tc.expireDate</mapping>
    			</section>
    			<loopbreakcondition>
    				<rowcheck offset="0">
    					<cellcheck offset="0"></cellcheck>
    				</rowcheck>
    			</loopbreakcondition>
    		</loop>
    	</worksheet>
    </workbook> 

     

     

    相关说明可以查看官网http://jxls.sourceforge.net/reference/reader.html

     

    其次,是制作导入模板,如下:



     

    下面是实现的java代码块,如下:

                   String xmlConfig = ConfigurationHelper
    				.getFullFileName("com/aspire/train/bdc/demo/template/TcPartner.xml");
    		XLSReader mainReader;
    		try {
    			InputStream inputXML = new BufferedInputStream(new FileInputStream(xmlConfig));
    			mainReader = ReaderBuilder.buildFromXML(inputXML);
    			InputStream inputXLS = new BufferedInputStream(file.getInputStream());
    			TcPartner tc = new TcPartner();
    			List<TcPartner> tcs = new ArrayList<TcPartner>();
    			Map<String,Object> beans = new HashMap<String,Object>();
    			beans.put("tc", tc);
    			beans.put("tcs", tcs);
    			mainReader.read(inputXLS, beans);
    			System.out.println(beans);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}

     

     

     

     

    展开全文
  • jxls开发jar包

    2010-04-19 19:30:19
    jxls开发jar包,包括其所依赖的所有的jar包,都是使用最新的官方jar包。
  • JXLS使用

    2013-02-21 17:30:12
    jxls使用的所有jar包(9个)[url]http://download.csdn.net/detail/wto3309/3167479 [/url] JXLS使用(一)——Simple Sheet...JXLS是一个简单易用的一个用于生成和读入Excel的工具,有兴趣的朋友可以到Jxls的官网...
  • jxls2.0支持合并单元格

    2019-02-19 19:04:20
    jxls2.0支持合并单元格和合并单元格模板写入数据,jar包里已经包含了pom.xml,可以自行解压方便上传到maven私服,这种方式会带上依赖,否则要一个个手动添加依赖.pom在jar包里jxls-core\2.0\jxls-core-2.0\META-INF\...
  • jxls教程

    万次阅读 2014-12-13 09:51:39
    一.JXLS简介 在很多涉及到某种报表功能的Java程序中都需要生成Excel表格。目前通过Java来操作.xls文件最完整的类库是Apache POI类库,但是当需要创建多种自定义的复杂Excel报表的时候就会出现问题,这些Excel报表...
  • JXLS-----JXLS简介

    千次阅读 2015-07-29 15:13:33
  • java jxls导出excel

    2021-07-23 09:58:35
    java jxls导出excel制作模板maven依赖创建工具类测试方法展示效果参考链接 制作模板 注意:在第一行第一列上添加批注 jx:area(lastCell="K4") 在表格里面添加下面代码 jx:each(items="personList" var="person" ...
  • JXLS 2.4.0学习

    2018-08-23 17:40:02
    LXLS 2.4.0 简介 jxls2.4 是java对excel操作的工具包,可以很方便的实用模板输出excel,根据xml配置读取excel内容。 对比jxls1 现在的版本使用批注的模式运行...maven中添加依赖 <dependency> <groupId&...
  • jxls模板导出excel

    千次阅读 2019-04-28 10:35:40
    一。需求背景: 需要将数据导出excel,如果excel的样式...1.引入jxls依赖包: net.sf.jxls jxls-core 1.0.5 2.穿件需要导出的excel模板,以xls格式保存: ![在这里插入图片描述](https://img-blog.csdnimg.c...
  • Struts2对JXLS支持及JXLS的应用

    千次阅读 2014-12-13 09:44:13
     JXLS是一个简单易用的一个用于生成和读入Excel的工具,有兴趣的朋友可以到Jxls的官网上面下载最新版本的Jxls,目前Jxls最新的版本是0.9.5,下载的Zip包里面有一个Doc和Example,不过,官网所提供的东西太过简单,...
  • JXLS2.4导出Excel

    2019-05-13 11:28:00
    1.添加依赖:http://mvnrepository.com/artifact/org.jxls <dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.4.3</version&...
  • JXLS读Excel文件至POJO

    2018-11-25 10:28:28
    JXLS读Excel文件至POJO 实际应用中经常会遇到解析excel文件获取数据至java对象。有很多第三方库可以解析excel文件,这里我们使用JXLS框架,通过JXLS几乎只需几行代码就能轻松解析...1、增加依赖 compile grou...
  • jxls操作excel文件

    万次阅读 2013-12-10 13:40:21
    JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活,简单!  JXLS软件首页:http://jxls.sourceforge.net/...
  • EXCEL模板导出--jxls

    千次阅读 2019-06-21 10:18:19
    一、导入依赖包 <dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.5.1</version> </dependency> <dependency> .....
  • JXLS中文教程

    千次阅读 2017-05-05 18:17:24
    一.JXLS简介 在很多涉及到某种报表功能的Java程序中都需要生成Excel表格。目前通过Java来操作.xls文件最完整的类库是Apache POI类库,但是当需要创建多种自定义的复杂Excel报表的时候就会出现问题,这些Excel报表...
  • 使用jxls生成Excel模板

    2020-04-15 18:11:50
    使用jxls生成Excel模板 首先导入依赖: <dependency> <groupId>net.sf.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.6</versio...
  • Jxls 导出 Excel ...添加依赖 <!--Jxls Excel--> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.8.1</version>
  • jxls操作excel

    千次阅读 2017-03-17 23:22:18
    一.JXLS简介 在很多涉及到某种报表功能的Java程序中都需要生成Excel表格。目前通过Java来操作.xls文件最完整的类库是Apache POI类库,但是当需要创建多种自定义的复杂Excel报表的时候就会出现问题,这些Excel报表...
  • 如果您使用 Maven 2 构建您的应用程序,您可以在 pom.xml 中指定所需的 jXLS 模块作为依赖项,以允许从 Maven 存储库下载它们 您的类路径中还需要以下 Jakarta 库。 * POI (3.6 or later) * Commons BeanUtils * ...
  • jxls导入Excel(即读取Excel中的数据)

    千次阅读 2017-08-25 13:39:03
    jxls
  • JXLS 2.4.0 导出生成Excel

    2017-07-23 11:20:03
    最近项目需要导出Excel 文件,想到到了 JXLS 工具,首先网上百度了下,看了下资料,好像挺简单的就开始操作了,发现测试的时候各种问题: 1.网上一堆的教程都是 jxls 1.0 左右的版本,导入网上的测试程序缺了一堆类 ...
  • jxls libs.rar非源码

    2012-03-05 16:47:42
    jxls libs.rar 非源码

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 332
精华内容 132
关键字:

jxls依赖