在Java中利用JCOM實(shí)現(xiàn)仿Excel編程詳解

字號:

在JAVA中使用JCOM和JXL注意要點(diǎn):
    1. 在你的lib下要有jdom-1.0.jar,jxl-2.5.5.jar,jcom-2.2.4.jar,jcom.dll。
    2. 要把jcom.dll同時(shí)放到你JDK的bin目錄下或者放到系統(tǒng)盤的windows下(推薦放到JDK的BIN下)
    把上面的JAR包都放好后開始寫應(yīng)用中的工具類(申明一下在JCOM中得到的都是IDispatch對象,以下還會拋出一個(gè)JComException的異常)
    (1)首先應(yīng)該判斷一個(gè)傳進(jìn)來的路徑是Word 或是 Excel 還是其他的東東。
    if(path.endsWith(".doc")){
    ......
    }
    注:如果是excel后綴是".xls";
    (2)然后你要有兩個(gè)對象:
    ReleaseManager rm = new ReleaseManager();
    IDispatch xlsApp=null;
    注:ReleaseManager相當(dāng)于一個(gè)容器,與你機(jī)器上的所有JCOM組建交互,根據(jù)你傳的參數(shù)他會去尋找你機(jī)器上的所有JCOM能操作的組建;
    IDispatch 可以理解為一個(gè)對象,所有的東東都是對象;
    (3)你要讓他知道你要和EXCEL交互你得這樣做
    xlsApp = new IDispatch(rm, "Excel.Application");
    (4)接著要得到一個(gè)Workbooks(工作薄)
    IDispatch excel = (IDispatch) xlsApp.get("Workbooks");
    (5)設(shè)置當(dāng)前對象是否可見
    xlsApp.put("Visible", new java.lang.Boolean(false));
    (6)得到工作薄以后要打開
    IDispatch workbook = (IDispatch) excel.method("open", new Object[] { FilePath(EXCEL存放的路徑) });
    (7)判斷文件是否存在如果存在則刪除
    File f = new File(outPath);
    if (f.exists())
    f.delete();
    (8)將工作薄另存為
    workbook.method("saveAs", new Object[] { outPath, new Integer(9) });
    (9)獲得一個(gè)工作薄(workbook)下的所有工作表(Sheets)
    IDispatch sheets = (IDispatch) workbook.get("Sheets");
    注:得到的是一個(gè)數(shù)組;
    (10)獲得工作表(Sheets)的總數(shù)
    int sheetsCount = Integer.parseInt(sheets.get("Count").toString());
    (11)得到每個(gè)工作表(Sheets)的名稱
    for(int sheetInx=1;sheetInx <= sheetsCount;sheetInx++) {
    IDispatch sheet = (IDispatch) sheets.get("item", new Object[] { new Integer(sheetInx) });
    String sheetName = sheet.get("name").toString();
    }
    注意:excel都是從1開始遍歷 而不是從0開始;
    遍歷工作表除了傳索引還能傳工作表名稱:
    IDispatch sheet = ((IDispatch) sheets.get("item", new Object[] { sheetName }));
    (12)獲得正在活動的工作表(sheet)
    IDispatch asheet = (IDispatch) xlsApp.get("ActiveSheet");
    注:xlsApp是從ReleaseManager里面獲得EXCEL對象的一個(gè)IDispatch對象
    如果是獲得sheets要先獲得工作薄(Workbook)然后用工作薄(Workbook)獲得他下的所有工作表(sheets)