Você está aqui: Java ::: Java + Excel ::: Apache POI - the Java API for Microsoft Documents |
Como criar um novo Workbook, uma nova planilha no Excel e inserir linhas e células usando o Apache POIQuantidade de visualizações: 2616 vezes |
Nesta dica mostrarei como usar o Apache POI a partir de uma aplicação Java console para criar um arquivo do Excel contendo um Workbook, uma planilha e algumas linhas e colunas. Se você ainda não conhece o Apache POI - the Java API for Microsoft Documents, a URL da biblioteca é https://poi.apache.org. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Estudos{ public static void main(String[] args) { // vamos criar um novo Workbook XSSFWorkbook workbook = new XSSFWorkbook(); // agora criamos uma nova planilha no workbook recém-criado XSSFSheet planilha = workbook.createSheet("Notas"); // vamos criar um ArrayList com as informações a serem // inseridas na planilha String titulos[] = {"DISCIPLINA", "N1", "N2", "MÉDIA"}; ArrayList<Nota> dados = new ArrayList<>(); dados.add(new Nota("Algorítmos I", 9.2, 7.3)); dados.add(new Nota("Lógica Matemática", 8.0, 7.8)); dados.add(new Nota("Ética", 10.00, 8.7)); dados.add(new Nota("Matemática", 7.9, 9.6)); dados.add(new Nota("Português", 2.4, 3.1)); int numLinha = 0; // representa o número da linha da planilha // primeiro criamos a linha com os títulos Row linha = planilha.createRow(numLinha); for(int i = 0; i < titulos.length; i++){ // cria uma nova célula Cell celula = linha.createCell(i); celula.setCellValue((String)titulos[i]); } // incrementamos a linha numLinha++; // agora percorremos o ArrayList for(int i = 0; i < dados.size(); i++){ // criamos uma nova linha linha = planilha.createRow(numLinha); // percorremos as informações individuais para criar // as células Nota nota = dados.get(i); // criamos a célula com o nome da disciplina Cell celula = linha.createCell(0); celula.setCellValue((String)nota.disciplina); // e agora a célula com a nota n1 celula = linha.createCell(1); celula.setCellValue((double)nota.n1); // e agora a célula com a nota n2 celula = linha.createCell(2); celula.setCellValue((double)nota.n2); // e agora a célula com a média celula = linha.createCell(3); celula.setCellValue((double)((nota.n1 + nota.n2) / 2)); // incrementamos a linha numLinha++; } // agora vamos "tentar" salvar o workbook e a nossa planilha do Excel try{ FileOutputStream out = new FileOutputStream(new File("C:\\estudos_java\\teste.xlsx")); workbook.write(out); out.close(); System.out.println("Arquivo do Excel salvo com sucesso."); } catch (Exception e){ System.out.println("Ops: " + e.getMessage()); } } // classe interna auxiliar static class Nota{ String disciplina; double n1; double n2; double media; Nota(String disciplina, double n1, double n2){ this.disciplina = disciplina; this.n1 = n1; this.n2 = n2; } } } Ao executar este código, verifique se a mensagem abaixo será exibida: Arquivo do Excel salvo com sucesso. Viu a mensagem? Então esse é um bom sinal. Vá até o diretório no qual você pediu para salvar o arquivo do Excel e abra-o. Você deverá ter um resultado parecido com o mostrado na imagem a seguir: Este código foi testado com a versão 5.1.0 do Apache POI, Java 1.8.0_311 e Excel para Microsoft 365 (Office 365). |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como definir a cor de fundo para um JTextAreaQuantidade de visualizações: 8822 vezes |
Nesta dica mostrarei como podemos aplicar uma cor de fundo a um controle área de texto, ou seja, um JTextArea do Java Swing. Para isso nós só precisamos fazer uma chamada ao seu método setBackground() e passar a cor desejada. Veja um exemplo de como isso pode ser feito: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- textArea = new JTextArea(10, 20); // Define a cor de fundo textArea.setBackground(Color.YELLOW); Note que aqui nós temos uma variável chamada textArea, do tipo JTextArea. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritméticaQuantidade de visualizações: 1542 vezes |
Exercício Resolvido de Java - Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética Pergunta/Tarefa: Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética, informando se sim ou se não. Caso forme, imprima o termo inicial e a razão. Resposta/Solução: Para a entrada do usuário, nós vamos usar um objeto da classe Scanner. Veja a resolução comentada: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // vamos usar a classe Scanner para leitura Scanner entrada = new Scanner(System.in); // declara e constrói um vetor de 10 inteiros int valores[] = new int[10]; // vamos ler os valores dos elementos do vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor: "); valores[i] = Integer.parseInt(entrada.nextLine()); } // já temos o vetor. Agora vamos verificar se temos // uma progressão geométrica boolean progressao = true; // vamos obter a razão int razao = valores[1] / (valores[0]); // vamos varrer os elementos do vetor e verificar se todos // possuem a mesma razão for(int i = 1; i < valores.length; i++){ if((valores[i] / (valores[i - 1])) != razao){ progressao = false; break; } } if(progressao){ System.out.println("Formam uma progressão geométrica."); System.out.println("A razão é: " + razao); System.out.println("O primeiro termo é: " + valores[0]); } else{ System.out.println("Não formam uma progressão geométrica."); } } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor: 1 Informe o valor: 2 Informe o valor: 4 Informe o valor: 8 Informe o valor: 16 Informe o valor: 32 Informe o valor: 64 Informe o valor: 128 Informe o valor: 256 Informe o valor: 512 Formam uma progressão geométrica. A razão é: 2 O primeiro termo é: 1 |
Java ::: Classes e Componentes ::: JTable |
Java Swing - Como excluir linhas de uma JTable em tempo de execução usando o método removeRow() da classe DefaultTableModelQuantidade de visualizações: 15696 vezes |
Nesta dica mostrarei como é possível excluir uma determinada linha de uma JTable usando o método removeRow() da classe DefaultTableModel. Veja que mostro também como inserir novas linhas na JTable usando o método insertRow(). Veja o resultado obtido na imagem abaixo: E agora o código Java Swing completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.table.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma tabela simples"); final DefaultTableModel modelo = new DefaultTableModel(); // constrói a tabela JTable tabela = new JTable(modelo); // Cria duas colunas modelo.addColumn("Nome"); modelo.addColumn("Idade"); JButton btn = new JButton("Inserir Linhas"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String nome = JOptionPane.showInputDialog(null, "Informe o nome:"); String idade = JOptionPane.showInputDialog(null, "Informe a idade:"); int pos = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a posição da nova linha:")); // testa se a posição é válida if(pos > (modelo.getRowCount() - 1)) pos = 0; // Insere uma linha na posição especificada modelo.insertRow(pos, new Object[]{nome, idade}); } } ); JButton btn2 = new JButton("Excluir Linhas"); btn2.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ int pos = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a posição da linha a ser excluída:")); // testa se a posição é válida if(pos < modelo.getRowCount()) // Exclui a linha na posição especificada modelo.removeRow(pos); } } ); tabela.setPreferredScrollableViewportSize(new Dimension(350, 50)); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); c.add(btn); c.add(btn2); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Vamos testar seus conhecimentos em |
Dimensionamento de lajes maciças à flexão As lajes maciças são armadas em cruz, quando apresentam a relação entre o maior e o menor vão inferior a 2. Nessas situações, a laje pode ser dimensionada a partir de valores preestabelecidos em tabelas como a de Marcus. Considere a laje maciça armada em cruz apresentada na figura a seguir: Dados: Peso específico do concreto = 25kN/m3 Carga do contrapiso + revestimento = 2,00kN/m2 Carga acidental = 2,50kN/m2 Altura da laje (h) = 10cm Altura útil (d) = 6cm Cobrimento nominal = 2,5cm fcd = fck / 1,4 (considerar concreto de 20MPa) fyd = fyk / 1,15 (considerar aço CA-50) Assinale a alternativa correta: A) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 11cm na laje em questão. B) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 12cm na laje. C) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 13cm na laje. D) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 14cm na laje. E) A altura de 10cm não é suficiente para resistir ao momento máximo atuante, devendo ser empregada, pelo menos, uma altura de 15cm na laje. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Responsabilidade civil no código de defesa do consumidor O fornecedor e o prestador de serviço estarão livres do dever de indenizar caso não haja dano reparável e ficar comprovado que: A) a culpa foi exclusiva do consumidor ou de terceiro. B) a culpa foi do fornecedor. C) ninguém teve culpa. D) todos tiveram culpa. E) não importa quem teve culpa. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Instalações prediais de águas pluviais Normalmente, o projeto de calha é feito em duas etapas: primeiramente, estima-se o escoamento superficial a partir do método racional e, em sequência, consulta-se uma calha com capacidade hidráulica satisfatória. Em alguns casos, o projetista deve estar apto a calcular a seção necessária, fazendo, assim, a aplicação dos conhecimentos obtidos. Uma calha em aço galvanizado com coeficiente de rugosidade n = 0,011 deverá ser instalada com declividade 0,5%. Sabendo que a seção adotada é retangular com base de 10cm e altura de 20cm, qual a capacidade hidráulica dessa calha em L/s? A) 132,45L/s. B) 165,25L/s. C) 150,40L/s. D) 180,61L/s. E) 194,27L/s. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?valores = [4, 1, 8, 3, 7, 9] for i in range(0, len(valores)): if i % 2 == 0: print("{0} ".format(valores[i]), end="") A) Erro NameError: name 'end' is not defined na linha 4 B) 4 1 8 C) Erro SyntaxError: invalid syntax na linha 3 D) 1 3 9 E) 4 8 7 Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Formas: Confecção e colocação O concreto deve estar curado e liberado para a remoção das formas segundo recomendações técnicas. Quando não se utiliza concreto especial ou aditivo acelerador de pega, para vigas de pequeno vão, qual é o prazo mínimo para a retirada das formas inferiores, com a manutenção das principais escoras? A) Cinco dias. B) Sete dias. C) Dez dias. D) Quatorze dias. E) Vinte e um dias. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
HTML5 - HTML5 para iniciantes - Como usar a meta tag viewport para controlar o layout de suas páginas HTML JavaScript - Como retornar o nome ou tipo de exceção de um erro em JavaScript usando a propriedade name do objeto Error |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |