Excel + Java

Boa tarde galera, estou com o B.O. que não faço ideia do que possa estar ocorrendo. Basicamente estou puxando uma planilha excel para o Java usando a API JXL, até ai tudo bem, consegui trazer para um ArrayList. Criei uma classe para retornar esse ArrayList, quando atribuo esse retorno a outro ArrayList e syso a lista, no console aparece apenas o ultimo item do ArrayList.

Segue o código:

Excel 1

public class ArqExcelProd {
	private List<Produto> produtos = new ArrayList<Produto>();

	public List<Produto> listaProdutos() throws BiffException, IOException {
		// ABRE CADASTRO DE PRODUTOS MATR010.XLS
		File excel = new File("C:/Users/Hawk/Desktop/matr010.xls");

		Workbook workbook = Workbook.getWorkbook(excel);
		Sheet sheet = workbook.getSheet(0);

		Produto prod = new Produto();
		
		for (int cont = 0; cont < sheet.getRows(); cont++) {
			prod.setCodigo(sheet.getCell(0, cont).getContents());
			prod.setDescricao(sheet.getCell(1, cont).getContents());
			prod.setNcm(sheet.getCell(8, cont).getContents());
			
			/*
			System.out.println("-----------------------------------------------------------------------------------------------");
			System.out.println("Código: " + prod.getCodigo() + "\nDescrição: " + prod.getDescricao() + "\nNCM: " + prod.getNcm());
			System.out.println("-----------------------------------------------------------------------------------------------");
			*/
			
			produtos.add(prod);
		}

		return produtos;
	}
}

Excel 2

public class ArqExcelFat {
	private List<RelFat> fat = new ArrayList<RelFat>();

	public List<RelFat> listaFat() throws BiffException, IOException {
		// ABRE CADASTRO DE PRODUTOS MATR010.XLS
		File excel = new File("C:/Users/Hawk/Desktop/matr780.xls");

		Workbook workbook = Workbook.getWorkbook(excel);
		Sheet sheet = workbook.getSheet(0);

		RelFat relFat = new RelFat();
		
		for (int cont = 1; cont < sheet.getRows(); cont++) {
			if(!(sheet.getCell(4, cont).getContents() == "")){
				relFat.setCodigo(sheet.getCell(4, cont).getContents());
			}
			
			relFat.setValor(Double.parseDouble((sheet.getCell(12, cont).getContents()).replace(",", ".")));
			
			/*
			System.out.println("-----------------------------------------------------------------------------------------------");
			System.out.println("Código: " + relFat.getCodigo() + "\nValor: " + relFat.getValor());
			System.out.println("-----------------------------------------------------------------------------------------------");
			*/
			
			fat.add(relFat);
		}
		
		return fat;
	}
}

Classe que será usada para unir os dois arquivos Excel

public class UneFatNcm {
	private ArqExcelProd excelProd = new ArqExcelProd();
	private ArqExcelFat excelFat = new ArqExcelFat();
	
	private List<Produto> produtos = new ArrayList<Produto>();
	private List<RelFat> relFat = new ArrayList<RelFat>();
	
	private List<Faturamento> faturamento = new ArrayList<Faturamento>();
	
	public List<Faturamento> juncao(){
		System.out.println("Iniciando junção de arquivos...");
		
		//PUXA XLS PRODUTOS
		try {
			this.produtos = excelProd.listaProdutos();
			System.out.println("Produtos carregados: " + this.produtos.size());
		} catch (BiffException e) {
			System.out.println(e);
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println(e);
			e.printStackTrace();
		}
		
		//PUXA XLS RELATORIO FATURAMENTO
		try {
			this.relFat = excelFat.listaFat();
			System.out.println("Produtos faturados: " + this.relFat.size());
		} catch (BiffException e) {
			System.out.println(e);
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println(e);
			e.printStackTrace();
		}
		
		for(int cont = 0; cont < this.produtos.size(); cont++){
			System.out.println("Código Produto: " + this.produtos.get(cont).getCodigo() + "\nNCM: " + this.produtos.get(cont).getNcm());
		}
		
		for(int cont = 0; cont < this.relFat.size(); cont++){
			System.out.println("Código Produto: " + this.relFat.get(cont).getCodigo() + "\nValor: " + this.relFat.get(cont).getValor());
		}
		
		for(int cont = 0; cont < faturamento.size(); cont++){
			System.out.println("NCM: " + faturamento.get(cont).getNcm() + "\nValor: " + faturamento.get(cont).getValor());
		}
		
		return faturamento;
	}

}