Je voulais étudier la méthode d'utilisation de Java pour faire fonctionner Excel depuis longtemps. Je n'ai rien à faire aujourd'hui, alors j'ai juste appris un peu et je l'ai résumé. Pour utiliser Java pour faire fonctionner Excel, il existe un outil open source - jxl.jar, qui peut être téléchargé depuis http://sourceforge.net/projects/jexcelapi/files/.
1. Lisez le contenu du fichier Excel
Copiez le code comme suit :
/** *//**Lire le contenu du fichier Excel
* @param file fichier à lire
* @retour
*/
chaîne statique publique readExcel (fichier fichier)...{
StringBuffer sb = new StringBuffer();
Classeur wb = null ;
essayer...{
//Construire un objet Workbook
wb=Workbook.getWorkbook(fichier);
} catch (BiffException e) ...{
e.printStackTrace();
} catch (IOException e) ...{
e.printStackTrace();
}
si(wb==null)
renvoie null ;
//Après avoir obtenu l'objet Workbook, vous pouvez obtenir l'objet Sheet (feuille de calcul) via celui-ci
Feuille[] feuille = wb.getSheets();
if(sheet!=null&&sheet.length>0)...{
// Parcourez chaque feuille de calcul
pour(int i=0;i<sheet.length;i++)...{
//Obtenir le nombre de lignes dans la feuille de calcul actuelle
int rowNum = feuille[i].getRows();
pour(int j=0;j<rowNum;j++)...{
// Récupère toutes les cellules de la ligne actuelle
Cell[] cellules = feuille[i].getRow(j);
if(cells!=null&&cells.length>0)...{
// Boucle dans chaque cellule
pour(int k=0;k<cells.length;k++)...{
//Lire la valeur de la cellule actuelle
Chaîne cellValue = cellules[k].getContents();
sb.append(cellValue+" ");
}
}
sb.append(" ");
}
sb.append(" ");
}
}
//Fermez enfin la ressource et libérez de la mémoire
wb.close();
return sb.toString();
}
2. Écrivez dans un fichier Excel
Il existe de nombreux formats ici, comme la mise en gras du contenu du texte, l'ajout de certaines couleurs, etc. Vous pouvez vous référer à l'API de jxl
Copiez le code comme suit :
/**Générer un fichier Excel
* @param fileName Le nom du fichier Excel à générer
*/
public static void writeExcel (String fileName)...{
WritableWorkbook wwb = null ;
essayer...{
//Utilisez d'abord la méthode d'usine de la classe Workbook pour créer un objet classeur inscriptible (Workbook)
wwb = Workbook.createWorkbook (nouveau fichier (nom de fichier));
} catch (IOException e) ...{
e.printStackTrace();
}
si(wwb!=null)...{
//Créer une feuille de calcul inscriptible
//La méthode createSheet de Workbook a deux paramètres Le premier est le nom de la feuille de calcul et le second est la position de la feuille de calcul dans le classeur.
WritableSheet ws = wwb.createSheet("sheet1", 0);
// Commencez à ajouter des cellules ci-dessous
pour(int i=0;i<10;i++)...{
pour(int j=0;j<5;j++)...{
//Ce qu'il faut noter ici, c'est que dans Excel, le premier paramètre représente la colonne et le deuxième paramètre représente la ligne.
Label labelC = new Label(j, i, "Ceci est la ligne "+(i+1)+", colonne "+(j+1)+"");
essayer...{
//Ajoute les cellules générées à la feuille de calcul
ws.addCell(labelC);
} catch (RowsExceededException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
}
}
essayer...{
//Écrit de la mémoire dans un fichier
wwb.write();
//Ferme les ressources et libère de la mémoire
wwb.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
}
}
Remarque : Si vous souhaitez écrire du contenu dans un fichier Excel existant, vous devez procéder comme suit :
Copiez le code comme suit :
Livre WritableWorkbook = null ;
essayer...{
// Excel récupère le fichier
Classeur wb = Workbook.getWorkbook(new File("D:/test.xls"));
// Ouvre une copie d'un fichier et réécrit les données spécifiées dans le fichier d'origine
book = Workbook.createWorkbook(new File("D:/test.xls"), wb);
//Ajouter une feuille de calcul
Feuille WritableSheet = book.getSheet("sheet1");
sheet.addCell(new Label(8,3, "Quelque chose est ajouté dans la ligne 3, colonne 8"));
//TODO Les parties suivantes sont omises
}attraper(Exception e)...{
e.printStackTrace();
}
3. Découvrez si un fichier Excel contient un certain mot-clé
Copiez le code comme suit :
/** Rechercher si un certain fichier contient un certain mot-clé
* @param file fichier à rechercher
* @param keyWord Le mot clé à rechercher
* @retour
*/
public static boolean searchKeyWord (File file,String keyWord)...{
booléen res = faux ;
Classeur wb = null ;
essayer...{
//Construire un objet Workbook
wb=Workbook.getWorkbook(fichier);
} catch (BiffException e) ...{
retourner la résolution ;
} catch (IOException e) ...{
retourner la résolution ;
}
si(wb==null)
retourner la résolution ;
//Après avoir obtenu l'objet Workbook, vous pouvez obtenir l'objet Sheet (feuille de calcul) via celui-ci
Feuille[] feuille = wb.getSheets();
booléen breakSheet = faux ;
if(sheet!=null&&sheet.length>0)...{
// Parcourez chaque feuille de calcul
pour(int i=0;i<sheet.length;i++)...{
si (feuille de rupture)
casser;
//Obtenir le nombre de lignes dans la feuille de calcul actuelle
int rowNum = feuille[i].getRows();
booléen breakRow = faux ;
pour(int j=0;j<rowNum;j++)...{
si (breakRow)
casser;
// Récupère toutes les cellules de la ligne actuelle
Cell[] cellules = feuille[i].getRow(j);
if(cells!=null&&cells.length>0)...{
booléen breakCell = faux ;
// Boucle dans chaque cellule
pour(int k=0;k<cells.length;k++)...{
si (breakCell)
casser;
//Lire la valeur de la cellule actuelle
Chaîne cellValue = cellules[k].getContents();
si (cellValue == null)
continuer;
si (cellValue.contains (keyWord))...{
res = vrai ;
breakCell = vrai ;
breakRow = vrai ;
breakSheet = vrai ;
}
}
}
}
}
}
//Fermez enfin la ressource et libérez de la mémoire
wb.close();
retourner la résolution ;
}
4. Insérer une icône d'image dans Excel
L'insertion d'images est simple, voir le code suivant :
Copiez le code comme suit :
/** *//**Insérer des images dans Excel
* @param dataSheet La feuille de calcul à insérer
* @param col L'image part de cette colonne
* @param row L'image commence à partir de cette ligne
* @param width Le nombre de colonnes occupées par l'image
* @param height Le nombre de lignes occupées par l'image
* @param imgFile Le fichier image à insérer
*/
public static void insertImg (WritableSheet dataSheet, int col, int row, int width,
int hauteur, Fichier imgFichier)...{
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
Les commentaires du code ci-dessus sont déjà très clairs, et il n'est probablement plus nécessaire de l'expliquer. Nous pouvons le vérifier avec le programme suivant :
Copiez le code comme suit :
essayer...{
//Créer un classeur
Classeur WritableWorkbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//Feuille de travail à insérer
WritableSheet imgSheet = workbook.createSheet("Images",0);
//Fichier image à insérer
Fichier imgFile = new File("D:/1.png");
//L'image est insérée dans la première cellule de la deuxième ligne, occupant chacune six cellules en longueur et en largeur.
insertImg(imgSheet,0,1,6,6,imgFile);
workbook.write();
workbook.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
Mais jxl ne prend en charge que les images au format png, et ni les formats jpg ni gif ne sont pris en charge.
5. Insérer l'en-tête et le pied de page
Généralement, les en-têtes et pieds de page sont divisés en trois parties, gauche, centre et droite. Vous pouvez utiliser le code suivant pour insérer des en-têtes et des pieds de page.
Copiez le code comme suit :
/** *//**Ajouter un en-tête et un pied de page à Excel
* @param dataSheet La feuille de calcul à ajouter à l'en-tête
* @param à gauche
* Centre @param
* @param à droite
*/
public static void setHeader (WritableSheet dataSheet, String left, String center, String right)...{
HeaderFooter hf = new HeaderFooter();
hf.getLeft().append(gauche);
hf.getCentre().append(center);
hf.getRight().append(right);
//Ajouter un en-tête
dataSheet.getSettings().setHeader(hf);
//Ajouter un pied de page
//dataSheet.getSettings().setFooter(hf);
}
Nous pouvons tester cette méthode avec le code suivant :
Copiez le code comme suit :
essayer...{
//Créer un classeur
Classeur WritableWorkbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//Feuille de travail à insérer
WritableSheet dataSheet = workbook.createSheet("Ajouter un en-tête",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "Page 1 sur 3");
workbook.write();
workbook.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}