bom dia
estou tentando importar dados de uma planilha para o banco. mas não não estou conseguindo.
segue codigo…
public void csv(){
Path a = Paths.get(“K:\arquivo\protocolo.csv”);
boolean exists = Files.exists(a);
boolean notExists = Files.notExists(a);
if (exists) {
System.out.println(“File exists!”);
System.out.println(“executando”);
Protocolo protocolo = new Protocolo();
ProtocoloJpaDAO.getInstance().removeAll();
System.out.println(“excluir protoclos”);
File arquivoCSV = new File (“K:\arquivo\protocolo.csv”);
System.out.println(“iniciar”);
try{
String linha = new String();
Scanner scan = new Scanner(arquivoCSV);
scan.nextLine();
scan.nextLine();
System.out.println(arquivoCSV);
System.out.println(“inserindo”);
while(scan.hasNext()) {
linha = scan.nextLine();
String[] valores = linha.split(";");
if(valores[0].length() > 0) {
protocolo.setCd(valores[0]);
protocolo.setProtocolo(valores[1]);
protocolo.setData(valores[2]);
protocolo.setCod_produto(valores[3]);
protocolo.setDescricao(valores[4]);
protocolo.setQtd_dev(valores[5]);
protocolo.setVlr_dev(valores[6]);
protocolo.setNf_venda(valores[7]);
protocolo.setDta_venda(valores[8]);
protocolo.setPromo(valores[9]);
protocolo.setQtd_venda(valores[10]);
protocolo.setVlr_venda(valores[11]);
protocolo.setMotivo_dev(valores[12]);
protocolo.setDesc_dev(valores[13]);
protocolo.setCod_dev(valores[14]);
protocolo.setDesc_motivo(valores[15]);
protocolo.setJustificativa(valores[16]);
protocolo.setCod_cliente(valores[17]);
protocolo.setRazao(valores[18]);
protocolo.setSetor(valores[19]);
protocolo.setSupervisor(valores[20]);
protocolo.setCod_representante(valores[21]);
protocolo.setRepresentante(valores[22]);
protocolo.setRota_roteiro(valores[23]);
protocolo.setStatus_protocolo(valores[24]);
protocolo.setAutorizacao_log(valores[25]);
protocolo.setDta_autorizacao_log(valores[26]);
protocolo.setAutorizador_coleta(valores[27]);
protocolo.setDta_aut_coleta(valores[28]);
protocolo.setResponsavel_reprova(valores[29]);
protocolo.setDta_reprova(valores[30]);
protocolo.setMotivo_reprova(valores[31]);
protocolo.setEm_conferencia(valores[32]);
protocolo.setColetado(valores[33]);
protocolo.setDta_coletado(valores[34]);
protocolo.setDta_chegada(valores[35]);
protocolo.setDigitacao(valores[36]);
protocolo.setDta_digitacao(valores[37]);
protocolo.setUpload(valores[38]);
protocolo.setDev_total(valores[39]);
protocolo.setProtocolo_reenviado(valores[40]);
protocolo.setProtocolo_ant(valores[41]);
protocolo.setTipo_devolucao(valores[42]);
protocolo.setAutorizacao_coleta(valores[43]);
protocolo.setCd(valores[44]);
protocolo.setDta_autorizacao(valores[45]);
ProtocoloJpaDAO.getInstance().merge(protocolo);
}
linha = scan.nextLine();
}
scan.close();
//arquivoCSV.delete();
}catch(Exception e) {
e.printStackTrace();
}
} else if (notExists) {
System.out.println(“File doesn’t exist!”);
}
}
Qual o erro que está acontecendo?
Eu se fosse você, instanciaria o Protocolo
dentro do laço e salvaria com o método persist
ao invés de merge
.
bom dia
eu aplico o mesmo cod em outra importação de csv, mas para essa planilha aparace esse erro na linha do cod “scan.nextLine()”
e se retiro o scan.nextLine() ele não da continuidade na importação mas não aparece erro…
segue erro…
<<<
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at com.utils.UploadCsv.executaUpload(UploadCsv.java:95)
at com.utils.UploadCsv.upload(UploadCsv.java:47)
at com.principal.FrameAtualizar$2.run(FrameAtualizar.java:119)
se tiver outro cod para importação de arquivo csv ou xml já ajuda…
obrigado
É que você está chamando o método nextLine()
sem ter verificado se o hasNextLine()
é verdadeiro.
Dei uma pequena refatorada pro seu código ficar mais legível:
public void importarArquivoCsv() {
File arquivoCSV = new File("K:\\arquivo\\protocolo.csv");
if (arquivoCSV.exists()) {
System.out.println("File exists!");
lerArquivoCsv(arquivoCSV);
} else {
System.out.println("File doesn’t exist!");
}
}
private void lerArquivoCsv(File arquivoCSV) {
System.out.println("executando");
ProtocoloJpaDAO dao = ProtocoloJpaDAO.getInstance();
System.out.println("excluir protoclos");
dao.removeAll();
System.out.println("iniciar");
try (Scanner scan = new Scanner(arquivoCSV)) {
if (!scan.hasNextLine()) {
return; // não tem a primeira linha no arquivo
}
scan.nextLine();
if (!scan.hasNextLine()) {
return; // não tem a segunda linha no arquivo
}
scan.nextLine();
System.out.println(arquivoCSV);
System.out.println("inserindo");
while (scan.hasNext()) {
String linha = scan.nextLine();
String[] valores = linha.split(";");
if (valores[0].length() > 0) {
Protocolo protocolo = criarProtocolo(valores);
dao.merge(protocolo);
}
}
scan.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private Protocolo criarProtocolo(String[] valores) {
Protocolo protocolo = new Protocolo();
protocolo.setCd(valores[0]);
protocolo.setProtocolo(valores[1]);
protocolo.setData(valores[2]);
protocolo.setCod_produto(valores[3]);
protocolo.setDescricao(valores[4]);
protocolo.setQtd_dev(valores[5]);
protocolo.setVlr_dev(valores[6]);
protocolo.setNf_venda(valores[7]);
protocolo.setDta_venda(valores[8]);
protocolo.setPromo(valores[9]);
protocolo.setQtd_venda(valores[10]);
protocolo.setVlr_venda(valores[11]);
protocolo.setMotivo_dev(valores[12]);
protocolo.setDesc_dev(valores[13]);
protocolo.setCod_dev(valores[14]);
protocolo.setDesc_motivo(valores[15]);
protocolo.setJustificativa(valores[16]);
protocolo.setCod_cliente(valores[17]);
protocolo.setRazao(valores[18]);
protocolo.setSetor(valores[19]);
protocolo.setSupervisor(valores[20]);
protocolo.setCod_representante(valores[21]);
protocolo.setRepresentante(valores[22]);
protocolo.setRota_roteiro(valores[23]);
protocolo.setStatus_protocolo(valores[24]);
protocolo.setAutorizacao_log(valores[25]);
protocolo.setDta_autorizacao_log(valores[26]);
protocolo.setAutorizador_coleta(valores[27]);
protocolo.setDta_aut_coleta(valores[28]);
protocolo.setResponsavel_reprova(valores[29]);
protocolo.setDta_reprova(valores[30]);
protocolo.setMotivo_reprova(valores[31]);
protocolo.setEm_conferencia(valores[32]);
protocolo.setColetado(valores[33]);
protocolo.setDta_coletado(valores[34]);
protocolo.setDta_chegada(valores[35]);
protocolo.setDigitacao(valores[36]);
protocolo.setDta_digitacao(valores[37]);
protocolo.setUpload(valores[38]);
protocolo.setDev_total(valores[39]);
protocolo.setProtocolo_reenviado(valores[40]);
protocolo.setProtocolo_ant(valores[41]);
protocolo.setTipo_devolucao(valores[42]);
protocolo.setAutorizacao_coleta(valores[43]);
protocolo.setCd(valores[44]);
protocolo.setDta_autorizacao(valores[45]);
return protocolo;
}
boa noite
mesmo assim não faz a importação. ele para na primeira verificação.
“excluir protoclos
jun 01, 2018 10:50:01 PM org.hibernate.ejb.internal.EntityManagerFactoryRegistry addEntityManagerFactory
WARN: HHH000436: Entity manager factory name (crudHibernatePU) is already registered. If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name’
Hibernate: TRUNCATE protocolo
iniciar
não tem a primeira linha no arquivo”
até arrumei o arquivo para conter a primeira linha, e mesmo assim não importou.
alguma ideia?
obrigado
boa noite
conf.txt (4,1 KB)
tetei aplicar em outro arquivo e aparece o seguinte erro…
Veja a query, está tentando inserir a palavra reservada set
.
bom dia
consegui fazer o importe…
o minha dificuldade agora é fazer que a cada atualização no banco o campo txt traga a informação nova.
estou usando um tread para atualizar as informações, mas o campo txt não muda a informação, e também não da nenhum erro. mesmo eu zerando o campo txt e fazendo o for() novamente.
por mais que as informações mudem ele sempre trás a informação que ele buscou ao iniciar o frame.
o for() não consegue trazer a informação nova… trás sempre a informação que já buscou ao inicializar.
como faço para ele zerar a memoria e conseguir sobrepor as informações?
segue codigo do for()
public void teste(){
List pln = AtzJpaDAO.getInstance().findAll();
int codigo = 0;
String nome = "0";
int h1 = 0;
int h2 = 0;
int h3 = 0;
for (int b = 0; b < pln.size(); b++) {
String codigoTemp = "0";
codigoTemp = pln.get(b).getCodigo().replace(" ", "");
codigo = Integer.parseInt(codigoTemp);
//System.out.println("Mtricula " + codigo);
if(Integer.toString(codigo).equals(codigoTxt.getText())){
//System.out.println(" inicio");
String nomeTemp = "0";
nomeTemp = pln.get(b).getNome().replace(" ", "");
nome = (nomeTemp);
nomeTxt.setText(nome);
//System.out.println("Nome " + nome);
if( pln.get(b).getH1().length() > 0){
String tempH1 = "0";
tempH1 = pln.get(b).getH1().replace(" ", "");
tempH1 = tempH1.replace(".", "");
if(tempH1.trim().length() > 0){
h1 = Integer.parseInt(tempH1);
priTxt.setText(Integer.toString(h1));
//System.out.println("h1 " + h1);
}
}
if(pln.get(b).getH2().length() > 0){
String tempH2 = "0";
tempH2 = pln.get(b).getH2().replace(" ", "");
tempH2 = tempH2.replace(".", "");
if(tempH2.trim().length() > 0){
h2 = Integer.parseInt(tempH2);
segTxt.setText(Integer.toString(h2));
//System.out.println("h2 " + h2);
}
}
if(pln.get(b).getH3().length() > 0){
String tempH3 = "0";
tempH3 = pln.get(b).getH3().replace(" ", "");
tempH3 = tempH3.replace(".", "");
if(tempH3.trim().length() >0){
h3 = Integer.parseInt(tempH3);
terTxt.setText(Integer.toString(h3));
//System.out.println("h3 " + h3);
}
}
}
}
}