| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2006 17:18:19
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Estou com dificuldade para ler uma planilha no Excel e passar os dados lidos para um banco de dados.
Alguém já fez isso?
Grato,
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2006 17:30:25
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Dá uma olhada nesse projeto da jakarta que é para manipulação de documentos da MS
http://jakarta.apache.org/poi
Aqui um artigo que explica como usá-lo
http://www.javaworld.com/javaworld/jw-03-2004/jw-0322-poi.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2006 18:01:48
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Achei muito interessante o que vc mandou, se não for abusar vc sabe de algum arquivo que mostre como "converter" o que vc leu no arquivo para uma select por exemplo?
Valeu.
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2006 19:32:52
|
isneiqui
Thread.start()
![[Avatar]](/images/avatar/ee16fa83c0f151ef85e617f5aa3867a6.jpg)
Membro desde: 22/04/2004 17:50:44
Mensagens: 38
Localização: São Paulo/SP
Offline
|
Se vc quiser poderia dar uma olhada tb no:
http://www.andykhan.com/jexcelapi/tutorial.html
as vezes pode ser um pouco mais fácil de usar do que o POI, mas com qualquer um dos dois acredito que vc resolve seu problema.
Quando vc ler os conteúdos das células, vc pode montar seu SQL daí,
por ex:
esse exemplo q passei seria usando a Java Excel API (e não a POI), mas a idéia de ler os dados e montar o SQL é a mesma... é uma sugestão.
Também é possível se conectar por ODBC diretamente no XLS (Excel) tb e manipulá-lo com SQL daí...
espero ter ajudado...
um abraço
|
MS IE User: BrainNotFoundException.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 09:23:51
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Cara agora pintou uma dúvida que dá até vergonha, estou testando o seu exemplo e procurei por todo o material mas tem que fazer alguma coisa para por exemplo "Instalar" essa API, pois uso o Netbeans e dá um monte de erro aí pensei que tivesse que instalar ela de alguma forma para a gente dar um import como fazemos com outras API´s do Java. Vc sabe onde encontro documentação de como fazer isso?
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 10:04:04
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Hehe... Novato é soda.
Achei como usar, é só adicionar o jar na minha lib.
Valeu.
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 10:29:48
|
David
JavaEvangelist
![[Avatar]](/images/avatar/77431ca7981f1f1483ae8a58bcbb6e0e.jpg)
Membro desde: 18/03/2005 13:10:33
Mensagens: 450
Localização: Natal/RN
Offline
|
Uma solução que, a principio é sebosa, mas que dependendo do seu problema pode ser a mais simples é você importar o xls no Access e depois exportar para um mdb. Depois é só acessá-lo como um banco de dados normal, via ODBC.
|
David Pereira
Engenheiro de Computação - UFRN
Mestre em Engenharia Elétrica
Doutorando em Engenharia Elétrica |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 14:17:05
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Estou usando o seguinte código para ler em um arquivo do Excel e fazer o insert no banco, contudo ele busca um valor por vez, como na minha necessidade a quantidade de linhas da planilha é variável tem como eu fazer ele pegar de forma mais automática a quantidade total das linhas para fazer o insert no banco?
Olha o código:
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 18:08:13
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Pessoal, dando uma modificada no meu último Post, o código abaixo está com um erro quando chego na última linha com informação na minha planilha. Alguém pode me ajudar a tratar esse erro?
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2006 18:17:12
|
isneiqui
Thread.start()
![[Avatar]](/images/avatar/ee16fa83c0f151ef85e617f5aa3867a6.jpg)
Membro desde: 22/04/2004 17:50:44
Mensagens: 38
Localização: São Paulo/SP
Offline
|
pelo que eu vi na API, tem um método em Sheet q retorna a quantidade de linhas daquela planilha. Daí é só fazer um FOR que vai inserindo um a um... tem tb um método que retorna todas as células de uma determinada linha, daí fica mais fácil pra manipular.
não testei mas acredito que dê certo, deve ficar algo assim:
foi o que escrevi aqui rapidinho deve ter vários errinhos mas o
importante é pegar a idéia principal...
qualquer coisa estamos ae,
abraços>
|
MS IE User: BrainNotFoundException.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/05/2006 08:59:29
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Cara valeu mesmo, peguei a sua idéia e agreguei ao que eu já tinha feito e agora tá funcionando perfeito, para constar como efeito de como foi implementada a solução segue o código:
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/05/2007 23:48:23
|
bebad
JavaEvangelist
![[Avatar]](/images/avatar/ca49dcab7677fd5d3108f9a9b250d604.jpg)
Membro desde: 27/07/2006 19:56:35
Mensagens: 303
Offline
|
Parabéns pela iniciativa amigos,
Muito obrigado.
Eu tentei usar a do Jakarta pois estou precisando converter xls de office mais avancados,
Bom, após apanhar uma madrugada inteira e metade do dia seguinte finalmente consegui executar o exemplo que encontrei no www.onjava.com.
Valeu !!!!!!!
|
Admin.. PATCH your box now, or DIE!!!
Oracle Certified Associate, Java SE 5/SE 6
Oracle Certified Professional, Java SE 6 Programmer
Oracle Certified Professional, Java ME 1 Mobile Application Developer
Oracle Certified Expert, Java EE6 Web Services Developer
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional, Java EE 5 Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer
representing the old school defacers brazil:
red_eye
ATH
ir4dex
hax0rs lab
IoN
r00t_system
kernel_panic
bebad was here. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2007 18:52:24
|
anderline27
Entusiasta Java
Membro desde: 23/11/2007 18:38:01
Mensagens: 19
Offline
|
Olá,
Primeiro queria agradecer ao exemplo de inserir a planilha no excel no banco de dados, eu usei o codigo pra minha monografia, porem não vou inserir no banco de dados, vou usar os dados em uma formula chamada EWMA, que calcula derivativos, porem a formula somente aceita dados do tipo double ou float. Preciso urgentemente converter esses dados em double ou float pra colocar em minha monografia q é pra Dezembro/2007 e se eu resolver esse problema, tenho outro, vou ter q plotar um grafico, to pensando em usar a API jFreeChart.
C:\Documents and Settings\NTI\Meus documentos\Anderson\Monografia\src\EWMA.java
1 import java.io.File;
2 import java.util.*;
3 //import jxl.*;
4 import java.lang.*;
5 import java.io.File;
6 import java.io.IOException;
7 import java.sql.Connection;
8 import java.sql.DriverManager;
9 import java.sql.PreparedStatement;
10 import java.sql.SQLException;
11 import java.util.Date;
12 import javax.swing.JOptionPane;
13 import jxl.Cell;
14 import jxl.CellType;
15 import jxl.DateCell;
16 import jxl.NumberCell;
17 import jxl.Sheet;
18 import jxl.Workbook;
19 import jxl.read.biff.BiffException;
20 import javax.swing.*;
21
22
23 public class EWMA{
24
25 private static Connection conn;
26 private static int i = 0;
27 private static int j = 0;
28 private static String stringa1;
29 private static String stringb2;
30 private static double intc3;
31 private static double lambida;
32 private static double lambida2;
33 private static double ewma;
34 private static double a;
35 private static String titulo;
36 private static String stringd4;
37 private static String stringe5;
38 private static String stringf6;
39 private static String stringg7;
40 private static String stringh8;
41 private static String stringi9;
42 private static String stringj10;
43 private static String stringk11;
44 private static String stringl12;
45 private static String stringm13;
46 private static String stringn14;
47
48
49 /** Creates a new instance of Main */
50 public static void main(String[] args ) throws IOException, BiffException
51 //throws IOException, BiffException,
52 /*ClassNotFoundException, SQLException */
53 {
54 ewma();
55 //vet = new Vector();
56
57 //Conexão com o banco de dados
58 //Class.forName("com.mysql.jdbc.Driver");
59 //Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jar",
60 // "user",
61 // "senha");
62
63 /* pega o arquiivo do Excel OPÇÃO 1*/ // não achou o arquivo
64 //Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
65
66 }
67
68 public static void ewma() throws IOException, BiffException{
69
70 JOptionPane.showMessageDialog(null,"Lendo o arquivo ...");
71
72 // pega o arquiivo do Excel
73 String filename = "c:/1995_completo_soja.xls";
74 File f= new File(filename);
75 Workbook planilha = Workbook.getWorkbook(f);
76 // Mostra o nome do arquivo lido
77 JOptionPane.showMessageDialog(null,"Leu o arquivo " +f);
78
79 /* pega a primeira planilha dentro do arquivo XLS */
80 Sheet sheet = planilha.getSheet(0);
81
82 //Pega a quantidade de linhas da planilha
83 int linhas = sheet.getRows();
84 // Mostra a quantidad de linhas
85 JOptionPane.showMessageDialog(null,"Quantidade de linhas: " +linhas);
86 //Pega a quantidade de colunas da planilha
87 int colunas = sheet.getColumns();
88 // Mostra a quantidade de colunas
89 JOptionPane.showMessageDialog(null,"Quantidade de colunas: " +colunas);
90
91 for(i = 0; i < linhas; i++){ // pega as linhas
92 for(j = 0; j < colunas; i++){ // pega as colunas
93
94 /* pega os valores das células como se numa matriz */
95
96 //Cell a1 = sheet.getCell(0,i);
97 //Cell b2 = sheet.getCell(1,i);
98 //Cell c3 = sheet.getCell(2,i);
99 //Cell d4 = sheet.getCell(3,i);
100 //Cell e5 = sheet.getCell(4,i);
101 //Cell f6 = sheet.getCell(5,i);
102 //Cell g7 = sheet.getCell(6,i);
103 //Cell h8 = sheet.getCell(7,i);
104 //Cell i9 = sheet.getCell(8,i);
105 //Cell j10 = sheet.getCell(9,i);
106
107 // pega as celulas da coluna, pulando a 1º linha do titulo
108 Cell k11 = sheet.getCell(10,i+1);
109
110 /*
111 if (k11.getType() == CellType.NUMBER)
112 {
113 NumberCell fc = (NumberCell)k11;
114 stringk11 = fc.getNumberFormat();
115 }
116 */
117
118
119 //Cell l12 = sheet.getCell(11,i);
120 //Cell m13 = sheet.getCell(12,i);
121 //Cell n14 = sheet.getCell(13,i);
122
123
124
125 /* pega os conteúdos das células */
126
127 //stringa1 = a1.getContents(); // Pega todo o conteudo da coluna A
128 //stringb2 = b2.getContents(); // Pega todo o conteudo da coluna B
129 //stringd4 = d4.getContents(); // Pega todo o conteudo da coluna C
130 //stringe5 = e5.getContents(); // Pega todo o conteudo da coluna D
131 //stringf6 = f6.getContents(); // Pega todo o conteudo da coluna E
132 //stringg7 = g7.getContents(); // Pega todo o conteudo da coluna F
133 //stringh8 = h8.getContents(); // Pega todo o conteudo da coluna G
134 //stringi9 = i9.getContents(); // Pega todo o conteudo da coluna H
135 //stringj10 = j10.getContents(); // Pega todo o conteudo da coluna I
136
137
138 // Pega todo o conteudo da coluna J
139
140 stringk11 = k11.getContents();
141 // stringj10 = Float.parseFloat(j10.getContents());
142
143
144 //stringl12 = l12.getContents(); // Pega todo o conteudo da coluna K
145 //stringm13 = m13.getContents(); // Pega todo o conteudo da coluna L
146 //stringn14 = n14.getContents(); // Pega todo o conteudo da coluna M
147
148 // Mostra o conteudo da coluna J
149 JOptionPane.showMessageDialog(null,"Conteudo da Coluna: " +stringk11);
150
151
152
153
154 // Inicio da Formula EWMA
155
156 lambida = 0.94;
157 i = 1;
158 lambida2 = 1;
159 ewma = 0;
160 do{
161 ewma = ewma + Math.pow(k11.getContents(10,i+1),2) * lambida2;
162 lambida2 = lambida2 * lambida;
163 i = i+1;
164 }while(lambida2 > 0.00001);
165 ewma = ewma * ( 1 - lambida);
166
167 // Fim da Formula EWMA
168
169 } // fecha for j
170 } // fecha for i
171 planilha.close(); // fecha planilha
172 };
173
174 }
175
176
177
O erro é na linha 161, os dados q estão vindo pra formula são em String, porem preciso elevar os dados a potência de 2 e esse metodo Math.pow(double a, double b) só aceita double.
Se alguem puder ajudar ai, vou ficar muito grato.
Meu msn é : ander_dorneles@hotmail.com
To sempre on line
Anderson Dorneles
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2007 19:01:26
|
lavh
GUJ Master
Membro desde: 30/07/2006 16:09:55
Mensagens: 1311
Offline
|
não sei se entendi bem...mas acho que um:
ou
resolve o seu problema
[]'s
This message was edited 1 time. Last update was at 23/11/2007 19:02:20
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/11/2007 19:51:30
|
anderline27
Entusiasta Java
Membro desde: 23/11/2007 18:38:01
Mensagens: 19
Offline
|
Olá,
Obriago pela dica, mais eu ja tinha experimentado isso, tanto float qto double:
stringk11 = Double.parseDouble(k11.getContents());
e da esse erro de excessão:
Exception in thread "main" java.lang.NumberFormatException: For input string: "12,3"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.parseDouble(Double.java:510)
at EWMA.ewma(EWMA.java:141)
at EWMA.main(EWMA.java:54)
Java Result: 1
ahh, so pra constar, q como String o codigo como está lê todos os dados das celulas dessa coluna, ja como double...
esse dado "12,3" ele se encontra +/- no meio da planilha, não sei pq o erro nesse dado se os outros dados são parecidos. Porem ainda acho q o problema é a função getContents(); q não suporta dado ponto flutuante. Acho q preciso pegar esses dados de forma diferente, só não sei como fazer, só sei q pegar como string não vai rolar, e pelo q dei uma olhada na documentação, tem umas funções q pegam ja como double, só não soube usá-las.
Mais agradeço desde já
Anderson Dorneles
|
|
|
 |
|
|
|
|