JExcel / 小试牛刀

目前微软Office套件中的Excel仍然是电子表格数据处理的"王者",几乎所有玩过电脑的人都知道Excel之强大.当前的开发语言基本上都支持对Excel的操作,比如读取Excel中的数据、新增Excel电子表格,更新 Excel表格中的数据等操作,这些基本功能都是可以再程序中动态来控制的。


JExcel是Java对Excel操作封装的一个开源框架,通过它可以很简单的就能实现对Excel增、删、改、查等功能,而且使用JExcelAPI 在非操作系统中同样可以对Excel进行处理,加上JExcelAPI是使用 Java语言开发的,所以我们在WEB应用中同样可以通过Servlet或Jsp来调用JExcel的API对Excel数据表继续访问和相关操作。

 

JExcelAPI的最新版本:jexcelapi_2_6_10.zip
下载地址:http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.10/jexcelapi_2_6_10.zip

 

主要功能:

  1. 从Excel  95 、 97 、2000等格式的文件中读取数据
  2. 读取Excel公式(可以读取Excel 97以后的公式)
  3. 生成Excel数据表(格式为Excel 97 )
  4. 支持字体、数字、日期的格式化;
  5. 支持单元格的阴影操作,以及颜色操作
  6. 修改已经存在的数据表
  7. 能够读取图表信息(目前只支持PNG格式的图片)

 

package com.crazyidea.operate;

import java.io.File;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
 * JExcelAPI小试牛刀
 * @author Alan
 * 时间:2009年8月22日
 */
public class JExcelOperate {
	
	/**
	 * 通过exl读取Excel中的数据
	 * @param eFilePath  文件路径(相对路径或绝对路径)
	 */
	public static void readExcel(String eFilePath){
		//判断文件路是否为空
		if (eFilePath!=null && !eFilePath.equals("")) {
			
			//判断文件是否存在
			File eFile=new File(eFilePath);
			if (eFile.exists()) {
				Workbook wb=null;
				try {
					//Workbook的构造器是受保护的,所以我们只能通过它的工厂方法
					//来创建一个Workbook对象
					wb=Workbook.getWorkbook(eFile);
					if (wb!=null) {
						//可以通过Workbook中的两个方法来获取Excel中的某一指定的工作,
						//一个是通过索引(从0开始),另一个是通过工作表的名称来获取
						//Sheet sheet=wb.getSheet(0);
						Sheet sheet=wb.getSheet("newSheet");
						if (sheet!=null) {
							//逐行逐列的读取Excel中的数据
							for(int i=0;i<sheet.getRows();i++){
								for(int j=0;j<sheet.getColumns();j++){
								      System.out.print(sheet.getCell(j, i).getContents());
								}
								System.out.println();
							}
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				} finally{
					if (wb!=null) {
						wb.close();
					}
				}
			}
		}
	}	

	/**
	 * 创建Excel文件,并写入数据
	 * @param efilePath 将要创建的Excel文件完整路径
	 */
	public static void writeExcel(String efilePath){
		//文件路径合法性验证
		if (efilePath!=null && !efilePath.equals("") 
				&& efilePath.toUpperCase().endsWith(".XLS")) {
			WritableWorkbook wwb=null;
			try {
				//创建工作薄,注:该对象为Workbook的子类
				wwb=Workbook.createWorkbook(new File(efilePath));
				//创建工作表
				WritableSheet ws=wwb.createSheet("newSheet", 0);
				//向工作表中添加单元格
				//Label构造:一参:列	二参:行	 三参:单元格内容
				Label lblUid=new Label(0,0,"编号");
				Label lblUname=new Label(1,0,"用户名");
				Label lblUpass=new Label(2,0,"密码");
				ws.addCell(lblUid);
				ws.addCell(lblUname);
				ws.addCell(lblUpass);
				
				Label lblUid1=new Label(0,1,"1001");
				Label lblUname1=new Label(1,1,"Tom");
				Label lblUpass1=new Label(2,1,"tompassword");
				ws.addCell(lblUid1);
				ws.addCell(lblUname1);
				ws.addCell(lblUpass1);
				
				Label lblUid2=new Label(0,2,"1002");
				Label lblUname2=new Label(1,2,"Jack");
				Label lblUpass2=new Label(2,2,"jackpassword");
				ws.addCell(lblUid2);
				ws.addCell(lblUname2);
				ws.addCell(lblUpass2);
				
				//写入工作薄,并关闭一释放内存
				wwb.write();
				wwb.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		JExcelOperate.writeExcel("src\\new_excel.xls");
		JExcelOperate.readExcel("src\\new_excel.xls");
	}
}

 

写入Excel的效果:

写入Excel

 

读取Excel并打印到控制台的效果:

读出打印到控制台的效果

 

 

 

你可能感兴趣的:(工作,Excel,单元测试,J#,Office)