Java Excel - Folha de Leitura Excel em Java

Por alguma razão que eu encontrei Apache POI difícil usar o Excel para leitura de planilha, em termos de convenções de nomenclatura eo código assim que eu estava procurando por uma outra biblioteca para leitura de planilha do Excel em Java e eu parei em JXL.

Java Excel API saber JXL é uma API baseada em Java, que nos permite ler / escrever / editar a folha de Excel. O principal acho que eu gostava era a sua simplicidade sobre o Apache POI Package. Este artigo irá mostrar como podemos ler planilha do Excel usando JXL.

Agora aqui eu vou ler uma folha excel com conteúdo:

EmpId Nome Designação
1 ABC Engenheiro de Software
2 DFG Sr Engenheiro de Software
3 LOI Team Leader
4 LKJ Project Manager
5 QWE Software Architech

Seu e-mail:


I have uploaded a mesma folha de excel no servidor, você pode baixá-lo aqui: Download Excel Sheet

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 ; import java.io.FileInputStream ; import java.io.IOException ; import java.io.InputStream ; import java.util.Locale ; import jxl.Cell ; import jxl.Sheet ; import jxl.Workbook ; import jxl.WorkbookSettings ; import jxl.read.biff.BiffException ; import jxl.DateCell ; public class ReadXLSheet { public void init ( String filePath ) { FileInputStream fs = null ; try { fs = new FileInputStream ( new File ( filePath ) ) ; contentReading ( fs ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } finally { try { fs. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } } } //Returns the Headings used inside the excel sheet public void getHeadingFromXlsFile ( Sheet sheet ) { int columnCount = sheet. getColumns ( ) ; for ( int i = 0 ; i < columnCount ; i ++ ) { System . out . println ( sheet. getCell ( i, 0 ) . getContents ( ) ) ; } } public void contentReading ( InputStream fileInputStream ) { WorkbookSettings ws = null ; Workbook workbook = null ; Sheet s = null ; Cell rowData [ ] = null ; int rowCount = '0' ; int columnCount = '0' ; DateCell dc = null ; int totalSheet = 0 ; try { ws = new WorkbookSettings ( ) ; ws. setLocale ( new Locale ( "en" , "EN" ) ) ; workbook = Workbook. getWorkbook ( fileInputStream, ws ) ; totalSheet = workbook. getNumberOfSheets ( ) ; if ( totalSheet > 0 ) { System . out . println ( "Total Sheet Found:" + totalSheet ) ; for ( int j = 0 ; j < totalsheet ; j ++ ) { System . out . println ( "Sheet Name:" + workbook. getSheet ( j ) . getName ( ) ) ; } } //Getting Default Sheet ie 0 s = workbook. getSheet ( 0 ) ; //Reading Individual Cell getHeadingFromXlsFile ( s ) ; //Total Total No Of Rows in Sheet, will return you no of rows that are occupied with some data System . out . println ( "Total Rows inside Sheet:" + s. getRows ( ) ) ; rowCount = s. getRows ( ) ; //Total Total No Of Columns in Sheet System . out . println ( "Total Column inside Sheet:" + s. getColumns ( ) ) ; columnCount = s. getColumns ( ) ; //Reading Individual Row Content for ( int i = 0 ; i < rowCount ; i ++ ) { //Get Individual Row rowData = s. getRow ( i ) ; if ( rowData [ 0 ] . getContents ( ) . length ( ) != 0 ) { // the first date column must not null for ( int j = 0 ; j < columnCount ; j ++ ) { switch ( j ) { case 0 : System . out . println ( "Employee Id:" + rowData [ j ] . getContents ( ) ) ; case 1 : System . out . println ( "Employee Name:" + rowData [ j ] . getContents ( ) ) ; case 2 : System . out . println ( "Employee Designation:" + rowData [ j ] . getContents ( ) ) ; default : break ; } } } } workbook. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( BiffException e ) { e. printStackTrace ( ) ; } } public static void main ( String [ ] args ) { try { ReadXLSheet xlReader = new ReadXLSheet ( ) ; xlReader. init ( "/home/hitesh/Desktop/test.xls" ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } } } import java.io.File; import java.io.File; import java.io.IOException; java.io.InputStream importação; java.util.Locale importação; jxl.Cell importação; jxl.Sheet importação; jxl.Workbook de importação; jxl.WorkbookSettings importação; jxl.read.biff.BiffException importação; jxl.DateCell public class ReadXLSheet (public void init (String filePath) (FileInputStream fs = null; try (fs = new FileInputStream (new File (filePath)); contentReading (fs);) catch (IOException e) (e. printStackTrace ();) (Exception e) (e. printStackTrace ();) finally (try (fs. close ();) catch (IOException e) (e . printStackTrace ();))) / / Retorna os títulos utilizados no interior da folha excel getHeadingFromXlsFile void (folha Sheet) (columnCount = folha. GetColumns (); for (int i = 0; columnCount i <; i + +) (System. fora. println (sheet. GetCell (i, 0). getContents ());)) contentReading void (FileInputStream InputStream) (WorkbookSettings foi = null; Workbook workbook = null; Folha de S = null; rowData Cell [] = null; int rowCount = '0 '; int ColumnCount = '0'; dc DateCell = null; totalSheet = 0; try (foi WorkbookSettings = new (); era. setLocale (new Locale ( "en", "PT" )); Workbook workbook = GetWorkbook. FileInputStream (foi); totalSheet = livro. getNumberOfSheets (); if (totalSheet> 0) (System. println fora. ( "total do Encontrado:" + totalSheet); for (int j = 0, j <totalsheet; j + +) (System. fora. println ( "Nome da Folha:" + livro. getSheet (j). getName ());)) / / Como padrão ou seja, s = 0 Folha de trabalho. getSheet ( 0); / / leitura individual getHeadingFromXlsFile Cell (s); / / Total n º total de linhas na Folha, você não vai voltar de linhas que são ocupadas com alguns dados do sistema. fora. println ( "total de linhas dentro Sheet:" + s . GetRows ()); GetRows rowCount = s. (); / / Total n º total de colunas na Folha de Sistema. fora. println ( "Total da coluna dentro Sheet:" + S. getColumns ()); getColumns columnCount = (s. ) / / leitura individual Row Content for (int i = 0; i <rowCount; i + +) (/ / Get rowData linha individual = getRow s. (i); if (rowData [0]. getContents () comprimento. ()! = 0) (/ / a coluna de data, não deve ser nulo para (j = 0; j columnCount <; j + +) (switch (j) (case 0: System. fora. println ( "Employee Id: "rowData + [j]. getContents ()); case 1: System. fora. println (" Nome do Funcionário: "+ rowData [j]. getContents ()); case 2: System. fora. println (" Employee Cargo: "rowData + [j]. getContents ()); default: break;)))) livro. close ();) catch (IOException e) (e. printStackTrace ();) catch (BiffException e) (e. printStackTrace ( );)) public static void main (String [] args) ((xlReader ReadXLSheet = ReadXLSheet novo (); xlReader init. ( "/ home hitesh / Desktop / test.xls");) (Exception e) ( e. printStackTrace ();))) 
  Balanço total encontrados: 3
 ----------------------------------------------
 Ficha Nome: Sheet1
 Ficha Nome: Folha2
 Ficha Nome: Plan3
 ----------------------------------------------
 Coluna: EmpId
 Coluna: Nome
 Coluna: Cargo
 ----------------------------------------------
 Total de linhas dentro Sheet: 6
 ----------------------------------------------
 Total de colunas dentro Sheet: 3
 ----------------------------------------------
 Employee ID: EmpId
 Empregado nome:
 Funcionário Cargo: Cargo:
 ----------------------------------------------
 Employee ID: 1
 Nome do Funcionário: ABC
 Funcionário Cargo: Engenheiro de Software
 ----------------------------------------------
 Employee ID: 2
 Nome do Funcionário: DFG
 Funcionário Cargo: Sr Engenheiro de Software
 ----------------------------------------------
 Employee ID: 3
 Nome do Funcionário: LOI
 Funcionário Cargo: Líder de Equipe
 ----------------------------------------------
 Employee ID: 4
 Nome do Funcionário: LKJ
 Funcionário Cargo: Project Manager
 ----------------------------------------------
 Employee ID: 5
 Nome do Funcionário: QWE
 Funcionário Cargo: Arquiteto de Software 

No que diz respeito ao seguinte código escrito que eu sou capaz de realizar a operação que se segue:

  • Calcule o número total de folhas dentro da folha de Excel
  • Listar todas Nome da folha utilizada dentro do Excel Sheet
  • Leia individuais Cell para especificar a posição da pilha - no código de ter lido no título da coluna linha 1 ou seja
  • Leia Total Modificado linhas na planilha do Excel
  • Leia Total Modificado colunas na Folha de Excel
  • Leia individuais Row Conteúdo

Custom Search


Artigos populares:

Tags: Categorias: Java Tags:
  1. 26 de dezembro de 2008 às 10:05 | # 1

    Se eu tiver que escrever este código usando POI, para realizar as tarefas que você executou, o código teria sido bastante semelhantes com as chamadas API muito similar. Eu vejo o nível de dificuldade mais ou menos o mesmo quando comparado com o PI. A minha pergunta é como isso é diferente de POI?

  2. 28 de dezembro de 2008 às 22:36 | # 2

    Oi Surya,
    Diferença vem com o pacote de convenção de nomenclatura utilizada. JXL é apenas usado para o Excel em Java. Onde como no Apache POI existem diferentes projetos realizados para diferentes arquivos do Microsoft Office, HWPF Eg, HSSF, HPSF etc Agora, como desenvolvedor, você tem que verificar que um caso de análise para o Excel, faça o download do pacote e, em seguida, implementá-lo.

  3. 2 de janeiro de 2009 às 11:58 | # 3

    Oi,
    Eu gostei do seu tutorial.
    Manish

  4. Avijit
    6 de janeiro de 2009 às 04:10 | # 4

    há um problema ao ter várias planilhas em xls. Eu quero accsess valores folha de uma só vez, mas ele retorna um valor ovelap de duas folhas.

    mas o tutorial é muito bom.
    plz resolver o problema

  5. 6 de janeiro de 2009 às 04:44 | # 5

    Oi Avijit,
    Você pode colar o código fonte você está usando.

    Agarwal Hitesh

  6. Vivek Mittal
    11 de janeiro de 2009 às 14:08 | # 6

    Oi Hitesh,
    Very nice man tutorial. Keep it up

  7. Abhishek
    18 de fevereiro de 2009 às 07:55 | # 7

    Oi Hitesh,

    Nice work man. Eu tinha uma pergunta. É possível escrever as macros do Excel em Java e executar as macros enquanto trabalha na planilha.

    Obrigado
    Abhi

  8. seeraz
    29 de maio de 2009 às 02:41 | # 8

    Ótimo tutorial, lottt uma thx ...

  9. Moha
    2 de junho de 2009 às 07:38 | # 9

    Oi,

    Primeiro de tudo, agradecer-lhe para o tutorial.
    Eu tenho um problema. Eu fiz o download da API, mas eu não sei onde guardá-lo no eclipse. A razão é que eu pus os arquivos descompactados do api na pasta plugin, mas o programa que você deu como exemplo ainda pede JXL.
    Could you please help?
    Obrigado.

  10. Rohan
    1 de setembro de 2009 às 04:40 | # 10

    Xls Very nice ler o código .. thanx a lot.

  11. barakha
    2 de setembro de 2009 às 01:30 | # 11

    muito bom tutorial fro excel leitura. Obrigado

  12. Uma
    10 de setembro de 2009 às 21:19 | # 12

    Como ler dados de arquivo excel com nome da coluna.
    Digamos, por exemplo,
    Coloque País
    Chennai Índia
    Mumbai Índia
    Precisa ler usando a coluna Place, Country.
    Por favor me ajudem.

  13. qing
    13 de outubro de 2009 às 18:06 | # 13

    oi, se arquivo excel tem 18BM, como ler?

  14. id
    15 de outubro de 2009 às 13:17 | # 14

    hey ..
    Estou tentando executar o programa do ano, mas continua a dar-me a versão Java 50,0 errado deve ser 49,0.

    Dosent JXL trabalhar com Java 1.5?
    Deixe-me saber se houver im anythign faltando?

  15. James Zhao
    23 de outubro de 2009 às 14:36 | # 15

    Como é que podemos inserir uma nova linha para a folha?
    Como podemos copiar o formato de linha existente para uma nova linha?

  16. Swamy
    28 de outubro de 2009 às 06:03 | # 16

    Oi Hitesh,

    Biblioteca de Nice, keep it up, útil para as pessoas.
    Como é que podemos inserir uma nova linha para a folha?
    Como podemos copiar o formato de linha existente para uma nova linha?

    Rgds
    Swamy.

  17. Suresh
    30 de outubro de 2009 às 22:31 | # 17

    Hitesh Suresh,

      Exemplo de Nice.  Tutorial é muito bom.
     Eu tenho um problema com a leitura de dados de planilha do Excel, se os dados do Excel folha não é a partir da primeira coluna.  Se a folha de dados do Excel não está em forma TABLAR
     então como ler dados de planilha do Excel. 
  18. Suresh
    30 de outubro de 2009 às 22:47 | # 18

    oi Hitesh,

      Eu havae um problema com a leitura
     dados do Excel Sheet.If a folha de Excel
     Dados não está em forma tabler em seguida, como
     leitura de dados.  Eu corro o mesmo exemplo, mas
     sobe ArrayIndexOutOfBounds Exception.
     Plz tell a solução para este problema .....
    
  19. divs
    10 de novembro de 2009 às 05:31 | # 19

    Hitesh Hi,
    O tutorial foi de ajuda do G8

    Obrigado

  20. Ganesh
    10 de novembro de 2009 às 23:23 | # 20

    Oi Hitesh,

    Eu tenho a seguinte exceção quando tentei executar o ReadXLSheet.java.

    jxl.read.biff.BiffException: Não é possível reconhecer fluxo OLE
    na jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
    na jxl.read.biff.File. (File.java: 127)
    na jxl.Workbook.getWorkbook (Workbook.java: 268)
    na com.sample.ReadXLSheet.contentReading (ReadXLSheet.java: 65)
    na com.sample.ReadXLSheet.init (ReadXLSheet.java: 30)
    na com.sample.ReadXLSheet.main (ReadXLSheet.java: 20)

    O que poderia ser a razão para isso.

    Inicialmente, eu tenho a seguinte exceção quando tentei executar o ReadXLSheet.java.

    java.lang.UnsupportedClassVersionError: Bad version number in. arquivo de classe

    Mais tarde eu respeito a fonte jexcelapi_2_6_12 com a minha JVM e usou o jar gerado. Agora eu não estou recebendo este erro, mas eu estou começando
    jxl.read.biff.BiffException. u pode me ajudar a resolver esse problema.

    obrigado,
    ganesh

  21. 14 de novembro de 2009 às 10:04 | # 21

    Oi Ganesh,
    Ainda não encontrou este erro. Terá que verificar isso.

    Obrigado,
    Hitesh Agarwal

  22. 30 de novembro de 2009 às 23:03 | # 22

    Oi Hitesh,
    Thanku para comentários ur e tutorial.
    Eu tenho um problema de excel.
    Eu tenho dois excel, ambos estão no mesmo sistema.
    se eu fizer uma alteração na folha de Excel, em seguida, ele afeta a outra folha excel.
    Eu sou capaz de ping outro sistema, e pode enviar a mensagem de outro sistema usando a programação de soquete.
    mas não tenho idéia de como atualizar a folha de Excel que está no outro sistema, como a im mesmo fazendo quando a folha excel no mesmo sistema.

    Por favor, responda ASAP

    Agradecemos antecipadamente.

  23. Deepak Sharma
    30 de dezembro de 2009 às 00:16 | # 23

    @ Ganesh

    Verifique se ur usando. Xlsx, em vez de. Xls
    Recebo essa exceção (não é possível reconhecer fluxo OLE) se eu usar xlsx novo.
    Então, usando jexcelapi_2_6_12 vai resolver o problema xlsx?

  24. Swagata
    6 de janeiro de 2010 às 21:56 | # 24

    @ Ganesh

    Verifique se o arquivo está bloqueado test.xls .. Clique com o botão direito e vá para propriedades. Se for bloqueado, desbloquear .. Algumas características de segurança no Windows que bloqueia alguns arquivos baixados até que você desbloqueá-las .. Tente se isso ajuda!

  25. 7 de janeiro de 2010 às 00:36 | # 25

    obrigado por seu tutorial ^ _ ^

  26. CAG
    22 de janeiro de 2010 às 12:18 | # 26

    muito obrigado, eu estava trabalhando em um problema onde eu precisava arquivo xls strop (400 +) - apenas uma vez. Você me salvou o dia com a jarra!

  27. Roshan Khandelwal
    31 de janeiro de 2010 às 23:57 | # 27

    Olá a todos,
    O código funciona muito bem com uma mudança.

    Depois de cada instrução case adicionar um "break"
    para a revisão do código seria:

    switch (j) (
    case 0:
    System.out.println ( "Employee ID:" + rowData [j]. GetContents ());
    break;
    case 1:
    System.out.println ( "Nome do Funcionário:" + rowData [j]. GetContents ());
    break;
    case 2:
    System.out.println ( "Employee Cargo:" + rowData [j]. GetContents ());
    break;
    default:
    break;
    )

    Com o código que consta, ele percorre todas as três condições e dá uma saída errada.
    Thanks for the code.

  1. No trackbacks ainda.