工作总结

只是一个工作总结

前言:

今天做了一个工作,就是让我把一个javaBean的所有属性和一个存储在Excel文件中的表格对照,然后提取出有用的数据,存储到数据库中,

一开始我傻瓜式的一个一个比对,一个一个的写sql,但是我一看到一个javaBean中居然有80多个属性,我就开始犹豫了,我开始了思考,要是我可以用工具去实现它,把所有数据都放到一个表中多好,这样然后再利用字符串拼接合成SQL语句,这样岂不是美滋滋!

话是这样说的,但是这些东西是需要技术去作为基础搭建的,因为有过一次关于文档信息整理的因素(虽然只有500条数据,但我还是没有把数据完全清洗干净,最后貌似别人给我返工了,当时的我一开始还好,但是慢慢我发现我脑子陷进去了 )

我说一下需要的技术:

首先就是把javaBean的文件的所有属性获取到:

这个时候就涉及到java的反射:

 

其次,我需要java文件对Excel文件的操作写操作和读取操作

我没有一直用java进行操作,而是选择了Excel的函数,也就是常用的Index()和match()函数:

 index(查找的范围,第几行):返回对应位置的值

match(查找的值,查找的范围,匹配方式):返回指定数值在指定区域中的位置。(匹配的方式:0[精确查找],-1,1)

具体方法如下:

https://baijiahao.baidu.com/s?id=1606405029318751713&wfr=spider&for=pc

然后把数据处理之后,再进行操作

 

然后再读取Excel文件,把读取到的数据进行再处理,一步一步把数据拼接,最后生成sql语句。

 

附录:

//    这是你要获取的类
        WsInvestorCon wsLicenceinfo = new WsInvestorCon();
        for(String str:getFiledName(wsLicenceinfo)){
            System.out.println(str);
        }
    }
// 获取类的所有成员变量
private static String[] getFiledName(Object o){ Field[] fields=o.getClass().getDeclaredFields(); String[] fieldNames=new String[fields.length]; int count =0; for(int i=0;i<fields.length;i++){
// 获取成员变量的属性
// System.out.println(fields[i].getType());

// 获取成员变量名 fieldNames[i]=fields[i].getName(); count++; } System.out.println("一共有属性:"+count);
// 返回一个字符串数组
return fieldNames; }

java操作Excel文件:

这个时候需要注意一点,Excel文档的版本不能太高,因为java操作Excel文件的api版本比较老:

需要导入的依赖:

        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
        </dependency>

然后:

public class JavaTest {
    public static void main(String[] args) {
        /**
         * 获取当前对象的所有成员变量
         */
        WsInvestorCon wsLicenceinfo = new WsInvestorCon();
        for(String str:getFiledName(wsLicenceinfo)){
            System.out.println(str);
        }
        System.out.println("------------------------------------------");
        /**
         * 读取Excek文件
         */
        executeExcel("C:\\Users\\Administrator\\Desktop\\2.xls");
    }

    /**
     * 获取类中所有的成员变量
     * @param o
     * @return
     */
    private static String[] getFiledName(Object o){
        Field[] fields=o.getClass().getDeclaredFields();
        String[] fieldNames=new String[fields.length];
        int count =0;
        for(int i=0;i<fields.length;i++){
//            System.out.println(fields[i].getType());
            fieldNames[i]=fields[i].getName();
            count++;
        }
        System.out.println("一共有属性:"+count);
        return fieldNames;
    }

    /**
     * 读取Excel文件所有的信息
     * @param fileName
     */
    private static void executeExcel(String fileName){
        //文件对象
        Workbook book;
        //工作表对象
        Sheet sheet;
        //行对象
        Cell cell;
        try {
            //hello.xls为要读取的excel文件名
            book= Workbook.getWorkbook(new File(fileName));
            //获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
            sheet=book.getSheet(0);
//            获取每一行的单元格
            int i =0;
            int j=0;
            while (true){
                j=0;
                cell = sheet.getCell(j,i);//(列,行)   这里可以根据自己的逻辑来获取数据
                if("".equals(cell.getContents())==true) {    //如果读取的数据为空
                    break;
                }
                System.out.println(cell.getContents());
                i++;
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

 

最后,越来越觉得需要学习的太多了。

posted @ 2020-02-17 22:24  Anxc  阅读(197)  评论(0编辑  收藏  举报