Copiez le code comme suit :
mporter java.io.File ;
importer java.io.FileInputStream ;
importer java.io.FileNotFoundException ;
importer java.io.FileOutputStream ;
importer java.io.IOException ;
importer java.io.InputStream ;
importer java.util.ArrayList ;
importer java.util.List ;
importer org.apache.log4j.Logger ;
importer org.apache.poi.hssf.usermodel.HSSFCell ;
importer org.apache.poi.hssf.usermodel.HSSFRow ;
importer org.apache.poi.hssf.usermodel.HSSFSheet ;
importer org.apache.poi.hssf.usermodel.HSSFWorkbook ;
classe publique DeployByExcel {
Enregistreur statique privé logger = Logger.getLogger (DeployByExcel.class);
statique final int BUFFER = 8192 ;
//Exceller
classeur privé HSSFWorkbook ;
/**
* Lisez le fichier Excel et mettez la liste des fichiers dans la liste
* @param numéro de feuille
* @param dir Le répertoire où se trouve le fichier Excel
* @retour
* @throws FileNotFoundException
* @throwsIOException
*/
public List<String> getDatasInSheet(int sheetNumber,File dir) lance FileNotFoundException, IOException{
Fichier[] fichiers = dir.listFiles();
List<String> result = new ArrayList<String>();
pour(Fichier f : fichiers)
{
if(!f.getName().toLowerCase().endsWith(".xls"))
{
continuer;
}
classeur = nouveau HSSFWorkbook (nouveau FileInputStream (f));
//Obtenir la table spécifiée
Feuille HSSFSheet = workbook.getSheetAt(sheetNumber);
//Obtenir le nombre total de lignes de données
int rowCount = feuille.getLastRowNum();
logger.info("nombre de lignes Excel trouvées : " + rowCount);
si (rowCount < 1) {
renvoyer le résultat ;
}
//Lire les données ligne par ligne
pour (int rowIndex = 4; rowIndex <= rowCount; rowIndex++) {
//Récupère l'objet ligne
Ligne HSSFRow = sheet.getRow(rowIndex);
si (ligne != null) {
List<Object> rowData = new ArrayList<Object>();
//Obtenir le nombre de cellules dans cette ligne
int columnCount = row.getLastCellNum();
//Obtenir les données dans chaque cellule de cette ligne
Cellule HSSFCell = row.getCell(1);
// Récupère les données dans la cellule spécifiée
String str = (String)this.getCellString(cell);
si (str!=null && str.length()>1)
result.add(str);
}
}
}
renvoyer le résultat ;
}
une copie privée vide (String sourcePath,String destPath,List<String> fileList,String webContent) renvoie IOException{
numéro int =1 ;
pour (String str : fileList){
str = str.replace(".java", ".class");
si (str.indexOf("/")!=-1){
si (str.indexOf("src")==0){
str = str.replace("src", "WEB-INF/classes");
}sinon if (str.toUpperCase().indexOf(webContent.toUpperCase())==0){
str = str.replace(webContent+"/", "");
}
booléen f = copyFile(str, sourcePath, destPath);
si(f)
{
logger.info("Le fichier est :" + num);
num++;
Chaîne nomfichier1 = str ;
entier n = 1 ;
while(fileName1.endsWith(".class"))
{
str = fileName1.replace(".class", "$" + n +".class");
if(!copyFile(str,sourcePath,destPath))
{
casser;
}
n++;
}
}
}
}
}
/**
* copier str dans destPath
*
* @param chaîne
* @param sourcePath
* @param destPath
* @return boolean isFile return true ; sinon return false ;
* @throwsIOException
*/
le copyFile booléen privé (String str, String sourcePath, String destPath) lève IOException
{
booléen f = faux ;
Chaîne destFilePath = destPath+str;
Chaîne sourceFilePath = sourcePath+str;
Fichier newDir = new File(destFilePath.substring(0,destFilePath.lastIndexOf('/')));
Fichier sourceFile = new File(sourceFilePath.trim());
si(!sourceFile.exists())
{
retourner f;
}
logger.info("dest:"+destFilePath+" "+"source:"+sourceFilePath);
Fichier destFile = new File(destFilePath.trim());
si (!newDir.exists()){
newDir.mkdirs();
}
si(!sourceFile.isDirectory())
{
InputStream dans=nouveau FileInputStream(sourceFile);
FileOutputStream out=nouveau FileOutputStream(destFile);
octet[] tampon=nouvel octet[1024];
int ins ;
while((ins=in.read(buffer))!=-1){
out.write(buffer,0,ins);
}
joindre();
out.flush();
out.close();
f = vrai ;
}
retourner f;
}
/**
* Obtenez le contenu de la cellule
* Cellule @param
* @retour
*/
Objet protégé getCellString (cellule HSSFCell) {
Résultat de l'objet = null ;
si (cellule != null) {
int cellType = cell.getCellType();
commutateur (type de cellule) {
cas HSSFCell.CELL_TYPE_STRING :
result = cell.getRichStringCellValue().getString();
casser;
cas HSSFCell.CELL_TYPE_NUMERIC :
result=cell.getNumericCellValue();
casser;
cas HSSFCell.CELL_TYPE_FORMULA :
result = cell.getNumericCellValue();
casser;
cas HSSFCell.CELL_TYPE_ERROR :
résultat = nul ;
casser;
cas HSSFCell.CELL_TYPE_BOOLEAN :
result=cell.getBooleanCellValue();
casser;
cas HSSFCell.CELL_TYPE_BLANK :
résultat = nul ;
casser;
}
}
renvoyer le résultat ;
}
/**
*
* @param args args[0] : répertoire où se trouve le fichier Excel ; args[1] : répertoire source (répertoire des fichiers compilés) ; args[2] : répertoire de version ;
* @throwsException
*/
public static void main (String[] args) lève une exception {
si(args == null || args.length <3 )
{
logger.info("le fichier n'est pas trouvé;");
logger.fatal("java cn.id5.deploy.DeployByExcel $0 $1 $2 $3 /n$0 : répertoire où se trouve le fichier Excel ; $1 : répertoire source (répertoire des fichiers compilés) ; $2 : répertoire de version ; $3 : répertoire où se trouve jsp (la valeur par défaut est webContent, peut être vide)/nexiting.");
Système.exit(0);
}
Fichier fichier = nouveau fichier (args[0]);
DeployByExcel déployer = new DeployByExcel();
List<String> fileList = déployer.getDatasInSheet(0,file);
Chaîne classPath = args[1];
Chaîne destPath = args[2];
String webContent = (args.length> 3 && args[3] != null && args[3].length() > 1) ?
déployer.copy (classPath, destPath, fileList, webContent);
///tmp/gboss /media/terry/doc/Project_ID5/gboss/WebContent/
}
}