JXLS 多个sheet

1.java代码

package com.knife.jxls;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;

import com.knife.jxls.TestJxls.Foo;

public class TestJxlsSheet {

	
	public static class Foo {

		public String id;
		public String name;
		public int age;

		public Foo(String id, String name, int age) {
			this.id = id;
			this.name = name;
			this.age = age;
		}

	}

	public static void main(String args[]) throws IOException {

		List<Foo> foolist=new ArrayList<Foo>();
		foolist.add(new Foo("001","lee",11));
		foolist.add(new Foo("002","wang",14));
		foolist.add(new Foo("003","zhang",19));
		
		List<String> sheetNames= new ArrayList<String>();
		sheetNames.add("001");
		sheetNames.add("002");
		sheetNames.add("003");
		
		InputStream in = new FileInputStream("H:\\template.xlsx");
		OutputStream out = new FileOutputStream("H:\\test1.xlsx");
		Context context = new Context();
		context.putVar("foolist", foolist);
		context.putVar("sheetNames", sheetNames);
		JxlsHelper.getInstance().processTemplate(in, out, context);
	}
	
}

2.批注

jx:area(lastCell = "C3")
jx:each(items="foolist", var="foo", lastCell="C3" multisheet="sheetNames")

3.结果

模板:

输出文件:

此时会多出一个空白sheet

需要重写jslx的一个函数来解决,代码如下:

public void processTemplate(Context context, Transformer transformer) throws IOException {

		AreaBuilder areaBuilder = this.getAreaBuilder();
		boolean processFormulas = this.isProcessFormulas();

		areaBuilder.setTransformer(transformer);
		List<Area> xlsAreaList = areaBuilder.build();
		Iterator var4 = xlsAreaList.iterator();

		Area xlsArea;
		while (var4.hasNext()) {
			xlsArea = (Area) var4.next();
			xlsArea.applyAt(new CellRef(xlsArea.getStartCellRef().getCellName()), context);
		}

		if (processFormulas) {
			var4 = xlsAreaList.iterator();

			while (var4.hasNext()) {
				xlsArea = (Area) var4.next();
				this.setFormulaProcessor(xlsArea);
				xlsArea.processFormulas();
			}
		}

		if (this.isDeleteTemplateSheet()) {
			transformer.deleteSheet("Sheet3");
		}

		transformer.write();

	}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值