在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)
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)