Maison  >  Article  >  Java  >  Comment lire le contenu d'un fichier Excel en utilisant Java

Comment lire le contenu d'un fichier Excel en utilisant Java

WBOY
WBOYavant
2023-05-02 10:31:172312parcourir

Question : Puis-je lire un fichier Excel en utilisant Java ? Si oui, comment ?
Réponse : Oui, les fichiers Microsoft Excel peuvent être lus avec Java. Microsoft fournit un pilote ODBC pour Excel, nous pouvons donc utiliser JDBC et le pilote JDBC-ODBC de Sun pour lire les fichiers Excel.
Si vous disposez d'un fichier Excel nommé Book1. Sheet1, le pilote ODBC de Microsoft utilise la première ligne de la feuille de calcul comme nom de colonne (Note du traducteur : nom du champ) et le nom de la feuille de calcul comme nom de table de base de données. Pour accéder à la feuille de calcul via JDBC, nous devons également créer une nouvelle source de données ODBC. Le processus de création d'une source de données sur un système Windows 2000 est le suivant :

Entrez "Panneau de configuration" Outils de gestion "Source de données (ODBC)", (Note du traducteur : Après ouverture, sélectionnez le DSN du système), cliquez sur Ajouter, sélectionnez "Pilote de Microsoft Excel (*. Cliquez ensuite sur "Sélectionner un classeur, puis recherchez et sélectionnez votre fichier Excel

Après avoir cliqué sur OK, le nom de la source de données que vous avez défini apparaîtra dans la liste des sources de données du système, et maintenant la table de données est déjà dans la liste des sources de données (Note du traducteur : cliquez sur OK pour terminer la configuration

(Note du traducteur : dans mon exemple) Maintenant, si nous voulons tout sélectionner). les "valeurs de test" dans la colonne test1, nous devons utiliser la requête SQL suivante :

SELECT test1 FROM [Sheet1$ ] WHERE test1='Test'

Il est à noter que le nom de la feuille de calcul est suivi d'un "$ symbole, ce qui est indispensable Pourquoi ? Parce qu'il y a des crochets avant et après, car "$ est réservé dans les instructions SQL. Caractère.

Ce qui suit est un exemple de programme :


import java.sql.Connection;Dans ce programme, la fonction principale main() établit une connexion à la table de données, et Supprimez les enregistrements qui répondent aux critères.
import java.sql.Statement;

import java.sql.ResultSet;
import java.sql.DriverManager;
classe publique ExcelReader {
public static void main( String[] args ) {
Connection c = null;
Statement stmnt = null;
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
c = DriverManager. getConnection( "jdbc:odbc:Book1", "", "" );
stmnt = c.createStatement();
String query = "SELECT test1 FROM [Sheet1$] WHERE test1='test'";
ResultSet rs = stmnt.executeQuery( query );
System.out.println( "L'enregistrement de test1 correspondant à 'test' est :" );
while( rs.next() ) {
System.out.println( rs.getString( " test1" ) );
}
}
catch( Exception e ) {
System.err.println( e );
}
finally {
try {
stmnt.close();
c.close();
}
catch( Exception e ) {
System.err.println( e );
}
}
}
}

(Note du traducteur : De plus, j'ai aussi un programme ici, qui est un programme qui lit tous les enregistrements, à titre de référence seulement) :



import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DriverManager; 
public class ExcelReader { 
 public static void main(String[] args){
  Connection connection = null; 
  try{
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection con = DriverManager.getConnection( "jdbc:odbc:Book1","","" );
   Statement st = con.createStatement();
   ResultSet rs = st.executeQuery( "SELECT * FROM [Sheet1$]" ); 
   ResultSetMetaData rsmd = rs.getMetaData();
   int numberOfColumns = rsmd.getColumnCount(); 
   while (rs.next()) {
    for (int i = 1; i <= numberOfColumns; i++) {
     if(i>1) //用逗号分隔各列
  System.out.print(", ");
     String columnValue = rs.getString(i);
     System.out.print(columnValue);
    }
    System.out.println("");
   } 
   st.close();
   con.close(); 

  } catch(Exception ex) {
   System.err.print("Exception: ");
   System.err.println(ex.getMessage());
  }
 }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer