1. 程式人生 > >JAVA反射機制示例,讀取excel資料對映到JAVA物件中

JAVA反射機制示例,讀取excel資料對映到JAVA物件中

import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;


import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;






/**
 * 讀取excel資料對映到指定bean中
 * @author 
 * May 30, 2016 5:38:33 PM
 */
public class MyExcelReader {
    /**
     * 
     * @author 
     * May 30, 2016 5:39:01 PM
     * @param beginRow
     * @param beanpros
     * @param classPathName
     * @param results
     * @param sheet
     * @return
     */
    public String getDatasByrc(int beginRow,Map<Integer,String> beanpros,String classPathName,List<Object> results,Sheet sheet){
        try {
            Class clazz = Class.forName(classPathName); 
            Set<Integer> set = beanpros.keySet() ;
            Row row = sheet.getRow(beginRow);
            while(row!=null) {
                Object obj = clazz.newInstance() ;
                for(Integer key:set){
                    String value = "" ;
                    if(row!=null){
                        Cell cell = row.getCell(key) ;
                        if(cell!=null){
                            int type = cell.getCellType() ;
                            if(type == Cell.CELL_TYPE_STRING){
                                value = cell.getStringCellValue() ;
                            }else if(type==Cell.CELL_TYPE_NUMERIC||type==Cell.CELL_TYPE_FORMULA){
                                value = String.valueOf(cell.getNumericCellValue());
                            }else if(type==Cell.CELL_TYPE_BOOLEAN){
                                value = String.valueOf(cell.getBooleanCellValue()) ;
                            }
                        }
                    }
                    PropertyDescriptor pd = new PropertyDescriptor(beanpros.get(key),clazz);
                    Method wM = pd.getWriteMethod();
                    wM.invoke(obj, value);
                }
                results.add(obj);
                row = sheet.getRow(++beginRow);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "用於接受結果的bean不存在";
        }
        
        return null ;
    }
    
    public static void main(String[] args) {
        MyExcelReader mer = new MyExcelReader() ;
        try {
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(new File("D:/testimport.xls")));
            Sheet sheet = wb.getSheetAt(0);
            List<Object> results = new ArrayList<Object>() ;
            Map<Integer,String> beanpros = new HashMap<Integer, String>() ;
            beanpros.put(0, "username");
            beanpros.put(1, "password");
            String s = mer.getDatasByrc(0, beanpros, "SysUser", results, sheet);
            if(s==null){
                for(Object obj:results){
                    SysUser bean = (SysUser) obj ;
                    System.out.println(bean.getUsername()+"---"+bean.getPassword());
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }

}

public class SysUser {


    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

Excel資料

輸出結果:


相關推薦

JAVA反射機制示例讀取excel資料對映JAVA物件

import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import j

SpringBoot利用java反射機制實現靈活讀取Excel表格資料和匯出資料Excel表格

如果直接把固定Excel表格模板中的資料匯入資料庫,直接將Excel中的資料讀取出來,再存入資料庫中即可,將資料匯出至固定的Excel模板方法類似。但是,有時候,開發製作的模板與客戶需要的往往有些許差別(欄位排版、欄位數量等)。為了實現匯入匯出的靈活性,將利用java的反射機

利用java反射機制實現讀取excel表格資料

如果直接把excel表格中的資料匯入資料庫,首先應該將excel中的資料讀取出來。 為了實現程式碼重用,所以使用了Object,而最終的結果是要獲取一個list如List<User>、List<Book>等,所以需要使用泛型機制去實現。下面會給出程式

Java使用poi讀取excel資料excel可能很大先轉換為csv再讀取

————————————配置———————————— jdbc.properties中加入: excelUrl=/……xlsx檔案目錄路徑/ (excelUrl + “xxxx.xlsx” 為完整路徑) 匯入poi-3.16下的6個jar包,poi-3.16/l

javajava反射機制動態獲取對象的屬性和對應的參數值並屬性按照字典序排序Field.setAccessible()方法的說明【可用於微信支付 簽名生成】

modifier 直接 this 字段值 1-1 讓我 toupper ima play 方法1:通過get()方法獲取屬性值 package com.sxd.test.controller; public class FirstCa{ private

Java反射機制能夠獲取的信息與應用

rri 代理 pan [] reflect 語言 子類 list tro 一、什麽是Java反射機制? 【1】反射機制是在運行狀態中,對於任何一個類,都能夠知道這個類的所有屬性和方法; 【2】對於任意一個對象,都能夠調用它的任意一個屬性和方法; 像這種動態獲取類的信

Java學習總結(十四)——java反射機制利用反射動態創建對象

Java反射 動態創建對象 一.Java反射機制1.什麽是反射:反射就是把Java類中的各種成份影射成一個個的Java對象。例:一個類有:成員變量,方法,構造方法等,包等等信息,利用反射技術可以對一個類進行剖析,把各個組成部分影射成一個個對象。2.Java反射常用類:(1)Class類—可獲取類和類的

java讀取Excel資料

Java讀取Excel中的資料 一 下載匯入java.jxl.jar 二 新建一個Excel表格並且在裡面有內容(記得另存為97-2003版本,否則會出現 Unable to recognize OLE stream  異常) 三 編輯程式碼如下   如果有什麼寫的

通過java反射機制Method獲取出來的引數名為

記錄2018年我遇見的一個大坑!!!!! 前言 具體介紹 出現問題 解決 前言 最近我一直在嘗試手寫一個簡單的框架,其中,在補全mvc框架的時候,遇到了Method方法關於版本以及一些奇奇怪怪的坑。 具體介紹

Spring學習5(1):IoC容器之IoC概述JAVA反射機制資源訪問器

spring學習5(1)  在經過了對spring框架基本開發的瞭解以及對spring boot流程的學習,《精通spring4.x…》這本書正式開始了spring的講解,我也跟隨著這本書的腳步進行學習。 IoC概述  首先需要學習的是spring的IoC技術,

Java使用Poi讀取Excel資料(exor)

讀取Excel使用一個小工具exor exor是一個開源專案,封裝了一些poi讀取excel的操作,可以讀取excel資料並格式化為二維結構 xlsx和xls格式都可以讀取 exor的依賴:commons-collections4-4.2、poi-3.17、poi-oo

java反射機制註解類解讀

1.元資料的英文關於資料的組織,域資料及其關係的資訊,簡言之,元資料就是關於資料的資料(英文:間位),不同的領域有不同的理解:在軟體構造領域,元資料被定義為:。在程式中不是被加工的物件,而是通過其值的改變來改變程式的行為的資料它在執行過程中起著以解釋方式控制程式行為的作用在程

利用Java反射機制讀取註解

java程式碼:  package ORM; @SxtTable("tb_student") public class SxtStudent { @SxtField(columnName="id", type="int", length=10) private i

女同事半夜要我用Python讀取Excel資料我用一行程式碼搞定!

分享一個實用問題,用python讀取Excel並儲存字典,如何做?關注薇信工宗號:程式設計師大牛,”即可獲取數十套Python學習資料! 下面是該同學問題截圖和程式碼 程式碼截圖是下面這樣的。學習資料也可以加下Python扣扣裙:304零五零799自己下載學習下

通過java反射機制獲取物件的屬性和值(包括所有繼承的父類)

      java的反射機制提供了兩種方法:    getDeclaredFields() :該方法能獲取到本類的所有屬性,包括private,protected和public,但不能獲取到繼承的父類的屬性。    getFields():既能獲取本類的屬性也能得到父類的

Java讀取Excel資料:基於Apache POI(一)

Java讀取Excel資料:基於Apache POI(一) Java本身不支援直接讀取微軟的Excel表格資料。第三方的Apache提供了一個庫POI用以支援Java讀寫Excel表格資料。 首先需要到Apache官網下載POI的庫,下載連結地址:https://poi.apache.org

這是轉載的 java反射機制與原理原作者講解的相對很通俗易懂

轉自這裡 Java的反射機制是Java特性之一,反射機制是構建框架技術的基礎所在。靈活掌握Java反射機制,對大家以後學習框架技術有很大的幫助。 那麼什麼是Java的反射呢?        大

python使用xlrd讀取excel資料作為requests的請求引數並把返回的資料寫入excel

實現功能: 從excel中的第一列資料作為post請求的資料,資料為json格式;把post返回的結果寫入到excel的第二列資料中 每一行的資料都不一樣,可實現迴圈呼叫 # !/usr/bin/env python # -*- coding:utf-8 -*- #import xlwt

Java反射機制--是什麼為什麼怎麼用

1.反射是什麼 首先看書要理解反射,很難完全理解,這關係到Java的語言特性,jvm的記憶體細節,當初我看反射,就像高票答案那樣,照著寫一遍,結果是你並沒有理解,你只是照貓畫虎,要想真正理解,我建議題主,不斷深入探究,當你踩得足夠深回過頭來,你會柳暗花明! 這裡我不打算像

python使用xlrd讀取excel資料整數和日期變小數的解決辦法

想讓excel資料返回一個字串字典list,造了一個excel。資料如下: 用程式碼讀取後發現整型和日期變成了小數(123456變成了123456.0,2017/5/20 5:20變成了42875.22222222222): 有個比較簡單的解決辦法就是在數字和日期的