2010年3月10日 星期三
ValidateUtil
import org.apache.commons.lang.StringUtils;
public class ValidateUtil {
public static boolean validateChineseWords(String chineseWords) { if ( StringUtils.isBlank(chineseWords) ) { return false; } return chineseWords.matches("^[^a-zA-Z0-9_\\s]+$"); }
public static boolean validateCellphone(String cellphone) { if ( StringUtils.isBlank(cellphone) ) { return false; } return cellphone.length() == 10; }
public static boolean validateEmail(String email) { if ( StringUtils.isBlank(email) ) { return false; } return email.toLowerCase().matches("mailto:.+@.+//.[a-z]+"); } public static boolean validateIDNO(String idno) { if (StringUtils.isBlank(idno) ) { return false; } idno = idno.toUpperCase(); boolean isTaiwanIDNO = validateTaiwanIDNO(idno); if ( isTaiwanIDNO ) { return isTaiwanIDNO; } return validatePassportIDNO( idno ); }
/** 檢核是否為正確的護照號碼 */ private static boolean validatePassportIDNO(String idno) { if (StringUtils.isBlank(idno)) { return false; } char[] idnoChars = idno.toCharArray(); int[] passportCheckNumbers = toPassportCheckNumbers( idnoChars ); if ( passportCheckNumbers.length != 11 ) { return false; } int lastPassportNumber = passportCheckNumbers[passportCheckNumbers.length - 1]; int checkSum = toCheckSum( passportCheckNumbers ); return checkSum == 0 ? lastPassportNumber == 0 : 10 - checkSum == lastPassportNumber; }
/** 計算 idno 轉成的數字套公式得到的檢核碼(此檢核碼取 10 的餘數後會與 idno 的尾數相同) */ private static int toCheckSum(int[] checkNumber) { if ( checkNumber == null checkNumber.length != 11 ) { return Integer.MAX_VALUE; } return (checkNumber[0] * 1 + checkNumber[1] * 9 + checkNumber[2] * 8 + checkNumber[3] * 7 + checkNumber[4] * 6 + checkNumber[5] * 5 + checkNumber[6] * 4 + checkNumber[7] * 3 + checkNumber[8] * 2 + checkNumber[9] * 1) % 10; }
/** * 把護照號碼轉成的 char[] 轉為 int[], 轉換英文維數字與轉換 char 數字為 int 數字 * @return new int[0] if idnoChars is null or idnoChars.length is not ten or any unexpected problem happens. */ private static int[] toPassportCheckNumbers(char[] idnoChars) { if ( idnoChars == null idnoChars.length != 10 ) { return new int[0]; } int[] result = new int[11]; String firstEngCharNumberString = String.valueOf(engToNumber(idnoChars[0])); char[] firstEngCharNumberChars = firstEngCharNumberString.toCharArray(); String secondEngCharNumberString = String.valueOf(engToNumber(idnoChars[1])); char[] secondEngCharNumberChars = secondEngCharNumberString.toCharArray(); if ( firstEngCharNumberChars.length != 2 secondEngCharNumberChars.length != 2 ) { return new int[0]; } result[0] = Character.digit(firstEngCharNumberChars[0], 10); result[1] = Character.digit(firstEngCharNumberChars[1], 10); result[2] = Character.digit(secondEngCharNumberChars[1], 10); for ( int i = 3; i < 11; i++ ) { result[i] = Character.digit(idnoChars[i - 1], 10); } return result; }
/** @return true if idno is validate taiwan idno */ private static boolean validateTaiwanIDNO(String idno) { if (idno == null) { return false; } String tmpStr = idno; int checksum = 0; int L = 0; int x[] = new int[3]; int d[] = new int[10]; if (tmpStr.length() != 10) { return false; } L = engToNumber( tmpStr.charAt(0) ); if ( L == 0 ) { return false; } x[1] = L / 10; x[2] = L % 10; for (int i = 1; i <= 9; i++) { d[i] = Character.digit(tmpStr.charAt(i), 10); }
checksum = x[1] + 9 * x[2] + 8 * d[1] + 7 * d[2] + 6 * d[3] + 5 * d[4] + 4 * d[5] + 3 * d[6] + 2 * d[7] + d[8] + d[9]; return checksum % 10 == 0; }
/** 區域碼轉成對應之二碼數字(身分證號與護照共用的對應表) */ private static int engToNumber(char eng) { int L = 0; switch (eng) { case 65: // 'A' L = 10; break;
case 66: // 'B' L = 11; break;
case 67: // 'C' L = 12; break;
case 68: // 'D' L = 13; break;
case 69: // 'E' L = 14; break;
case 70: // 'F' L = 15; break;
case 71: // 'G' L = 16; break;
case 72: // 'H' L = 17; break;
case 74: // 'J' L = 18; break;
case 75: // 'K' L = 19; break;
case 76: // 'L' L = 20; break;
case 77: // 'M' L = 21; break;
case 78: // 'N' L = 22; break;
case 80: // 'P' L = 23; break;
case 81: // 'Q' L = 24; break;
case 82: // 'R' L = 25; break;
case 83: // 'S' L = 26; break;
case 84: // 'T' L = 27; break;
case 85: // 'U' L = 28; break;
case 86: // 'V' L = 29; break;
case 88: // 'X' L = 30; break;
case 89: // 'Y' L = 31; break;
case 87: // 'W' L = 32; break;
case 90: // 'Z' L = 33; break;
case 73: // 'I' L = 34; break;
case 79: // 'O' L = 35; break; } return L; } public static boolean checkEmail(String email) {
String regex; Pattern p; Matcher m; regex = "^[a-zA-Z0-9_.]+@([a-zA-Z0-9][a-zA-Z0-9]+.([a-zA-Z0-9.]*)[a-zA-Z]{2,5})$";
p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); m = p.matcher(email);
if (!m.find()) { return false; }
return true; } public static boolean checkAccount(String account) {
String regex; Pattern p; Matcher m; regex = "^[A-Z0-9a-z]{4,10}+$";
p = Pattern.compile(regex); m = p.matcher(account);
if (!m.find()) { return false; } return true; }
}
csv
try {
Charset charset = Charset.forName("MS950"); reader = new CsvReader(is, ',', charset);
} catch (Exception ex) { log.error(StringUtil.getStackTraceAsString(ex)); }
try { while (reader.readRecord()) {
try { transCount++;
if (transCount == 1) {
continue;
}
/** 建立model */
TsRaceBulletinHMDTO transModel = new TsRaceBulletinHMDTO();
transModel.setTeam( reader.get(getExcelColumnIndex("A")) );//組別
transModel.setSortno( Long.valueOf( reader.get( getExcelColumnIndex("B") ) ) );//排名
transModel.initInsert("Y", userAccount);
tsRaceBulletinHMDAO.insertAll(transModel);
successCount++;
log.info("trans:" + successCount);
} catch (Exception ex) {
errorCount++; log.error("row " + transCount + " error... \n" + StringUtil.stackTrace(ex));
result += "row " + transCount + " error... \n"; }
}
} catch (Exception e) {
log.error(StringUtil.stackTrace(e));
} finally {
reader.close();
}
private static int getExcelColumnIndex(String columnName) { String allName[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM" };
int index = 0;
for (int i = 0; i < index =" i;">
2010年3月9日 星期二
POI EXCEL轉檔
String filePath = "C:\\Tool\\99好一點上傳格式.xls";
File file = new File(filePath); try {
FileInputStream fileInput = new FileInputStream(file);
} catch (Exception ex) {
ex.printStackTrace();
}
POIFSFileSystem fs = null;
try {
fs = new POIFSFileSystem(is);} catch (Exception ex) {
log.error(StringUtil.getStackTraceAsString(ex)); throw ex;
}
HSSFWorkbook wb = null;
try {
wb = new HSSFWorkbook(fs);
} catch (IOException ex) {
log.error(StringUtil.getStackTraceAsString(ex));
throw ex;
}
HSSFSheet sheet = wb.getSheetAt(0); //第一個sheet
HSSFRow row = null; //列
for(int i=3;i
yearPointTransCount ++;
try{ row = sheet.getRow(i);
HSSFCell cell = null;
if(row != null){
cell = row.getCell(getExcelColumnIndex("A"));//區部代碼
agent99YearPointDTO.setRegioncode(getCellValue(cell));
}
}catch (Exception e){
log.error(StringUtil.stackTrace(e));
}
private static int getExcelColumnIndex(String columnName){
String allName[] = {"A","B","C","D","E",
"F","G","H","I","J",
"K","L","M","N","O",
"P","Q","R","S","T",
"U","V","W","X","Y",
"Z","AA","AB","AC","AD"
,"AE","AF","AG","AH","AI"
,"AJ","AK","AL","AM","AN"
,"AO","AP","AQ","AR","AS"
,"AT","AU","AV","AW","AX"
,"AY","AZ","BA","BB","BC"
,"BD","BE","BF","BG","BH" };
int index = 0;
for(int i=0;i
if(columnName.equalsIgnoreCase(allName[i])){
index = i;
}
}
return index;
}
</code></pre>