Não sei se vai ajudar, mas eu desenvolvi um projeto um tempo atrás para ajudar a ler planilhas do excel.
Você pode fazer download do mesmo aqui:
http://sourceforge.net/projects/leitor-excel/files/
pegue o arquivo leitorexcel0.1RC01bin.tar.gz
Depois que descompactar ele, adicione os jars no classpath do seu projeto e leia o javadoc das classes:
br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.LeitorExcel
br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.listener.ColunaListener
br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.listener.LinhaListener
O código abaixo é um exemplo de como a biblioteca poderia ser utilizada no seu caso, utilizando a planilha que está em anexo (que segue o formato que vc disse).
OBS: para testar não esquecer de alterar o caminho do arquivo que está como /home/duque/Desktop/teste.xls
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.LeitorExcel;
import br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.exception.ListenerException;
import br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.listener.ColunaListener;
import br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.util.LinhaColunaListenerVo;
class DadosVO implements Serializable {
private Date colunaData;
private Double valor;
public Date getColunaData() {
return colunaData;
}
public void setColunaData(Date colunaData) {
this.colunaData = colunaData;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public DadosVO(Date colunaData, Double valor) {
super();
this.colunaData = colunaData;
this.valor = valor;
}
public DadosVO(){
}
public String toString() {
return "Data --> " + colunaData + " valor --> " + valor;
}
}
public class TesteLeitorExcel {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("/home/duque/Desktop/teste.xls");
LeitorExcel leitor = null;
//Lista que irá guardar os dados da planilha
final List<DadosVO> listaDadosVO = new LinkedList<DadosVO>();
leitor = new LeitorExcel("[*,*]", 1, is, null,
new ColunaListener() {
DadosVO dadosVO = null;
@Override
public boolean lendoColuna(int linha, int coluna, Map dadosColuna)
throws ListenerException {
LinhaColunaListenerVo voAtual = (LinhaColunaListenerVo) dadosColuna
.get(ColunaListener.CHAVE_VO_COLUNA);
if (linha > 1) { //Pula primeira linha pois é a linha que possui o título
switch (coluna) {
case 1:// Coluna data
if(dadosVO == null){
dadosVO = new DadosVO();
}
Date data = voAtual.getCelulaAtual().getDateCellValue();
System.out.println("Data --> " + data);
dadosVO.setColunaData(data);
break;
case 2:// Coluna meta
double valor = voAtual.getCelulaAtual().getNumericCellValue();
System.out.println("Valor atual -->" + valor);
dadosVO.setValor(valor);
//"acabei de ler a linha" Adiciono o vo na lista
listaDadosVO.add(dadosVO);
dadosVO = null;
}
}
return true;
}
}
);
leitor.processarLeituraPlanilha();
//Agora faço o que quiser com os dados da planilha
for(DadosVO vo : listaDadosVO) {
System.out.println( vo );
}
}
}
Os detalhes sobre como utilizar a api estão na documentação javadoc do componente.
Existem duas classes que eu implementei que são exemplos da implementação dos listeners para as interfaces de leitura das linhas e colunas.
Estas classes são:
br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.teste.listener.ConsoleLinhaListener
br.eti.rogerioaguilar.minhasclasses.util.excel.leitor.teste.listener.ConsoleColunaListener
se quiser ver o código destas classes você terá que fazer o download do pacote que possui o código fonte da biblioteca:
leitorexcel0.1RC01desenv.tar.gz
Você pode ler algumas informações sobre este componente aqui:
http://leitor-excel.sourceforge.net/
Espero que te ajude de alguma forma.
Até mais!