用jxl读Excel文件

JXL (Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。JXL 的主页是:http://www.andykhan.com/jexcelapi/,可以在这里下载到它的最新的版本。
你可以分别通过如下命令
java -jar jxl .jar -xml test.xls
java -jar jxl .jar -cvs test.xls
以xml和cvs格式查看test.xls,这是因为JXL 作者实现了一个用来演示的jxl .demo.Demo的类。

当然我们使用JXL 主要是用它来动态读写Excel文件。现在就来看看JXL 在对Excel的读和写上都提供了那些支持。
先来看看Excel文件中都有写上面对象
1 文件对象 2工作簿对象 3 单元格对象。
相应的在JXL 中就有Workbook,Sheet ,Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。
我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
1选取Excel文件,2选择工作簿,3选择Cell,4读取信息。

 

public static List<Map<String, String>> readExcelFile(String filePath,int sheetNum){
		List<Map<String, String>> ls = new ArrayList<Map<String,String>>();
		Workbook book=null;
		try{
			//读Excel文件
			book=Workbook.getWorkbook(new File(filePath));
			//获得工作表个数
			Sheet sheet=book.getSheet(sheetNum);
			for (int i = 0; i < sheet.getRows(); i++) {
				//获得行
				Cell[] row = sheet.getRow(i);
				Map<String, String> rowMap=new HashMap<String, String>();
				for (int j = 0; j < row.length; j++) {
					//获得单元格内容
					String content=row[j].getContents();
					if(StringUtils.isNotBlank(content)){
						//因为从0开始,所以要+1
						rowMap.put(String.valueOf(j+1),content);
					}
				}
				if(!rowMap.isEmpty()){
					ls.add(rowMap);
				}
			}
		}catch (BiffException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(book!=null){
				book.close();
			}
		}
		return ls;
	}

 Cell提供了一个getType方法能够返回单元格的类型信息,同时JXL 提供了一个CellType类用来预设Excel中的类型信息,而且JXL 提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格。所以我们可以这样写:
if (c2.getType() == CellType.NUMBER)
{
  NumberCell nc = (NumberCell) c2;
  numberb2 = nc.getValue();
}

如果你是要读取Excel中的图片,那么可以用Sheet的getDrawing(int i)方法返回一个Image对象,通过Image对象的
getImageData()或者getImageFile()即可访问到你需要的图片。
如过你是要把图片写入到Excel中,那么可以用WritableSheet的addImage(WritableImage image)
方法写入,其中WritableImage可以用构造函数直接构造。
(WritableImage(double x, double y, double width, double height, java.io.File image)

你可能感兴趣的:(Excel)