使用jxl合并多个excel

由于公司,有时候涉及到Excel的操作,所以特意看看这个jxl
在网上看了半天都没有能用的使用jxl合并多个excel的例子,大多数都是复制粘贴,我的天!,只好自己写一个 

一:大概思路如下:

    1. 获取想追加的文件列表

    2. 然后依次打开,获取sheet

    3.通过sheet 获取该Excel文件中的行数 

    4. 然后根据行数 和  Cell[] getRows(int i) 方法, 可以将每行的单元格,作为元素存入到 Cell[] 中

    5. 然后遍历cell[], 得到每一行的单元格,再根据cell.getContents() 获取到内容,添加到自己目标文件的指定位置!!

    注意点 :

    a. 目标文件的行数是要变化的,所以每次追加完之后,再去读取一下目标文件的行数
    b. 列数就不用管了,这个cell[]  有多长,就追加几列

 

其实下面代码,可以 稍微重构一下,我这里就懒得动手了 

import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

//可以把一个目录下的多个Excel文件内容合并成一个!!
public class Demo1 {

	public static void main(String[] args) throws Exception {
		//将test.xls 中的数据追加到result.xls中
		
		File file = new File("D:\\TestIo\\result.xls");
		Workbook workbook = Workbook.getWorkbook(file);
		//创建一个副本
		WritableWorkbook workbook2 = Workbook.createWorkbook(file, workbook);
		WritableSheet sheet2 = workbook2.getSheet(0);
		
		int columns2 = sheet2.getColumns();
		
		//获取数据的来源
		File srcFile = new File("D:\\TestIo\\jxl");
		File[] listFiles = srcFile.listFiles();
		
		for (File file2 : listFiles) {
			//获取工作薄
			Workbook workbook3 = Workbook.getWorkbook(file2);
			//获取第一个工作表
			Sheet sheet = workbook3.getSheet(0);
			//获取该工作薄里面的有效行数
			int rows = sheet.getRows();
			int columns = sheet.getColumns();
			System.out.println(rows + " "+ columns);
			
			for (int i = 0; i < rows; i++) {
				//被追加的excel中的行数
				int rows2 = sheet2.getRows();
				Cell[] cells = sheet.getRow(i);
				for (int j = 0; j < cells.length; j++) {
					String contents = cells[j].getContents();
					//列其实就是这个一维数组的依次的个数
					sheet2.addCell(new Label(j, rows2, contents));
				}
			}
		}
		
		workbook2.write();
		workbook2.close();
		workbook.close();
	}
}

二:注意事项

1. jxl不可以读取.xlsx文件, 只能读取.xls, 想读取.xlsx文件的话,去学习一下poi
2.Exception in thread "main" jxl.read.biff.BiffException: The input file was not found
(  java对它写了一次导致损失:新建一个Excel就好了)
 3. 运行jxl程序的时候,输出的这一个 .xsl文件不能打开!

 

三:想自己对这个了解详细点,参考以下博文:

https://www.jb51.net/article/110805.htm

https://blog.csdn.net/qq_37057095/article/details/75460346

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值