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 { Listlist = 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) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public static void main(String[] args) { Class clz = User.class; Field[] fa = clz.getDeclaredFields(); for (int i = 0; i < fa.length; i++) { System.out.println(fa[i].getName()); } } }