• 工作总结


    只是一个工作总结

    前言:

    今天做了一个工作,就是让我把一个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();
            }
        }
    }

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

  • 相关阅读:
    C++之路进阶——codevs2439(降雨量)
    C++之路进阶——codevs2933(诗人小G)
    C++之路进阶——bzoj2879(美食节)
    C++之路进阶——bzoj1934(善意的投票)
    C++之路进阶——bzoj3876(支线剧情)
    C++之路进阶——codevs1281(Xn数列)
    八数码难题
    道路游戏
    细胞分裂
    最长链
  • 原文地址:https://www.cnblogs.com/Anxc/p/12324060.html
Copyright © 2020-2023  润新知