sexta-feira, 5 de março de 2010
Começo a reparar que estava tudo a correr bem demais...
...quando me deparo que há pessoal que ignora princípios básicos de Engenharia de Software para que as coisas corram bem no futuro ou simplesmente tiraram o curso por correspondência!
quinta-feira, 4 de março de 2010
sexta-feira, 5 de fevereiro de 2010
Fazer queries a um ficheiro Excel? É possível...
Estava eu certo dia a precisar de arranjar uma forma de extrair, de uma forma dinâmica, umas informações de um ficheiro Excel quando me pus a investigar o que haveria por ai.
Ora, aparentemente alguém com essa mesma necessidade decidiu desenvolver uma framework precisamente para este propósito. Designado por MetaModel esta framework, que segue a 3ª revisão da linguagem SQL, não serve necessariamente só para fazer queries a ficheiros Excel. Suporta também ficheiros CSV (comma separated values), access, SGBD's relacionais por JDBC, etc.
Isto é uma pequena peça de um grande puzzle chamado eobjects. Este site é dedicado ao desenvolvimento de soluções Open Source relacionadas com a temática de Business Intelligence e Data Warehousing. A sua estrela é sem dúvida o DataCleaner. Para mais informações consultar este link: http://eobjects.org/trac/wiki/DataQuality.
Voltando então às queries aos ficheiros Excel com um exemplo básico.
1- Supondo que tenho uma tabela em Excel com os seguintes dados:
Nomes
Talásio
Talassa
Taléia
Tales
Tália
Talásio
Tales
Tales
Talassa
Taléia
Tália
2- e com este pedaço de código:
3- temos este resultado com os nomes distintos da tabela anterior:
Fantástico não é? Ora tentem fazer isto com as funções do Excel...
Ora, aparentemente alguém com essa mesma necessidade decidiu desenvolver uma framework precisamente para este propósito. Designado por MetaModel esta framework, que segue a 3ª revisão da linguagem SQL, não serve necessariamente só para fazer queries a ficheiros Excel. Suporta também ficheiros CSV (comma separated values), access, SGBD's relacionais por JDBC, etc.
Isto é uma pequena peça de um grande puzzle chamado eobjects. Este site é dedicado ao desenvolvimento de soluções Open Source relacionadas com a temática de Business Intelligence e Data Warehousing. A sua estrela é sem dúvida o DataCleaner. Para mais informações consultar este link: http://eobjects.org/trac/wiki/DataQuality.
Voltando então às queries aos ficheiros Excel com um exemplo básico.
1- Supondo que tenho uma tabela em Excel com os seguintes dados:
Nomes
Talásio
Talassa
Taléia
Tales
Tália
Talásio
Tales
Tales
Talassa
Taléia
Tália
2- e com este pedaço de código:
public static void main(String[] args) {
DataContext data = DataContextFactory
.createExcelDataContext(new File(
"C:\\Documents and Settings\\Rafael\\workspace\\Apache POI\\wb.xls"));
Schema[] schemas = data.getSchemas();
for (int i = 0; i < schemas.length; i++) {
System.out.println("Existing schemas: " + schemas[i]);
}
Table[] sheets = schemas[1].getTables();
for (int i = 0; i < sheets.length; i++) {
System.out.println(sheets[i].getName());
}
Table table = data.getDefaultSchema().getTableByName("new Sheet");
Column colA = table.getColumnByName("Nomes");
Query q = new Query();
q.select(colA);
q.selectDistinct();
q.from(table);
DataSet dataSet = data.executeQuery(q);
while (dataSet.next()) {
System.out.println(dataSet.getRow());
}
}
3- temos este resultado com os nomes distintos da tabela anterior:
Existing schemas: Schema[name=information_schema]
Existing schemas: Schema[name=wb.xls]
new Sheet
Row[values={Talásio }]
Row[values={Talassa }]
Row[values={Tales }]
Row[values={Tália }]
Row[values={Taléia }]
Fantástico não é? Ora tentem fazer isto com as funções do Excel...
Subscrever:
Mensagens (Atom)