次のようにコードをコピーします。
java.io.ファイルをインポートします。
java.io.FileInputStreamをインポートします。
インポートjava.io.FileNotFoundException;
java.io.FileOutputStreamをインポートします。
インポート java.io.IOException;
java.io.InputStreamをインポートします。
java.util.ArrayListをインポートします。
java.util.Listをインポートします。
org.apache.log4j.Logger をインポートします。
org.apache.poi.hssf.usermodel.HSSFCell をインポートします。
org.apache.poi.hssf.usermodel.HSSFRow をインポートします。
org.apache.poi.hssf.usermodel.HSSFSheet をインポートします。
org.apache.poi.hssf.usermodel.HSSFWorkbook をインポートします。
パブリック クラス DeployByExcel {
private static Logger logger= Logger.getLogger(DeployByExcel.class);
静的最終整数バッファ = 8192;
//エクセル
プライベート HSSFWorkbook ワークブック。
/**
* Excelファイルを読み込み、ファイルリストをリストに入れます
* @param シート番号
* @param dir Excel ファイルが配置されているディレクトリ
* @戻る
* @throws FileNotFoundException
* @throwsIOException
*/
public List<String> getDatasInSheet(intsheetNumber,File dir) throws FileNotFoundException, IOException{
ファイル[] ファイル = dir.listFiles();
List<String> 結果 = new ArrayList<String>();
for(ファイル f : ファイル)
{
if(!f.getName().toLowerCase().endsWith(".xls"))
{
続く;
}
ワークブック = 新しい HSSFWorkbook(新しい FileInputStream(f));
//指定されたテーブルを取得する
HSSFSheet シート = workbook.getSheetAt(sheetNumber);
// データの総行数を取得する
int rowCount =sheet.getLastRowNum();
logger.info("見つかった Excel の行数: " + rowCount);
if (行数 < 1) {
結果を返します。
}
//データを一行ずつ読み込む
for (int rowIndex = 4; rowIndex <= rowCount; rowIndex++) {
//行オブジェクトを取得する
HSSFRow 行 =sheet.getRow(rowIndex);
if (行 != null) {
List<Object> rowData = new ArrayList<Object>();
// この行のセルの数を取得します
int columnCount = row.getLastCellNum();
// この行の各セルのデータを取得します
HSSFCell セル = row.getCell(1);
//指定したセルのデータを取得します
文字列 str = (文字列)this.getCellString(セル);
if (str!=null && str.length()>1)
result.add(str);
}
}
}
結果を返します。
}
private void copy(String sourcePath,String destPath,List<String> fileList,String webContent) throws IOException{
int num =1;
for (文字列 str : fileList){
str = str.replace(".java", ".class");
if (str.indexOf("/")!=-1){
if (str.indexOf("src")==0){
str = str.replace("src", "WEB-INF/classes");
}else if (str.toUpperCase().indexOf(webContent.toUpperCase())==0){
str = str.replace(webContent+"/", "");
}
ブール値 f = copyFile(str,sourcePath,destPath);
もし(f)
{
logger.info("ファイルは次のとおりです:" + num);
数値++;
文字列ファイル名1 = str;
int n = 1;
while(ファイル名1.endsWith(".class"))
{
str = ファイル名1.replace(".class", "$" + n +".class");
if(!copyFile(str,sourcePath,destPath))
{
壊す;
}
n++;
}
}
}
}
}
/**
* strをdestPathにコピーします
*
* @param str
* @param ソースパス
* @param destPath
* @return boolean isFile return true;それ以外の場合は false を返します。
* @throwsIOException
*/
private boolean copyFile(String str,String sourcePath,String destPath) は IOException をスローします
{
ブール値 f = false;
文字列 destFilePath = destPath+str;
文字列ソースファイルパス = ソースパス+str;
File newDir = new File(destFilePath.substring(0,destFilePath.lastIndexOf('/')));
ファイルsourceFile = new File(sourceFilePath.trim());
if(!sourceFile.exists())
{
fを返します;
}
logger.info("dest:"+destFilePath+" "+"source:"+sourceFilePath);
ファイル destFile = 新しい File(destFilePath.trim());
if (!newDir.exists()){
newDir.mkdirs();
}
if(!sourceFile.isDirectory())
{
InputStream in=new FileInputStream(sourceFile);
FileOutputStream out=新しい FileOutputStream(destFile);
byte[] バッファ=新しいバイト[1024];
int ins;
while((ins=in.read(buffer))!=-1){
out.write(バッファ,0,ins);
}
in.close();
out.flush();
out.close();
f = 真;
}
fを返します;
}
/**
* セルの内容を取得します
* @paramセル
* @戻る
*/
protected Object getCellString(HSSFCell cell){
オブジェクトの結果 = null;
if (セル != null) {
int cellType = cell.getCellType();
スイッチ(セルタイプ){
HSSFCell.CELL_TYPE_STRING の場合:
結果 = cell.getRichStringCellValue().getString();
壊す;
HSSFCell.CELL_TYPE_NUMERIC の場合:
結果=セル.getNumericCellValue();
壊す;
HSSFCell.CELL_TYPE_FORMULA の場合:
結果 = cell.getNumericCellValue();
壊す;
HSSFCell.CELL_TYPE_ERROR の場合:
結果=null;
壊す;
HSSFCell.CELL_TYPE_BOOLEAN の場合:
結果=セル.getBooleanCellValue();
壊す;
HSSFCell.CELL_TYPE_BLANK の場合:
結果=null;
壊す;
}
}
結果を返します。
}
/**
*
* @param args args[0]: Excel ファイルが配置されているディレクトリ args[1]: ソース ディレクトリ (コンパイルされたファイル ディレクトリ);
* @throwsException
*/
public static void main(String[] args) throws Exception {
if(args == null || args.length <3 )
{
logger.info("ファイルが見つかりません;");
logger.fatal("java cn.id5.deploy.DeployByExcel $0 $1 $2 $3 /n$0: Excel ファイルが置かれているディレクトリ; $1: ソース ディレクトリ (コンパイルされたファイルのディレクトリ); $2: リリース ディレクトリ; $3: jsp が置かれているディレクトリ(デフォルトは webContent で、空にすることもできます)/nexting.");
System.exit(0);
}
ファイル file = 新しい File(args[0]);
DeployByExcel デプロイ = new DeployByExcel();
List<String> fileList =deploy.getDatasInSheet(0,file);
文字列クラスパス = args[1];
文字列 destPath = args[2];
String webContent = (args.length> 3 && args[3] != null && args[3].length() > 1) args[3] : "WebContent";
deploy.copy(classPath, destPath, fileList, webContent);
///tmp/gboss /media/terry/doc/Project_ID5/gboss/WebContent/
}
}