Jump to content

Search the Community

Showing results for tags 'excel'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 186 results

  1. Ola pessoal boa tarde, sou novo ainda no VBA. Bom, eu queria um código para que quando aparecer o valor aleatório na célula x, ele gere valores impares até o valor daquela célula X. Por exemplo. Valor da célula X= 304 (valor aleatório) Gerar uma coluna inteira, do A1=5 ATE A289= 300. com os valores espaçados a cada 8 linhas entre eles. Ou seja: A1= 5 pula 8 linhas A9=10 e etc... Comecei com algo, porem quando eu digito valores aleatórios pares ele gera valores até o final da coluna. Vou agradeçer muito se der para ajudarem. Private Sub BtExecuta_Click() Dim w As Worksheet Dim ln As Long Dim col As Integer Dim varray() As Long Set w = Plan6 ln = 5 col = 1 Do Until ln = Plan6.Cells(1, 3).Value w.Cells(ln, col).Value = ln ln = ln + 5 Loop End Sub
  2. Boas Estou com algumas dificuldades em fazer um código para ver se a célula contem ou não uma string alguém me poderia ajudar. Obrigado, Afonso Mira
  3. Boa tarde tenho o seguinte esquema: Folha Excel com Dados ----- Excel com Macro ----- Folha Excel recebe Dados Precisava de passar os dados da 1º folha para a 2º quando abro o Excel que contêm a macro. Alguém me poderia dar uma ideia do código que vou precisar? Obrigado!😄 Abraços, Afonso Mira.
  4. Olá, Criei um formulário para fazer um cadastro de clientes, porém quando carrego a imagem, ela vem na horizontal dentro do formulário, preciso virar a imagem 90, pois imprimo o formulário antes de salvá-lo na base de dados no excel. Gostaria de criar um botão que fizesse isso. Alguém poderia me ajudar.
  5. Boa tarde, Quero usar vários critérios numa formula, mas a formula não está a funcionar. Já tentei com & com , com mais ( ou menos ) e não funciona. Al´guém pode ajudar? a ideia é a formula calcular o aeging de uma coluna de datas mas em vez de aplicar uma formula de cada vez, quero ter tudo numa só. criteriaFormula, isoladas: 0-30 DaysIF(AND($D$1-D3<30),"0-30 Days" 31-60 DaysIF(AND($D$1-D3>31),AND($D$1-D3<60),"31-60 Days") 61-90 DaysIF(AND($D$1-D3>61),AND($D$1-D3<90),"61-90 Days") +90 DaysIF(AND($D$1-D3>90),"+ 90 Days" Juntas: =IF(AND($D$1-D3<30),"0-30 Days",IF(AND($D$1-D3>31),AND($D$1-D3<60),"31-60 Days"),IF(AND($D$1-D3>61),AND($D$1-D3<90),"61-90 Days"),IF(AND($D$1-D3>90),"+ 90 Days" Será que me podem ajudar a perceber o erro? Obrigada
  6. Boa tarde a todos, Estou com um pequeno problema, queria usar em Excel VBA uma inputbox para guardar um valor númerico (euros) para poder fazer umas contas com esse valor, guardá-lo numa variável e depois retornar o valor dessa variável para uma célula na folha de excel. A primeira dificuldade que encontrei foi, uma que vez dá erro se inserir um valor em euros com um ponto em vez de virgula, pedi ajuda e esta função transforma o ponto em virgula para facilitar, no entanto o valor ao ser devolvido para a folha de excel é devolvido como texto, como posso fazer para o devolver como número mantendo o valor, para que possa fazer somas uma vez que o valor seja retornado a folha de excel? Exemplo: Declaração das variáveis: Dim ValorND As String Dim ValorQuota As String Dim Resultado As String Na inputbox digito o valor: 55.70 ValorND = InputBox("Valor da Nota de Débito") Para evitar de por uma virgula, o mais comum é usarmos o teclado numérico com um ponto a fazer a separação das casas decimais, mas o excel VBA não o aceita e dá erro, devido a isso usei esta formula: If InStr(1, ValorND, ".") > 0 Then ValorND = Replace(ValorND, ".", ",") ValorND = FormatNumber(ValorND, 2) Mas após isso não estou a conseguir devolver o valor em número, que vem convertido como texto da formula que acabei de citar. Range("O5").Value = ValorND Agradecia ajuda, obrigado.
  7. Boa Tarde, Alguém pode-me ajudar e indicar como é que no excel, numa célula posso através de uma fórmula tirar a hora que está junto à data? Ex: 09/29/11 11:13:41 Quero tirar a data: 11:13:41, sei que há uma fórmula para tal mas não estou a conseguir lá chegar. Obrigada a quem me possa ajudar.
  8. Boa noite Utilizo uma excel que funciona corretamente. Mas agora quero fazer a mesma coisa que faço no Excel mas numa aplicação Android (memento database) que tem um campo que permite introduzir código Javascript. Já tentei, mas não estou a conseguir por causa das funções ^2 e EXP() que não são iguais em JS. A 1ª formula em Excel: =SE($G$6>0;0,8+0,1894393 * EXP(-0,012778*G6*1440)+0,2989558* EXP(-0,1932605*G6*1440);0) A 2ª formula em Excel: =SE(E($E$6>0;$G$6>0);(1/(29,54 + 5,000663 * ($I$6*0,88) - 0,007546 * ($I$6*0,88)^2)*1609,344/1440);"-") sendo que em JS a célula G6 = "TEMPO" E6 = "DISTANCIA" (não irei utilizar em JS) I6 = "VDOT" Tentei as seguintes opções: Para 1ª formula ficaria assim em JS: 0,8+0,1894393 * Math.exp(-0,012778*TEMPO*1440)+0,2989558* Math.exp(-0,1932605*TEMPO*1440) (mas o resultado devolvido não está certo...) Para a 2ª formula em JS: (1/Math.pow(29,54 + 5,000663 * (VDOT*0,88) - 0,007546 * (VDOT*0,88),2)*1609,344/1440) (aqui o resultado também não é o correto. Alguém me pode dar uma ajuda?
  9. Boa noite. Tenho um ficheiro que criei no excel 2010 e que gera um pdf a partir do nome original do ficheiro, adicionando a data obtida a partir da céluda A2, como prefixo. Este ficheiro sempre correu bem até actualizar o pc para o excel2016. Deixou de gerar o pdf e dá sempre erro no VBA for Applications, na função cujo código passo a apresentar: Worksheets("Envio Cliente").Activate Dim data2 As String pdfName = ActiveSheet.Name data2 = ActiveSheet.Range("A2").Value pdfName = "_Mapa de Contagem" MsgBox data2 ChDir ActiveWorkbook.Path & "\" fileSaveName = data2 & pdfname ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ fileSaveName _ , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ :=False, OpenAfterPublish:=False Aque MsgBox serviu para perceber qual seria o valor que estaria a ser lido na célula A2 e é sempre dd/mm/yyyy o que faz com que não possa ser usado para nome de ficheiro. Já tentei formatar a data no excel de todas as formas, desde pontos a hifenes. Retorna sempre aquele valor com as barras. Já andei a tentar ver se há algum workaround, mas não consegui nada. Se alguém tiver alguma sugestão, agradeço.
  10. Tenho o código abaixo que acessa a página da InfoMoney e seleciona a opção Todos do botão para retornar todos os resultados. O problema é que só seleciona, mas não clica para retornar todas as cotações. Sub GetHtmlDocument() Dim IE As New SHDocVw.InternetExplorer Dim HTMLDoc As MSHTML.HTMLDocument Dim HTMLOptions As MSHTML.IHTMLElementCollection Dim HTMLOption As MSHTML.IHTMLElement IE.Visible = True IE.navigate "https://www.infomoney.com.br/ibovespa" Do While IE.ReadyState <> READYSTATE_COMPLETE Loop Set HTMLDoc = IE.Document Set HTMLOptions = HTMLDoc.getElementsByTagName("option") 'É um botão For Each HTMLOption In HTMLOptions If HTMLOption.innerText = "Todos" Then HTMLOption.Selected = True Exit Sub End If Next HTMLOption End Sub
  11. Boa noite, Estou usando parte do codigo abaixo para enviar e-mails de forma automatica pelo excel, mas quero que o inicial do range que no memento é A6 seja mutavel de acordo com o valor especifico de uma celula, Set IntervaloMailing = WrkS.Range("A6:A7") Por exemplo: Se a celula que eu vou usar como referencia estiver com o valor A5 Esta parte codigo ficaria: Set IntervaloMailing = WrkS.Range("A5:A7") ou seja o primeiro valor do range precisa mudar de acordo com o valor que for digitavel na minha celular de referencia que neste caso poderia ser a primeira celula da planilha Segue o codigo que eu estou usando Public WrkB As Workbook 'Cria variavel da Pasta de Trabalho Public WrkS As Worksheet 'Cria variavel da Planilha Public IntervaloMailing As Range 'Cria Variavel com o Intervalo do Mailing Public Celula As Range 'Cria Variavel com o registro do Mailing Public AppOutk As Outlook.Application 'Cria Variavel com a Aplicacao do Outlook Public MailOutk As Outlook.MailItem 'Cria Variavel com o objeto "Email" do Outlook Public Sub MandarEmail() Set WrkB = ThisWorkbook 'Define a pasta de Trabalho Set WrkS = WrkB.Sheets("Mailing") 'Define a Planilha com os dados Set IntervaloMailing = WrkS.Range("A7:A7") 'Define qual o intervalo do Mailing <<<< esta parte que preciso que seja variavel With WrkS .Select For Each Celula In IntervaloMailing Call CriaEmail 'Chama a Rotina para Criar o Email Next End With End Sub Atenciosamente Nate
  12. Miguel Nicolau

    Gestão de manutenção

    bom dia. Necessitava de uma pequena ajuda, se possível claro. Sou técnico de Automação e manutenção industrial, gostaria de saber existe alguma folha de calculo para realizar a gestão de manutenção em equipamentos. Neste momento tenho um documento em Word, onde realizo o registo das Ordem de Serviço (maquina, código, tipo de anomalia, intervenção realizada, material usado, tempo disponibilizado na resolução avaria..), e posteriormente numa folha de calculo em excel faço o registo e atualizo o stok das peças usadas (código, designação peça, nome maquina, quantidade, valor, localização na prateleira,...). Pretendia uma folha de calculo que pode-se juntar o que realizo já no word e excel. Basicamente um 2 em 1. Pretendia algo em que: Quando realizo o registo da manutenção na OS, esta introduzi-se automaticamente o produto (através de código ou designação) e atualiza-se o stok na folha de existências de peças; E se possível apresentar o valor total de peças usadas em máquina; Obrigado pela sua atenção Atenciosamente Miguel Nicolau
  13. Olá, Sou ainda novo por aqui, mas já me ajudaram imenso. Sou um autodidata em informática, atualmente em VBA - Excel, pois estou a construir um documento automatizado que me ajudará muito no meu trabalho. Tenho um livro, com várias folhas. Através a macro abaixo, já consegui inserir uma imagem, na folha em uso e com as dimensões que pretendo. No entanto eu precisava que ao inserir esta imagem aqui, ela aparecesse noutras folhas, em células e dimensões diferentes. (em mais duas folhas diferentes e com diferentes dimensões). Será que há alguma forma de alterar o código, para que esse processo seja automático, ou terei de o repetir em cada uma das folhas? Obrigadão! Código: Sub Iserir_Logo_Departamento() Dim Pict Dim ImgFileFormat As String Dim Celula As String Celula = "logodepartamento" ' célula onde será inserido a imagem ImgFileFormat = "Image Files JPG (*.jpg),*.jpg, Image Files PNG (*.png),*.jpg, Image Files GIF (*.gif),*.gif, Image Files BMP (*.bmp),*.bmp" Pict = Application.GetOpenFilename(ImgFileFormat) If Pict = False Then End ActiveSheet.Shapes.AddPicture Pict, False, True, Range(Celula).Left, _ Range(Celula).Top, Range(Celula).Width * 3, Range(Celula).Height * 5 'largura da imagem = 3 colunas e altura= 5 linhas End Sub
  14. Oi pessoal estou com um problema que não consigo resolver pois os meus conhecimentos de vba ainda são muitos poucos tenho este código que me executa uma macro sempre que uma célula altera mas o problema aqui é que eu tenho de digitar o 1 na célula caso contrário não executa a macro. Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Range("A1")) Is Nothing Then Select Case Target Case 1 Call macro1 Case Else End Select End If Application.EnableEvents = True End Sub Sub macro1() MsgBox "macro1" End Sub O que eu queria fazer era o seguinte sempre que aparecesse 1 na célula A1 a macro executasse e não fosse preciso digitar esse 1.
  15. Boas, este é o meu primeiro tópico neste fórum. Então é o seguinte, numa fase final do processo do correr do meu programa, tenho uma datagridview com dados e quando carrego no botão , passa os dados da DGV para o excel. O código que uso é este: If DataGridView1.Rows.Count > 0 Then Dim wapp As Microsoft.Office.Interop.Excel.Application Dim wsheet As Microsoft.Office.Interop.Excel.Worksheet Dim wbook As Microsoft.Office.Interop.Excel.Workbook wapp = New Microsoft.Office.Interop.Excel.Application wapp.Visible = True wbook = wapp.Workbooks.Add() wsheet = wbook.ActiveSheet Dim iX As Integer Dim iY As Integer Dim iC As Integer For iC = 0 To DataGridView1.Columns.Count - 1 wsheet.Cells(1, iC + 1).Value = DataGridView1.Columns(iC).HeaderText wsheet.Cells(1, iC + 1).Font.Bold = True Next For iX = 0 To DataGridView1.Rows.Count - 1 For iY = 0 To DataGridView1.Columns.Count - 1 wsheet.Cells(iX + 2, iY + 1).value = DataGridView1(iY, iX).Value Next Next wsheet.Columns.AutoFit() End If Onde o erro aparece é nesta parte do código: (...) For iX = 0 To DataGridView1.Rows.Count - 1 For iY = 0 To DataGridView1.Columns.Count - 1 wsheet.Cells(iX + 2, iY + 1).value = DataGridView1(iY, iX).Value <-- É nesta linha que dá erro. Next Next (...) Mensagem do erro. ---------------------- Aproveito este tópico para perguntar se alguém sabe como faço com que dados apareçam por baixo e não ao lado como aparece nesta imagem? O código usado para guardar o dado no ficheiro texto é este: (...) If CB_tercaadicionar.Checked Then My.Computer.FileSystem.WriteAllText("D:\Terca_Feira.txt", TB_Adicionarhora.Text, True) My.Computer.FileSystem.WriteAllText("D:\numhora_Terca_Feira.txt", TB_numhora.Text, True) End If (...) Obrigado!
  16. PsySc0rpi0n

    Lei Quadrática do Excel em C

    Boas pessoal. Por curiosidade apenas, alguém sabe como implementar o método que o Excel usa para calcular a equação de uma Linha de Tendência de uma curva pela Lei Quadrática? Muito por alto o que o Excel faz é uso das seguintes funções: 2nd Order Polynomial Trendline Equation: y = (c2 * x^2) + (c1 * x ^1) + b c2: =INDEX(LINEST(y,x^{1,2}),1) C1: =INDEX(LINEST(y,x^{1,2}),1,2) b: =INDEX(LINEST(y,x^{1,2}),1,3) Lendo a descrição das funções INDEX e LINEST, respectivamente, dizem: INDEX - returns the value of an element in a table or an array, selected by the row and column number indexes LINEST - returns statistics that describe a linear trend matching known data points, by fitting a straight line using the least squares method.
  17. dementor4842

    excel Mostrar texto por dia do Mes

    Boa Noite. Estou com uma duvida no excel para a qual necessito de ajuda. Estou a criar um documento para o trabalho, o qual e impresso todos os dias pelos colaboradores. Cada dia quero dar um "Target" diferente. Ou seja basicamente tenho a "folha 1" que é a capa da folha que é impressa em que todas as manhas o colaborador abre e por cada dia do mês tem um objectivo diferente, Esses objetivos ficariam numa "folha 2" a qual o colaborador não tem acesso pois os objetivos são definidos por mim para um mês. Basta fazer 31 dias, ou seja todos os dias 1 de cada mês é sempre o mesmo objetivo. Obrigado amigos
  18. Autista23

    Excel espaços entre valores

    Boas venho pedir ajuda para me ajudarem a resolver este problema bastante simples (apesar de para mim não ser simples porque começei a aprender excel a sério hoje) Estou a fazer uma gestão de stocks e já tenho o que quero só não sei por os espaços entre os valores eis o problema: https://imgur.com/a/HI22z Obrigado pela atenção e ajuda !
  19. Ola boa noite. Eu sou novo no VBA mas acho muito interessante e tenho feito algumas coisas, com base em informações que vou recolhendo aqui e ali, apenas em termos ludicos e para aprendizagem.. No caso presente, eu gostaria de copiar através de programação ou macros, dados de varias células, desde que estas contivessem valores, para determinadas posições dentro dessa mesma folha, sem ter que recorrer ao copy paste, portanto de uma forma automática.. Concretizando, suponhamos que tenho um "quadrado" de 9 células horizontais por 9 células verticais (portanto 81 células). Ao preencher uma determinada célula dentro desse "quadrado", com números de 1 a 9, obrigatoriamente ela iria copiar em outro "quadrado", esse mesmo valor, mas na posição correspondente. Suponhamos o jogo do sudoku. Ao preencher o valor 3 por exemplo na célula c21 ela replicaria esse valor automaticamente no outro quadrado, ou seja na posição c6,, ou por exemplo o valor no k21 copiaria para k6 e assim por diante, mas só copiaria, se no quadrado composto pelas células c21 ate k29 contivessem valor. O "quadrado" origem seria composto pelas células c21 ate k29 e o "quadrado" destino seria c6 a k14, em que c21 corresponderia a d6;,d21.a d6; e21 a e6 ate k21 a k6, depois novamente c22 a c7, etc ate ao final k29 a k14. Será que é possível, alguém pode me dar uma ajuda, é que eu tenho visto algumas formas de copiar, mas nao consigo por a funcionar correctamente. Muito obrigado Se calhar não fui muito explicito na minha exposição. Claro que eu posso fazer uma macro em que copio todo o tal "quadrado" e "colo" sobre o outro quadrado. Mas isso é muito simples. E o meu objectivo não é esse. O meu objectivo é ao preencher determinada célula, dentro do 1.º "quadrado", automaticamente ser replicado o valor preenchido na célula correspondente dentro do outro quadrado, sendo que esta ultima célula encontrar-se-ia numa posição simétrica. O exemplo que dei do jogo do Sudoku é perfeitamente elucidativo. Suponhamos que temos dois quadrados, compostos por 81 quadriculas do jogo do Sudoku. Ao preencher uma quadricula especifica no 1 quadrado, automaticamente seria preenchida a quadricula correspondente no outro quadrado, esta quadricula correspondente teria a ver com a posição da linha e da coluna.,
  20. Bom dia. Estou a criar uma macro em excel que me permite abrir e editar um documento word: " Private Sub CommandButton11_Click() Dim appWORD As WORD.Application Dim DOC As WORD.Document Set appWORD = New WORD.Application appWORD.Visible = True Set DOC = appWORD.Documents.Open("C:\Users\miguel.martins\Desktop\PJM\PJM\Novos Modelos\Meus\Correspondência\Geral - Modelos\010 Ofício - Modelo1.doc") appWORD.ActivateIf Dir("C:\Users\miguel.martins\Desktop\PJM\PJM\Novos Modelos\Meus\Correspondência\Geral - Modelos\010 Ofício - Modelo1 - Cópia.doc") <> "" Then Kill "C:\Users\miguel.martins\Desktop\PJM\PJM\Novos Modelos\Meus\Correspondência\Geral - Modelos\010 Ofício - Modelo1 - Cópia.doc" End If DOC.SaveAs ("C:\Users\miguel.martins\Desktop\PJM\PJM\Novos Modelos\Meus\Correspondência\Geral - Modelos\010 Ofício - Modelo1 - Cópia.doc") " O problema é que se eu clicar no botão da macro uma segunda vez sem fechar o documento aberto, o Word pergunta-me se pretendo abrir uma cópia de leitura, uma vez que o documento original já se encontra aberto. Se eu não selecionar nenhuma opção e fechar essa janela no "x", o meu programa dá erro. Que comando posso inserir para permitir (ou impedir) execuções consecutivas da mesma macro, para que este conflito não ocorra? Antes de mais, muito obrigado! Cumprimentos.
  21. powerisevil

    Programa Impressão Etiquetas

    Viva seus engenheiros Tenho um problema em mãos, que vou tentar explicar. Preciso de imprimir regularmente uma série de etiquetas. Estas são impressas usando um modelo, ficheiro Word, que já vem configurado com uma tabela de dimensões equivalentes às etiquetas na folha. Tenho uma base de dados, ficheiro csv, com o tipo de serviços que vão ser impressos nas etiquetas. Preciso de um programa que me peça um valor (referência que equivale a um serviço), e uma quantidade (número de etiquetas a imprimir, que vão ser preenchidas com os dados afectos a essa referência/serviço em cada etiqueta). Tendo eu muito boa vontade e alguns conhecimentos de C, chego lá ou esqueço e continuo a fazer tudo manualmente?
  22. mitrax

    Listbox

    Boa tarde ppl, O que aqui me trás é uma duvida basica, mas já dei voltas e voltas e não estou a conseguir resolver. Basicamente quero implemetar uma listbox que mediante a selecção do seu conteudo preencha um array com diferente conteudo. No exemplo que ponha seria suposto aparecer uma caixa de texto no entanto obtenho o erro "Run-time error '424': object required" Sub ListBox7_Change() With Listbox7 If .Selected(0) Then MsgBox ("ZeZeZeZe") End If End With End Sub
  23. MarcioSalgado

    Dados errados ao importar Excel

    Boa tarde Encontro me com um erro que é o seguinte, eu tenho um programa feito em java jsp funcional, eu consigo importar os dados para a base de dados só que os campos int retornam como floats ex eu tenho o 123456 e na base de dados chega 123456.8 ou entao eu tenho outro numero e na base de dados grava 12314124E44. Nao sei se alguém me consegue ajudar neste Problema, eu estou a usar apache Poi, biblioteca. Vou mostrar o meu código para poderem perceber melhor. <%-- Document : index Created on : Oct 9, 2017, 11:11:52 AM Author : Marcio Salgado --%> <%@page import="org.apache.poi.openxml4j.opc.OPCPackage"%> <%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page import ="java.util.Date" %> <%@ page import ="java.io.*" %> <%@ page import ="java.io.FileNotFoundException" %> <%@ page import ="java.io.IOException" %> <%@ page import ="java.util.Iterator" %> <%@ page import ="java.util.ArrayList" %> <%@ page import ="java.sql.Statement" %> <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %> <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page import="org.apache.commons.fileupload.*"%> <%@ page import="java.util.*, java.io.*" %> <%@ page import="java.util.Iterator"%> <%@ page import="java.util.List"%> <%@ page import="java.io.File"%> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFCell" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFRow" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFSheet" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFWorkbook" %> <%@ page import ="org.apache.poi.poifs.filesystem.POIFSFileSystem" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <jsp:useBean id="connection" class="DB.DB_Connection" scope="page"> <jsp:setProperty name="connection" property="*"/> </jsp:useBean> <%! Connection con; PreparedStatement ps=null; ResultSet rs=null; public static ArrayList readExcelFile(String fileName) { /** --Define a ArrayList --Holds ArrayList Of Cells */ ArrayList cellArrayLisstHolder = new ArrayList(); try{ /** Creating Input Stream**/ FileInputStream myInput = new FileInputStream(fileName); /** Create a POIFSFileSystem object**/ POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); /** Create a workbook using the File System**/ HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); /** Get the first sheet from workbook**/ HSSFSheet mySheet = myWorkBook.getSheetAt(0); /** We now need something to iterate through the cells.**/ Iterator rowIter = mySheet.rowIterator(); while(rowIter.hasNext()){ HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); ArrayList cellStoreArrayList=new ArrayList(); while(cellIter.hasNext()){ HSSFCell myCell = (HSSFCell) cellIter.next(); cellStoreArrayList.add(myCell); } cellArrayLisstHolder.add(cellStoreArrayList); } }catch (Exception e){e.printStackTrace(); } return cellArrayLisstHolder; }%> <% String ImageFile=""; String itemName = ""; boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { } else { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.getMessage(); } Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); if (item.isFormField()) { String name = item.getFieldName(); String value = item.getString(); if(name.equals("ImageFile")) { ImageFile=value; } } else { try { itemName = item.getName(); File savedFile = new File(config.getServletContext().getRealPath("/")+"Example\\image-folder\\"+itemName); item.write(savedFile); } catch (Exception e) { out.println("Error"+e.getMessage()); } } } try { //con=connection.getConn(); String query1="insert into test(image) values ('"+itemName+"')"; //ps=con.prepareStatement(query1); //ps.executeUpdate("insert into test(image) values ('"+itemName+"')"); } catch(Exception el) { out.println("Inserting error"+el.getMessage()); } } //request.setAttribute("file", request.getParameter("file")); //String fileName = itemName; String fileName = config.getServletContext().getRealPath("/")+"Example\\image-folder\\"+itemName; //String fileName="C:/teste2.xls"; //"C:/teste2.xls"; // Excel File name.xls //Read an Excel File and Store in a ArrayList ArrayList dataHolder=readExcelFile(fileName); //Print the data read //printCellDataToConsole(dataHolder); con=connection.getConn(); String query="insert into teste1 values(?,?,?,?,?,?,?,?,?)"; ps=con.prepareStatement(query); int count=0; ArrayList cellStoreArrayList=null; //For inserting into database String cmdSelect=""; for (int i=1;i < dataHolder.size(); i++) { cellStoreArrayList=(ArrayList)dataHolder.get(i); String bank = cellStoreArrayList.get(7).toString(); cmdSelect = "SELECT codigo FROM bancos WHERE n_abrev like '%"+bank+"%' "; Statement stmt = connection.getConn().createStatement(); System.out.println(cmdSelect); ResultSet rs = stmt.executeQuery(cmdSelect); String idBank = ""; while (rs.next()) { idBank = rs.getString("codigo"); } ps.setString(1,((HSSFCell)cellStoreArrayList.get(0)).toString()); ps.setString(2,((HSSFCell)cellStoreArrayList.get(1)).toString()); ps.setString(3,((HSSFCell)cellStoreArrayList.get(2)).toString()); ps.setString(4,((HSSFCell)cellStoreArrayList.get(3)).toString()); ps.setString(5,((HSSFCell)cellStoreArrayList.get(4)).toString()); ps.setString(6,((HSSFCell)cellStoreArrayList.get(5)).toString()); ps.setString(7,((HSSFCell)cellStoreArrayList.get(6)).toString()); ps.setString(8,idBank); ps.setString(9,((HSSFCell)cellStoreArrayList.get(8)).toString()); count= ps.executeUpdate(); System.out.print(((HSSFCell)cellStoreArrayList.get(8)).toString() + "t"); } //For checking data is inserted or not? if(count>0) { %> Foram inseridos na base de dados os seguintes dados. <table> <tr> <th>paciente</th> <th>nome</th> <th>motivo</th> <th>pag</th> <th>cheque</th> <th>conta</th> <th>data</th> <th>banco</th> <th>data Entrega</th> </tr> <% for (int i=1;i < dataHolder.size(); i++) { cellStoreArrayList=(ArrayList)dataHolder.get(i);%> <tr> <td><%=((HSSFCell)cellStoreArrayList.get(0)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(1)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(2)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(3)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(4)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(5)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(6)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(7)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(8)).toString() %></td> </tr> <%} } else {%> <center> Details have not been inserted!!!!!!!!!</center> <% } %> </table> </body> </html>
  24. MarcioSalgado

    Importar Excel para base de dados JSP

    Boa tarde estou a importar dados de um excel para uma base de dados SQL Server, e deparei-me com um problema que é o seguinte eu consigo importar o excel para a base de dados mas so se lhe der o caminho por exemplo "String fileName="C:/teste2.xls";". O meu problema é o seguinte quando crio um index.jsp com o enctype="multipart/form-data" quando tento receber no meu excelimport.jsp , este vem null. e usei request.getParameter("file"); como poderam ver a baixo. o meu objectivo sera ler o excel e enviar para uma pasta em especifico por exemplo C:/uploadDir/ citando que estou a usar as livrarias apache POI para importar excel e commons-fileupload. index.jsp <> <%-- Document : index.jsp Created on : Oct 16, 2017, 5:50:32 PM Author : Marcio Salgado --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>JSP</title> </head> <body> <form action="excelimport.jsp" method="post" enctype="multipart/form-data" > <center> <h1>Upload Excel</h1> <table> <tr><td>File Upload:</td><td><input type="file" name="file"></td></tr> <tr><td></td><td><input type="submit" value="Submit"/></td></tr> </table> </center> </form> </body> </html> <> excelimport,jsp <%-- Document : index Created on : Oct 9, 2017, 11:11:52 AM Author : Marcio Salgado --%> <%@page import="java.util.List"%> <%@page import="org.apache.commons.fileupload.FileItem"%> <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@page import="org.apache.commons.fileupload.FileItemFactory"%> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@ page language="java" import="java.sql.*" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page import ="java.util.Date" %> <%@ page import ="java.io.*" %> <%@ page import ="java.io.FileNotFoundException" %> <%@ page import ="java.io.IOException" %> <%@ page import ="java.util.Iterator" %> <%@ page import ="java.util.ArrayList" %> <%@ page import ="java.sql.Statement" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFCell" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFRow" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFSheet" %> <%@ page import ="org.apache.poi.hssf.usermodel.HSSFWorkbook" %> <%@ page import ="org.apache.poi.poifs.filesystem.POIFSFileSystem" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <jsp:useBean id="connection" class="DB.DB_Connection" scope="page"> <jsp:setProperty name="connection" property="*"/> </jsp:useBean> <%! Connection con; PreparedStatement ps=null; ResultSet rs=null; public static ArrayList readExcelFile(String fileName) { /** --Define a ArrayList --Holds ArrayList Of Cells */ ArrayList cellArrayLisstHolder = new ArrayList(); try{ /** Creating Input Stream**/ FileInputStream myInput = new FileInputStream(fileName); /** Create a POIFSFileSystem object**/ POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); /** Create a workbook using the File System**/ HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); /** Get the first sheet from workbook**/ HSSFSheet mySheet = myWorkBook.getSheetAt(0); /** We now need something to iterate through the cells.**/ Iterator rowIter = mySheet.rowIterator(); while(rowIter.hasNext()){ HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); ArrayList cellStoreArrayList=new ArrayList(); while(cellIter.hasNext()){ HSSFCell myCell = (HSSFCell) cellIter.next(); cellStoreArrayList.add(myCell); } cellArrayLisstHolder.add(cellStoreArrayList); } }catch (Exception e){e.printStackTrace(); } return cellArrayLisstHolder; }%> <% //request.setAttribute("file", request.getParameter("file")); //String fileName = saveFile; String fileName = request.getParameter("file"); //String fileName="C:/teste2.xls"; //"C:/teste2.xls"; // Excel File name.xls //Read an Excel File and Store in a ArrayList ArrayList dataHolder=readExcelFile(fileName); //Print the data read //printCellDataToConsole(dataHolder); con=connection.getConn(); String query="insert into teste1 values(?,?,?,?,?,?,?,?,?)"; ps=con.prepareStatement(query); int count=0; ArrayList cellStoreArrayList=null; //For inserting into database String cmdSelect=""; for (int i=1;i < dataHolder.size(); i++) { cellStoreArrayList=(ArrayList)dataHolder.get(i); String bank = cellStoreArrayList.get(7).toString(); cmdSelect = "SELECT codigo FROM bancos WHERE n_abrev like '%"+bank+"%' "; Statement stmt = connection.getConn().createStatement(); System.out.println(cmdSelect); ResultSet rs = stmt.executeQuery(cmdSelect); String idBank = ""; while (rs.next()) { idBank = rs.getString("codigo"); } ps.setString(1,((HSSFCell)cellStoreArrayList.get(0)).toString()); ps.setString(2,((HSSFCell)cellStoreArrayList.get(1)).toString()); ps.setString(3,((HSSFCell)cellStoreArrayList.get(2)).toString()); ps.setString(4,((HSSFCell)cellStoreArrayList.get(3)).toString()); ps.setString(5,((HSSFCell)cellStoreArrayList.get(4)).toString()); ps.setString(6,((HSSFCell)cellStoreArrayList.get(5)).toString()); ps.setString(7,((HSSFCell)cellStoreArrayList.get(6)).toString()); ps.setString(8,idBank); ps.setString(9,((HSSFCell)cellStoreArrayList.get(8)).toString()); count= ps.executeUpdate(); System.out.print(((HSSFCell)cellStoreArrayList.get(8)).toString() + "t"); } //For checking data is inserted or not? if(count>0) { %> Foram inseridos na base de dados os seguintes dados. <table> <tr> <th>paciente</th> <th>nome</th> <th>motivo</th> <th>pag</th> <th>cheque</th> <th>conta</th> <th>data</th> <th>banco</th> <th>data Entrega</th> </tr> <% for (int i=1;i < dataHolder.size(); i++) { cellStoreArrayList=(ArrayList)dataHolder.get(i);%> <tr> <td><%=((HSSFCell)cellStoreArrayList.get(0)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(1)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(2)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(3)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(4)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(5)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(6)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(7)).toString() %></td> <td><%=((HSSFCell)cellStoreArrayList.get(8)).toString() %></td> </tr> <%} } else {%> <center> Details have not been inserted!!!!!!!!!</center> <% } %> </table> </body> </html>
  25. Boa Tarde. Há alguém que tenha uma tabela excel, parecida com a que eu necessito (em anexo) e que dê para enviar um email direto ao Encarregado de Educação com a informação apenas do aluno que pretendo? https://fs03u.sendspace.com/upload?SPEED_LIMIT=0&MAX_FILE_SIZE=314572800&UPLOAD_IDENTIFIER=1400214209.1507563917.545B260D.18.0&DESTINATION_DIR=4 Obrigado
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.