jxl读取excel文件操作

在进行测试之前,首先在网上下载jxl.jar文件,放到classpath路径下或者放到你的工程中(效果一样,其实就是要在classpath能够找到这个jar包)

好了,下面现在开始做例子


第一步:创建excel文件 CreateExcel.java

package com.lrb.jxl.test;

import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class CreateExcel {
	
	public static void main(String[] args) {
		try{
			//创建并打开文件c:\\test.xls
			WritableWorkbook book = Workbook.createWorkbook(new File("C:\\test.xls"));
			//生成名为“第一页”的工作表,参数0表示这是第一页
			WritableSheet sheet  = book.createSheet("第一页", 0);
			//在Label对象的构造子中指名单元格位置是第一行第一列(0,0)
			//以及单元格内容“test”
			Label l = new Label(0,0,"test");
			//l.setString("this is name");  设置此格内容
			//将定义好的单元格添加到工作表中
			sheet.addCell(l);
			/**
			 * 生成一个保存数字的单元格 
			 * 必须使用Number的完整包路径,否则有语法歧义 
			 * 单元格位置是第二列,第一行,值为3.1415926
			 */
			Number number = new Number(1,0,3.1415926);
			sheet.addCell(number);
			book.write();
			book.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}
第二步:更新excel文件 UpdateExcel.java
package com.lrb.jxl.test;

import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WritableFont.FontName;

public class UpdateExcel {

	public static void main(String[] args) {
		try {
			//excel获得文件
			Workbook wb = Workbook.getWorkbook(new File("C:\\test.xls"));
			//打开一个文件的副本,并且指定数据写回到原文件
			WritableWorkbook book = Workbook.createWorkbook(new File("c:\\test.xls"),wb);
			//添加一个工作表
			//WritableSheet sheet = book.createSheet("second sheet",1);
			WritableSheet sheet = book.getSheet("second sheet"); //用于第二次读取使用
			/**
			 * 单元格操作
			 */
			//合并单元格操作(合并第一列第一行到第一列第六行的所有单元格)。合并后的单元格不能再次进行合并,否则会触发异常
			sheet.mergeCells(0, 0, 0, 5);
			//设置第一行的高度为200
			sheet.setRowView(0, 200);
			//设置第一列的宽度为20
			sheet.setColumnView(0, 30);
			/**
			 * 字符串格式化操作
			 */
			//指定字串格式:字体为TIMES,字号16,加粗显示
			WritableFont font = new WritableFont(WritableFont.TIMES,12,WritableFont.BOLD);
			//WritableCellFormat 指定单元格的各种属性
			WritableCellFormat format1 = new WritableCellFormat(font);
			// 把水平对齐方式指定为居中 
			format1.setAlignment(jxl.format.Alignment.CENTRE);
			// 把垂直对齐方式指定为居中 
			format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
			//Label类的构造子,指定了字串被赋予那种格式
			sheet.addCell(new Label(0,0,"第二页测试数据",format1));
			book.write();
			book.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
第三步:读取excel打印   ReadExcel.java
package com.lrb.jxl.test;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;

import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ReadExcel {

	public static void main(String[] args) throws BiffException, IOException {
		//打开文件
		Workbook book = Workbook.getWorkbook(new File("C:\\test.xls"));
		//获得第一个工作表对象
		Sheet sheet = book.getSheet(0);
		//如果知道工作表的名字,也可使用如下方法获得指定名称的工作表对象
		Sheet sheet1 = book.getSheet("second sheet");
		//获得第一列第一行的单元格
		Cell cell = sheet.getCell(0, 0);
		String result = cell.getContents();
		//获得工作表名称
		System.out.println("第一个工作表名称:"+sheet.getName());
		//获得列数
		System.out.println("列数:"+sheet.getColumns());
		//获得行数
		System.out.println("行数"+sheet.getRows());
		System.out.println("根据下标取得第一列第一行数据:"+result);
		/**
		 * 在用jxl解析excle的时候,如果excel中有小数,
		 * 如果小数点后的位数多的化,可能会用科学技术法来显示结果,
		 * 为了避免显示科学计数法,可以通过两个办法来解决
		 * 1:将excel的小数的cell格的格式改成字符串型。
		 * 2:用下面的程序处理。
		 */
		Cell cel = sheet.getCell(1,0);
		String data = cel.getContents();
		if(cel.getType() == CellType.DATE){
			DateCell dc = (DateCell)cel;
			data = new SimpleDateFormat("YYYY-MM-DD").format(dc.getDate());
		}else if(cel.getType() == CellType.NUMBER || cel.getType() == CellType.NUMBER_FORMULA){
			NumberCell nc = (NumberCell) cel;
			data = ""+nc.getValue();
		}
		
		System.out.println("第二列第一行数据:"+data);
		System.out.println("=====================================");
		
		Cell cell1 = sheet1.getCell(0, 0);
		String result1 = cell1.getContents();
		//获得工作表名称
		System.out.println("第一个工作表名称:"+sheet1.getName());
		//获得列数
		System.out.println("列数:"+sheet1.getColumns());
		//获得行数
		System.out.println("行数"+sheet1.getRows());
		System.out.println("根据名称得到sheet数据第一列第一行:"+result1);
		book.close();
	}
}


读取后,控制台的打印结果为:
第一个工作表名称:第一页
列数:2
行数1
根据下标取得第一列第一行数据:test
第二列第一行数据:3.1415926
=====================================
第一个工作表名称:second sheet
列数:1
行数6
根据名称得到sheet数据第一列第一行:第二页测试数据


相关内容全部在注释中写明,可根据需要进行自行修改。
题外话:jxl目前不支持2007及其以后的版本,如果需要可以使用POI。如果你是2007或以上版本,切记不可通过直接修改文件后缀名来使其支持文件的读写操作。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值