搜尋此網誌

windows常用命令

[ 群組原則 ]
開始 → 執行 → gpedit.msc

[ 惡意軟體移除工具 ]
開始 → 執行 → mrt

[ 機碼 ]
開始 → 執行 → regedit

[ 系統設定公用程式 ]
開始 → 執行 → msconfig

[ 控制client端所有網路設備 ]
開始 → 執行 → cmd → ipconfig
開始 → 執行 → cmd → ipconfig/all

[ 顯示封包經過的路由器的IP位址 ]
開始 → 執行 → cmd → tracert (網址或IP)

2011年9月30日 星期五

HSSFCellStyle


HSSFCellStyle有两个背景颜色属性,一个叫FillBackgroundColor,另一个叫FillForegroundColor,但其实这指的都是背景颜色,那为什么还有ForegroundColor呢?为了能够帮助大家理解,我们举一个实际的例子,下面这个图案是Excel的一个单元格:
线是白色的,背景是红色的。这里的线其实就是下面的Excel界面中的图案


至于线的颜色则是图案颜色,即白色。
 下面罗列一下图案样式及其对应的值:
图案样式 常量

HSSFCellStyle.NO_FILL
HSSFCellStyle.ALT_BARS
HSSFCellStyle.FINE_DOTS
HSSFCellStyle.SPARSE_DOTS
HSSFCellStyle.LESS_DOTS
HSSFCellStyle.LEAST_DOTS
HSSFCellStyle.BRICKS
HSSFCellStyle.BIG_SPOTS
HSSFCellStyle.THICK_FORWARD_DIAG
HSSFCellStyle.THICK_BACKWARD_DIAG
HSSFCellStyle.THICK_VERT_BANDS
HSSFCellStyle.THICK_HORZ_BANDS
HSSFCellStyle.THIN_HORZ_BANDS
HSSFCellStyle.THIN_VERT_BANDS
HSSFCellStyle.THIN_BACKWARD_DIAG
HSSFCellStyle.THIN_FORWARD_DIAG
HSSFCellStyle.SQUARES
HSSFCellStyle.DIAMONDS

2011年9月27日 星期二

備註各種Jar版本

一、POI 3.6
使用.xlsx會出現
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

2011年9月23日 星期五

正規運算式 Regular Expression

JWorld@TW Java論壇 - Java Regular Expression的學習筆記

Pattern (Java 2 Platform SE 6)

正規運算式 Regular Expression

13-4 正規運算式(Regular Expression)

//範例

以下的程式簡單地示範了幾個常用的method:

package demo.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {

    public static void main(String[] args) {

        // 測試 testString 中是否包含了 aa
        String testString = "ABCaaabcaac";
        System.out.println("String.contains():\t"+testString.contains("aa"));

        // 和上面目的相同,但運用了 regular expression
        // 而這其實是利用了 Pattern 的靜態方法matches()
        System.out.println("String.matches():\t"+testString.matches(".*aa.*"));
        System.out.println("Pattern.matches():\t"+Pattern.matches(".*aa.*",testString));
        System.out.println();

        // 如果要用相同的 regular expression 測試很多資料
        // 可以使用Pattern的靜態方法compile()來編譯
        // 之後就可以重覆使用這個pattern的matcher()方法來進行字串比對
        String testString2 = "aababcAc";
        Pattern pattern = Pattern.compile(".*aa.*");
        Matcher matcher = pattern.matcher(testString);
        System.out.println("matcher.matches():\t"+matcher.matches());
        matcher = pattern.matcher(testString2);
        System.out.println("matcher.matches():\t"+matcher.matches());
        System.out.println();

        // 另外Matcher中還有很多方法可以使用
        // 除了用 matcher.matches()可以比對字串是不是符合regular expression
        // 也可以利用 matcher.lookingAt()比對字串是不是某個regular expression開頭
        pattern = Pattern.compile("aa");
        matcher = pattern.matcher(testString);
        System.out.println("matcher.matches():\t"+matcher.lookingAt());
        matcher = pattern.matcher(testString2);
        System.out.println("matcher.matches():\t"+matcher.lookingAt());
        System.out.println();

        // 想取出字串中符合的區段則可以運用 matcher
        // 例如想從下面四個號碼找出手機的格式
        // 就可以用 matcher.find()及matcher.group()來取出符合的項目
        String testString3 = "0911-111111,             02-22222222      ,             0922-222222      , 03-33333333";
        pattern = Pattern.compile("\\d{4}-\\d{6}");
        matcher = pattern.matcher(testString3);
        while (matcher.find()) {
            System.out.println("matcher.group():\t"+matcher.group());
        }
    }
}

而輸出的結果如下:
String.contains(): true
String.matches(): true
Pattern.matches(): true

matcher.matches(): true
matcher.matches(): true

matcher.matches(): false
matcher.matches(): true

matcher.group():             0911-111111    
matcher.group():             0922-222222    

JavaScript傳中文值

//前一個JSP,optName是下拉選單的名稱

form1.action = "importExcelk.jsp?optName="+form1.fileType.options[form1.fileType.selectedIndex].text;
form1.submit();


//取值的JSP
new String(request.getParameter("aaa").getBytes("ISO-8859-1"), "UTF-8");

2011年9月14日 星期三

讀取檔案,寫入檔案

//讀取
String fileFullPath = "C:\\Documents and Settings\\Irving\\桌面\\LOG_"+getClass().getName()+"_1.txt";
BufferedReader bf = new BufferedReader(new InputStreamReader( new FileInputStream(fileFullPath), "UTF-16LE"));

//寫入
String fileFullPath = "C:\\Documents and Settings\\Irving\\桌面\\LOG_"+getClass().getName()+"_1.txt";

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter ( new FileOutputStream(fileFullPath), "UTF-8"));
            for(int w=0; w<listSQL.size(); w++) {//listSQL要寫入的東西
            bw.write(String.valueOf("第"+ (w+1) + "筆 \n"));
            bw.write(listSQL.get(w));
            bw.write("\r\n");
             bw.flush();
            }


POI Excel


//寫在 try catch

List<String> filelist = getExcelFile(uploadDirectory, fileName);//解壓縮,並把檔案名稱塞入List for(int data=0; data<filelist.size(); data++) { System.out.println("目前讀取 "+(String)filelist.get(data)); POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream((String)filelist.get(data))); HSSFWorkbook wb = new HSSFWorkbook(pfs); //取sheet System.out.println("共 "+wb.getNumberOfSheets()+" sheet"); for(int sheets=0; sheets<wb.getNumberOfSheets(); sheets++){ HSSFSheet sheet1 = wb.getSheetAt(sheets); HSSFRow row = null; //取row System.out.println("共 "+sheet1.getLastRowNum()+" row");//(從0算起) System.out.println("PhysicalNumber共 "+sheet1.getPhysicalNumberOfRows()+" row");//(從1算起) for(int rowNum=0; rowNum<sheet1.getPhysicalNumberOfRows(); rowNum++) { row = sheet1.getRow(rowNum); //從第6Row開始讀取 // if( (null == row) || ((6-1)>rowNum) ){ // continue; // } //取cell // int tempCT = 0;//沒有隱藏cell的順序 // System.out.println("第 "+String.valueOf(rowNum+1)+" row "+String.valueOf(Integer.valueOf(row.getLastCellNum()))+" cell"); System.out.println("共 "+row.getLastCellNum()+" cell"); for(int cellNum=0; cellNum<row.getLastCellNum(); cellNum++) { // //第1Cell跳過 // if( (1-1)==cellNum ) { // ++tempCT; // continue; // } // //第4Cell,前一Cell,ID沒有取到值,跳下一列 // if( (4-1)==cellNum ) { // if("".equals(personID)) { // break; // } // } // //隱藏欄,跳過 // if(sheet1.isColumnHidden(cellNum)) { // continue; // } HSSFCell cell = row.getCell(cellNum); if(null != cell) { //取出資料 String value = ""; if(cell.CELL_TYPE_NUMERIC == cell.getCellType()) { value = String.valueOf( new Double(cell.getNumericCellValue()).longValue() ); } else if(cell.CELL_TYPE_STRING == cell.getCellType()) { value = cell.getStringCellValue().trim();//去掉值前後半形空白 } System.out.println(value); } } } } }
//=======================================================================

//讀取
POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream((String)filelist.get(data)));
HSSFWorkbook wb = new HSSFWorkbook(pfs);
//取sheet
for(int sheets=0; sheets<wb.getNumberOfSheets(); sheets++){
HSSFSheet sheet1 = wb.getSheetAt(sheets);
HSSFRow row = null;
//取row
//取row System.out.println("共 "+sheet1.getLastRowNum()+" row");//(從0算起) System.out.println("PhysicalNumber共 "+sheet1.getPhysicalNumberOfRows()+" row");//(從1算起) for(int rowNum=0; rowNum<sheet1.getPhysicalNumberOfRows(); rowNum++) {
row = sheet1.getRow(rowNum);
//從第2Row開始讀取
if( (null == row) || ((2-1)>rowNum) ){
continue;
}

// System.out.println("第 "+String.valueOf(rowNum+1)+" row "+String.valueOf(Integer.valueOf(row.getLastCellNum()))+" cell"); System.out.println("共 "+row.getLastCellNum()+" cell"); for(int cellNum=0; cellNum<row.getLastCellNum(); cellNum++) {
HSSFCell cell = row.getCell(cellNum);
if(null != cell) {
//取出資料
if(cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
System.out.println("數cellType= " +cell.getCellType()+ " ,cellValue= " + String.valueOf( new Double(cell.getNumericCellValue()).longValue() ));
} else if(cell.CELL_TYPE_STRING == cell.getCellType()) {
System.out.println("文cellType= " +cell.getCellType()+ " ,cellValue= " + cell.getStringCellValue().replace(" ", "").trim());//先去掉全形空白,再去掉半形空白
}
}
}
}

}
//=======================================================================
//寫出

2011年9月9日 星期五

處理前端多個檔案上傳


//Parse the request
// List<String> fileDescList = new ArrayList<String>();
List<String> fileNameList = new ArrayList<String>();
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
   FileItemStream item = iter.next();
   String name = item.getFieldName();
   InputStream stream = item.openStream();
   if (item.isFormField()) {
       String value = Streams.asString(stream);
out.println(name + "=" + value+"<br>");
//        if ("filedesc".equals(name)) {
//            fileDescList.add(value);
//        }
   } else {
out.println("File field " + name + " with file name " + item.getName() + " detected.");
       // Process the input stream
       String fieldName = item.getFieldName();
       String fileName = item.getName();
       String contentType = item.getContentType();
out.println("fieldName="+fieldName+"<br>");
out.println("fileName="+fileName+"<br>");
out.println("contentType="+contentType+"<br>");
       if (fileName != null && !"".equals(fileName)) {
           fileName= FilenameUtils.getName(fileName);
out.println("fileName saved="+fileName+"<br>");
           fileNameList.add(fileName);
           File uploadedFile = new File(saveDirectory, fileName);
           FileOutputStream uploadedFileStream =
               new FileOutputStream(uploadedFile);
           Streams.copy(stream, uploadedFileStream, true);
       }
   }
}

String msg[] = null;
for (int i = 0; i < fileNameList.size(); i++) {
//    String fileDesc = fileDescList.get(i);
   String fileName = fileNameList.get(i);
// out.println(fileName+":"+fileDesc+"<br>");

String path = saveDirectory + "\\" + fileName;
String fileType = request.getParameter("fileType");//檔案類型
//System.out.println(fileType);

if(fileType.equals("0")) {
msg = new ImportExcelB().insertData_ADDR(path);
} else if(fileType.equals("1")) {
msg = new ImportExcelB().insertData_GOV99(path);
}
}

2011年9月1日 星期四

SQL Exception

起因:
無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CS_AS" 與 "Chinese_Taiwan_Stroke_CI_AS" 之間的定序衝突。

解決: