Posted on 2009-04-12 13:57
ytl 阅读(417)
评论(0) 编辑 收藏 所属分类:
Others
Java处理Excel数据有很多方式,如Apache的POI或JXL等.
我首先给出一个Excele数据的读入的方式(使用的是jxl.jar包)
package com.ccniit.readexcel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ExcelHander {
public static String[] getColName(String desc) {
InputStream is = null;
String[] colNames = null;
try {
is = new FileInputStream(new File(desc));
Workbook wb = Workbook.getWorkbook(is);
Sheet sheet = wb.getSheet(0);
int cols = sheet.getColumns();
colNames = new String[cols];
for (int i = 0; i < cols; i++) {
colNames[i] = sheet.getCell(i, 0).getContents();
// System.out.println("列名: " + colNames[i]);
}
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return colNames;
}
public List<Map<String, Object>> readExcel(String desc) {
List<Map<String, Object>> datas = null;
try {
InputStream is = new FileInputStream(new File(desc));
Workbook wb = Workbook.getWorkbook(is);
if(wb == null){
return null;
}
Sheet sheet = wb.getSheet(0);
int cols = sheet.getColumns();
int rows = sheet.getRows();
datas = new ArrayList<Map<String, Object>>();
for (int i = 1; i < rows; i++) {
Map<String, Object> data = new HashMap<String, Object>();
for (int j = 0; j < cols; j++) {
String key = sheet.getCell(j, 0).getContents();
// System.out.println("key:" + key);
Object value = (Object) sheet.getCell(j, i).getContents();
// System.out.println("value:" + value.toString());
data.put(key, value);
}
datas.add(data);
}
is.close();
wb.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return datas;
}
}