poi 导入excel 数据转对象(一)

2015-07-20 17:06:35 · 作者: · 浏览: 8

poi 导入excel 数据转对象

?

package org.rui.xls;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.rui.bean.User;

public class ExportXls
{
	public static void main(String[] args) throws FileNotFoundException,
			IOException
	{

		List
  
    list = new LinkedList
   
    (); String file = "C:/Users/lenovo/Downloads/营销空间数据导入模板.xls"; // 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file)); // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1") // HSSFSheet sheet = workbook.getSheet("Sheet1"); HSSFSheet sheet = workbook.getSheetAt(0); // 读取一行 // HSSFRow row = sheet.getRow(0); // it读取行 Iterator
    
      itRow = sheet.rowIterator(); int j = 0; while (itRow.hasNext()) { HSSFRow row = itRow.next(); // 读行格 Iterator
     
       it = row.cellIterator(); int cellIndex = 0; User user = new User(); while (it.hasNext()) { HSSFCell ce = it.next(); // 检查是否合法 if (j == 0) { String titleName = ce.getStringCellValue(); Class clz = user.getClass(); if (!isOk(clz, titleName)) { System.out.println("表格格式不符合导入的数据格式!"); return; } } else { switch (cellIndex) { case 0:// 第一格 Double d = ce.getNumericCellValue(); Integer id = Integer.parseInt(new DecimalFormat("0") .format(d)); user.setId(id); break; case 1: user.setName(ce.getStringCellValue()); break; case 2: // DecimalFormat df = new DecimalFormat("#.00"); // String Stringd = df.format(ce.getNumericCellValue()); user.setPrice(ce.getNumericCellValue()); break; case 3: user.setDate(ce.getDateCellValue()); break; default: break; } } cellIndex++; } if (j != 0) { list.add(user); } j++; } System.out.println("============================================="); for (User u : list) { System.out.println(u.getId() + " \t " + "name:" + u.getName() + " \t " + u.getPrice() + " \t " + u.getDate()); } } /** * 检查表格是否和对象一致 * * @param clz * @param titleName * @return */ public static boolean isOk(Class clz, String titleName) { boolean isExist = false; Field[] fa = clz.getDeclaredFields(); for (int i = 0; i < fa.length; i++) { // System.out.println(fa[i].getName()); if (titleName.equals(fa[i].getName())) { isExist = true; break; } } return isExist; } } /** * output: * ============================================= 1 name:粘地 1.0 Fri Oct 10 00:00:00 CST 2014 2 name:小夺 555.0 Fri Oct 10 00:00:00 CST 2014 3 name:无可奈何花落去 66.0 Fri Oct 10 00:00:00 CST 2014 4 name:夺 88.88 Fri Oct 10 00:00:00 CST 2014 5 name:魂牵梦萦 55.0 Fri Oct 10 00:00:00 CST 2014 * ***/ 
     
    
   
  

?

?

//之前例子,这样看比较好理解

?

					// 读取数据
//					if (HSSFCell.CELL_TYPE_NUMERIC == ce.getCellType()) {
//
//						/** 在excel里,日期也是数字,在此要进行判断 */
//						if (HSSFDateUtil.isCellDateFormatted(ce)) {
//							DateFormat format = new SimpleDateFormat(
//									"yyyy/MM/dd HH:mm:ss");
//							System.out.println("date:"
//									+ format.format(ce.getDateCellValue()));
//						} else {
//							System.out.println("numeric:"
//									+ ce.getNumericCellValue() + "");
//						}
//					} else if (HSSFCell.CELL_TYPE_STRING == ce.getCellType()) {
//						System.out.println("x:" + ce.getStringCellValue());
//		


?

?

package org.rui.bean;

import java.lang.reflect.Field;
import java.util.Date;

public class User
{

	private Integer id;
	private String name;
	private Double price;
	private Date date;
	

	public Integer getId()
	{
		return id;
	}

	public void setId(Integer id)
	{