jxl操作excel


操作excel的工具有jxl和poi2种,这里使用jxl,

两种的区别,在操作比较简单的情况下采用jxl速度快一点,(例如只读)。在操作比较复杂的情况下用poi,因为功能更强大


1,首先导入jxl.jar


2,解析工具类


 

package com.hl.zoneSystem_v01.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;

import com.hl.zoneSystem_v01.domain.Files;
import com.hl.zoneSystem_v01.domain.User;

/** 
 * @ClassName: ExcelUtils 
 * @Description: 解析批量导入用户的excel工具类 
 * @project: zoneSystem_v01
 * @package: com.hl.zoneSystem_v01.utils
 * @author: hl
 * @version: V1.0
 * @since: JDK 1.6.0_21
 * @date: 2014-5-4 下午1:05:16  
 */
public class ExcelUtils {

	//log4j
	public static Logger logger = Logger.getLogger(ExcelUtils.class);
	
	//导入用户excel,行、列的起始索引
	private static final int ROW_BEGIN_INDEX = 2;//开始行索引
	private static final int COLUMN_END_INDEX = 5;//结束列索引
	
	//excel表格索引列对应的user属性值
	private static final String [] Propertys = {"name","uid","sex","province","city","email"};

	
	
	
	/*
	 * 将上传的excel文件 解析到装有user集合的list中
	 */
	public static List<User> analysis2User(File file) {
		
		//
		InputStream in = null;
		Workbook wb = null;
		List<User>users = new ArrayList();
		try{
			if (file == null) {
				throw new Exception("文件为空!");
			}
			
			//开始解析
			in = new FileInputStream(file);
			wb = Workbook.getWorkbook(in);
			//获取excel文档中所有工作表
			Sheet sheets[] = wb.getSheets();
			if (sheets != null) {
				//循环解析   循环excel中所有工作表
				for (int i = 0; i < sheets.length; i++) {
					User user = null;
					//循环工作表中的行
					for(int j=ROW_BEGIN_INDEX;j<sheets[i].getRows();j++){
						user = new User();
						boolean tag = true;
						//循环行中的列
						for(int k=0;k<=COLUMN_END_INDEX;k++){
							//取得当前x、y坐标下单元格的数据
							Cell cell = sheets[i].getCell(k, j);
							String val = cell.getContents();
							//判断是否为空,导入的数据必须完整,如行中有一列值为空,则该列数据不导入
							if(val==null || "".equals(val)){
								tag = false;
							}else{
								//利用beanutils反射,给对象属性赋值
								BeanUtils.setProperty(user,Propertys[k],val);
							}
							logger.debug("当前单元格的值是= " + val);
						}
						
						//列循环完毕,将user放入list中
						if(tag==true){
							users.add(user);
						}
					}
					
				}
			}
			
			
			
			return users;
		}catch(Exception e){
			logger.error(e);
		}finally{
			//关闭资源
			if (wb != null) {
				wb.close();
			}
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					logger.error(e);
				}
			}
			//删除文件
			if(file != null){
				file.delete();
			}
		}
		//最后返回null
		return null;
	}
	
	
	
	

	

}


--------------------------------------------

解决jxl读取日期格式时间的问题

Cell cell = sheet0.getCell(col,row);
String cellcon="";
if(cell.getType() == CellType.DATE){
  DateCell dc = (DateCell)cell;
  Date date = dc.getDate();
  SimpleDateFormat ds = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
          cellcon = ds.format(date);
}
用以上方法,判断是否是日期类型,然后用Date获取并重新格式化 保存为字符串即可






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值