请教大家一个问题,现在有个需求是解析excel文件,然后倒入数据库,小弟现在使用的是jxl。excel_01_531_201103.xls     //供货商
excel_02_531_201103.xls     //采购商
excel_03_531_201103.xls     //零售商这个三个excel文件分属于三个不同的类型,他们都属于一种结算文件(class),但是三个excel的格式都不一样,不如第一个有子订单编号,第二个就有异常订单编号,第三个都有。我应该怎么取excel中的列呢?我的意思可能不太清楚,就是不同excel中的列大体相同,部分不同(不同的excel类型可以根据名字中的01,02,03分辨)。本着代码模块块,方便维护的原则,我应该怎么处理呢?现在是根据excel中的行列的值取的,太复杂,求高手!!!

解决方案 »

  1.   


    就是解析excel的时候,所要解析的几个excel文件要插入的一个数据库表中,但是几个excel中列的顺序不一样,应该怎么处理?是分开判断一个个的解析?
      

  2.   

    假设下:3个excel的数据插入一张表中,3个excel有相同的列吗?有的话,数据就冲突了
      

  3.   

    是不是3个excel,每个excel取一列的值,一共取3个列的值放入数据库?
      

  4.   

    类似
    create table my_table(
        no,
        name,
        giftname,
        storename,
        salesname
    )
    excel   excel_01_2011.xls   有no,name,giftname三列
             excel_02_2011.xls   有no,name,storename三列
             excel_03_2011.xls   有no,name,salesname三列当然,实际上有20+列,数据也有string,num,int,double好多种,每个excel中还有多个sheet。如果一个一个判断会很复杂~~~~~~~~~~~~~~~~~~
      

  5.   

    写一个BaseParser接口,里面doParese()方法三个接口实现类,分别实现你三种excel格式的列解析
      

  6.   

    你是将3格Excel的数据插入同一张表中是吧。
      

  7.   

    不用考虑列的问题,你可以将数据全部读出来,用map<String,List or Beans>处理,你要什么你就从map取什么,或者定义个String[],通过预定义的string数组,取map中的value,不知道是不是符合你的需求。或者你再把需求说的更明确些。
      

  8.   


    很麻烦呀,每个excel中还有多个sheet,其中第一个sheet是一个格式,插入table1,其余的sheet是一个格式,插入table2.我很晕~~~~~~~~~~~~~~~~~
      

  9.   

     一个sheet中有20+的列呀,如果数据库表中只需要获取其中的几列而已,干脆就把其余的在Excel中删掉,主要是现整理好excel,然后再写程序...
      

  10.   

    大哥们,excel是别的合作厂商的规范,我是无权改的~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~