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 |
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
















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?
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.
Oi,
Eu gostei do seu tutorial.
Manish
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
Oi Avijit,
Você pode colar o código fonte você está usando.
Agarwal Hitesh
Oi Hitesh,
Very nice man tutorial. Keep it up
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
Ótimo tutorial, lottt uma thx ...
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.
Xls Very nice ler o código .. thanx a lot.
muito bom tutorial fro excel leitura. Obrigado
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.
oi, se arquivo excel tem 18BM, como ler?
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?
Como é que podemos inserir uma nova linha para a folha?
Como podemos copiar o formato de linha existente para uma nova linha?
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.
Hitesh Suresh,
oi Hitesh,
Hitesh Hi,
O tutorial foi de ajuda do G8
Obrigado
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
Oi Ganesh,
Ainda não encontrou este erro. Terá que verificar isso.
Obrigado,
Hitesh Agarwal
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.
@ 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?
@ 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!
obrigado por seu tutorial ^ _ ^
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!
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.