java excel导入

poi导入:

//得到excel中数据
public String[][] ReadExcleUnlockAndLock(FormFile file) throws FileNotFoundException, IOException,AppException {

        List<String> lists = new ArrayList<String>();
        String fileName = file.getFileName();
        Workbook workbook = null;
        Sheet sheet = null;
        if (fileName.endsWith("xls")) {
            workbook = new HSSFWorkbook(file.getInputStream());
            sheet = workbook.getSheetAt(0);
        } else if (fileName.endsWith("xlsx")) {
            workbook = new XSSFWorkbook(file.getInputStream());
            sheet = workbook.getSheetAt(0);
        }
        if (sheet==null) {
            //return "导入文件的内容为空!";
            return null;
        }
        String message = "";

        int coloumNum=sheet.getRow(0).getPhysicalNumberOfCells();//获得总列数
        int rowNum=sheet.getLastRowNum()+1;//获得总行数
        String[][] excelValue = new String[rowNum][coloumNum];//获取excel行例
        for (int i = 0; i < rowNum; i++) {
            for (int j = 0; j < coloumNum; j++) {
                Row row=sheet.getRow(i);
                if (row.getRowNum() == 0) {
                    break;
                }
                // 跳过空行
                Cell cell = row.getCell(j);
                if (cell==null) {
                    excelValue[i][j] = "";
                    continue;
                }

                switch (cell.getCellType()) {

                case Cell.CELL_TYPE_STRING://字符串
                    cell.setCellType(cell.CELL_TYPE_STRING);
                    excelValue[i][j]=cell.getStringCellValue();
                    break;
                case Cell.CELL_TYPE_NUMERIC://数值
                    if (HSSFDateUtil.isCellDateFormatted(cell)) {//日期
                        Date date = cell.getDateCellValue();
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                        excelValue[i][j]=sdf.format(date);
                    }else{//纯数值
                        excelValue[i][j]=String.valueOf(cell.getNumericCellValue());
                    }   
                    break;
                case Cell.CELL_TYPE_BOOLEAN://布尔
                    cell.setCellType(cell.CELL_TYPE_BOOLEAN);
                    excelValue[i][j]=String.valueOf(cell.getBooleanCellValue());
                    break;
                case Cell.CELL_TYPE_BLANK://空值
                    cell.setCellType(cell.CELL_TYPE_BLANK);
                    excelValue[i][j]="";
                    break;
                case Cell.CELL_TYPE_FORMULA://公式
                    cell.setCellType(cell.CELL_TYPE_FORMULA);
                    excelValue[i][j]="";
                    break;
                case Cell.CELL_TYPE_ERROR://错误
                    excelValue[i][j]="";
                    break;

                default:
                    break;
                }
            }
        }
        return excelValue;





        if (excelValue==null || excelValue.length==0 ||(excelValue.length==1&& excelValue[0].length==0)) {
            return "导入文件的内容为空!";
        }
        //以下是校验方法
        for (int i = 1 , rowlength=excelValue.length; i < rowlength; i++) {
            boolean falg=false;
            //for (int j = 0 ,colcolength=excelValue[i].length; j <colcolength; j++) {
                String orderid=excelValue[i][0]==null?"":excelValue[i][0];
                String orderno =excelValue[i][1]==null?"":excelValue[i][1];
                String isorder=";
                Query isroorderquery = this.getSession().createSQLQuery(isorder).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                isroorderquery.setParameter("orderid", orderid);
                List<Map> list1 = isroorderquery.list();
                if (list1==null||list1.size()<=0) {
                    falg=true;
                    break;
                }
                String mrno =excelValue[i][2]==null?"":excelValue[i][2];
                String sql = "";        
                Query query = this.getSession().createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                query.setParameter("ORDERID", orderid);
                query.setParameter("MRNO", mrno);
                String mrqorderid="";
                List<Map> quList = query.list();            
                if (quList==null || quList.size()<1) {
                    falg=true;
                    break;
                }else{
                    mrqorderid=String.valueOf(quList.get(0).get("ORDERID"));
                }

            }
        //  if (falg) {
        //      continue;
        //  }
        //}

        //实际导入,保存到数据库

        if ("".equals(message)) {
            return "导入成功!!!";
        } else {
            return message;
        }


    }

}

jxl导入

package org.rj.me.impl.imm;



import java.io.InputStream;
import java.math.BigDecimal;


import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.List;
import java.util.Map;

import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;

import org.apache.struts.upload.FormFile;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers;
import org.rj.me.amevo.imm.DrExcleVO;
import org.rj.me.impl.AMEBaseService;
import org.rj.me.interfaces.imm.IDrExcle;
import org.rj.me.model.imm.AttendanceModel;

import org.rj.me.model.imm.SmAofAttendence;
import org.rj.me.model.imm.SmAofFloat;

public class DrImpl extends AMEBaseService implements IDrExcle {
    DrExcleVO dr = new DrExcleVO();
    private Sheet sheet;
    private String[][] excelValue;

    private StringBuilder msg = new StringBuilder();
    private String finalMsg="";


    /**
     * 人员出勤及excel导入总方法
     */
    public String HolidayUploadStu(FormFile upload) {
        initExcel(upload);
        readExcel();
        return HolidayinsertIntoDB();

    }

    public String HolidayinsertIntoDB() {
        int successRow=0;
        int excelRows = excelValue.length;
        Long attendenceID = this.getHolidayId();
        try {
            if (excelRows > 1) {
                for (int i = 1; i < excelRows; i++) { // 从第2排开始 第一排文字说明
                    String[] DBValue = excelValue[i];// 取第一行数据      
                        successRow += 1;
                    SmAofAttendence sav = new SmAofAttendence();
                    if(sav.getMebno()==""){
                        continue;
                    }
                    // sav.setDeptname(DBValue[1]);
                    sav.setAttendenceid(new Long(attendenceID + i));
                    sav.setDeptid(Long.parseLong(DBValue[0]));
                    sav.setMebno(DBValue[2]);
                    sav.setName(DBValue[3]);
                    sav.setDays(Double.parseDouble(DBValue[4]));
                    sav.setLate(Double.parseDouble(DBValue[5]));
                    sav.setYear(Double.parseDouble(DBValue[6]));
                    sav.setSick(Double.parseDouble(DBValue[7]));
                    sav.setPs(Double.parseDouble(DBValue[8]));
                    sav.setVf(Double.parseDouble(DBValue[9]));
                    sav.setMn(Double.parseDouble(DBValue[10]));
                    sav.setFuneral(Double.parseDouble(DBValue[11]));
                    sav.setChaperone(Double.parseDouble(DBValue[12]));
                    sav.setWedding(Double.parseDouble(DBValue[13]));
                    sav.setFeeding(Double.parseDouble(DBValue[14]));
                    sav.setInjury(Double.parseDouble(DBValue[15]));
                    sav.setStudy(Double.parseDouble(DBValue[16]));
                    sav.setStationcode(DBValue[17]);
                    sav.setNote(DBValue[18]);
                    this.getSession().save(sav);

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            finalMsg = "导入失败!";
        }
        finalMsg = "导入成功:" + "<br>" + "目标导入人员出勤及休假管理:" + (successRow-1) + "</br>"
                + "成功录入数:" + (successRow-1)
                + "</br>" + "失败录入数" + (0) + "<br>" + msg.toString();
        return finalMsg;
    }

    /**
     * 读取excel数据,保存sheet对象中
     */
    public void initExcel(FormFile upload) {
        Workbook rwb = null;
        try {
            InputStream is =upload.getInputStream();
            rwb = Workbook.getWorkbook(is);
            sheet = rwb.getSheet(0);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 读取excle数据进入excelValue数组中
     */
    public void readExcel() {
        excelValue = new String[sheet.getRows()][sheet.getColumns()];
        for (int i = 0; i < sheet.getRows(); i++) {
            for (int j = 0; j < sheet.getColumns(); j++) {
                Cell cell = sheet.getCell(j, i);
                if ("".equals(cell.getContents().toString().trim())) {
                    excelValue[i][j] = "";
                }
                if (cell.getType() == CellType.LABEL) {
                    LabelCell lablecell = (LabelCell) cell;
                    excelValue[i][j] = lablecell.getString().trim();
                } else if (cell.getType() == CellType.NUMBER) {
                    excelValue[i][j] = cell.getContents();
                } else if (cell.getType() == CellType.DATE) {
                    DateCell datcell = (DateCell) cell;
                    Date excelDate = null;
                    excelDate = datcell.getDate();
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                    excelValue[i][j] = format.format(excelDate);
                } else {
                    excelValue[i][j] = cell.getContents().toString().trim();
                }
            }
        }

    }

    /**
     * 生成出勤表的主键ID
     * 
     * @return
     */
    private Long getHolidayId() {
        String sql = "select MAX(ATTENDENCEID) as ATTENDENCEID from sm_aof_attendence";
        SQLQuery query = this.getSession().createSQLQuery(sql);
        query.addScalar("ATTENDENCEID", Hibernate.LONG);
        List<Map<String, Object>> list = query.setResultTransformer(
                Transformers.ALIAS_TO_ENTITY_MAP).list();
        Map<String, Object> map = list.get(0);
        String Holidayid = map.get("ATTENDENCEID") == null ? "0" : map.get("ATTENDENCEID").toString();
        return new Long(Holidayid);
    }

    /**
     * 生成节假日加班主键ID
     */
    private Long getAttendanceId() {
        String sql = "select MAX(OVERTIMEID) as OVERTIMEID from sm_aof_overtime";
        SQLQuery query = this.getSession().createSQLQuery(sql);
        query.addScalar("OVERTIMEID", Hibernate.LONG);
        List<Map<String, Object>> list = query.setResultTransformer(
                Transformers.ALIAS_TO_ENTITY_MAP).list();
        if(list.size() == 0){
            return 0l;
        }
        Map<String, Object> map = list.get(0);
        String attendenceid = map.get("OVERTIMEID") == null ? "0" : map.get("OVERTIMEID").toString();
        return new Long(attendenceid);
    }

    /**
     * 生成员工津贴主键ID
     */
    private Long getAllowanceId() {
        String sql = "select MAX(FLOATID) as FLOATID from sm_aof_float";
        SQLQuery query = this.getSession().createSQLQuery(sql);
        query.addScalar("FLOATID", Hibernate.LONG);
        List<Map<String, Object>> list = query.setResultTransformer(
                Transformers.ALIAS_TO_ENTITY_MAP).list();
        Map<String, Object> map = list.get(0);
        String attAllowanceid = map.get("FLOATID").toString();
        return new Long(attAllowanceid);
    }

    /**
     * 员工节假日加班管理 总方法
     */
    public String AttendanceUploadStu(FormFile upload) {
        initExcel(upload);
        readExcel();
        return AtteninsertIntoDB();
    }

    private String AtteninsertIntoDB() {
        int successRow=0;
        int excelRows = excelValue.length;
        Long overtimeid = this.getAttendanceId();
        if (excelRows > 1) {
            for (int i = 1; i < excelRows; i++) { // 从第2排开始 第一排文字说明
                String[] DBValue = excelValue[i];// 取第一行数据

                AttendanceModel av = new AttendanceModel();
                if(DBValue[0]==""){
                    continue;
                }
                successRow += 1;
                av.setOvertimeid(new Long(overtimeid + i));
                Date day = null;
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    day = sdf.parse(DBValue[0]);
                    av.setMonth(day);
                    // av.setDeptname(DBValue[1]);//部门名称
                    av.setDeptid(Long.parseLong(DBValue[1]));
                    av.setSysuserid(DBValue[3]);
                    av.setMebno(DBValue[4]);
                    av.setName(DBValue[5]);
                    av.setHs(Double.parseDouble(DBValue[6]));
                    av.setOvertimehours(Double.parseDouble(DBValue[7]));
                    av.setOvertimepay(Double.parseDouble(DBValue[8]));
                    av.setNightdutytime(Double.parseDouble(DBValue[9]));
                    av.setNightdutypay(Double.parseDouble(DBValue[10]));
                    av.setSum(Double.parseDouble(DBValue[11]));
                    av.setNote(DBValue[12]);
                    av.setStatus("0");
                    this.getHibernateTemplate().save(av);
                } catch (Exception e) {
                    e.printStackTrace();
                    finalMsg = "导入失败!";
                }
            }
        }
        finalMsg = "导入成功:" + "<br>" + "目标导入人员假日加班管理:" + successRow + "</br>"
        + "成功录入数:" + (successRow)
        + "</br>" +"失败录入数"+(0)+ "<br>"+ msg.toString();
        return finalMsg;

    }

    /**
     * 员工节津贴及奖金管理
     */
    public String AllowanceUploadStu(FormFile upload) {
        initExcel(upload);
        readExcel();
        /*String a=thIntoDB();
        String b=a;*/
        try {
            String a=this.IntoDB();
            return a;   
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    private String IntoDB() {
        int successRow=0;
        int excelRows = excelValue.length;
        double num=0.0;
        double quota=0.0;
        String deptname=null;
        Long deptid=0L; 
        if(excelRows > 1){
            for(int i=1;i<excelRows;i++){
                String[] DBValue = excelValue[i];
                double d=Double.parseDouble(DBValue[8]);
                num+=d;
                if(deptname==null){
                    deptname=DBValue[3];
                    String sql1=" select id from sys_dept where name like '%"+deptname+"%'";
                    List list1 = this.getSession().createSQLQuery(sql1).list();
                    if(list1!=null && list1.size()>0){
                        BigDecimal id=(BigDecimal) list1.get(0);
                        String s=id.toString();
                        deptid=Long.parseLong(s);

                    }
                    Date date=new Date();
                    String today=new SimpleDateFormat("yyyy-MM").format(date);
                    //String today = cal.get(Calendar.YEAR)+"-" + (cal.get(Calendar.MONTH)+1) ;
                    String sql=" select quota from sm_quota where dept='"+deptid+"'and month ='"+today+"'";
                    List list = this.getSession().createSQLQuery(sql).list();
                    if(list!=null && list.size()>0){
                        BigDecimal quo=(BigDecimal) list.get(0);
                        String b=quo.toString();
                        quota=Double.parseDouble(b);

                    }
                }
            }
        }
        try {
            if (excelRows > 1) {                
                for (int i = 1; i < excelRows; i++) { // 从第2排开始 第一排文字说明
                    String[] DBValue = excelValue[i];// 取第一行数据  
                    SmAofFloat sfv = new SmAofFloat();
                    if(sfv.getSysuserid()==""){
                        continue;
                    }   
                    successRow += 1;
                    sfv.setSysuserid(DBValue[1]);
                    sfv.setMebno(DBValue[1]);
                    //sfv.setMebno(DBValue[2]);
                    sfv.setName(DBValue[2]);// 员工姓名
                    sfv.setBranch(DBValue[4]);
                    //sfv.setDeptid();
                    //sfv.setDeptid(Long.parseLong(DBValue[3]));
                    sfv.setLev(DBValue[5]);
                    sfv.setPost(DBValue[6]);
                    sfv.setPa(Double.parseDouble(DBValue[7]));
                    sfv.setFb(Double.parseDouble(DBValue[8]));
                    sfv.setRpa(DBValue[9]);
                    //sfv.setRfb(Double.parseDouble(DBValue[10]));
                    //sfv.setFbs(Double.parseDouble(DBValue[11]));
                    //sfv.setFad(Double.parseDouble(DBValue[12]));
                    sfv.setSdb(DBValue[10]);
                    sfv.setOfficeno(DBValue[11]);       
                    sfv.setDeptid(deptid);
                    sfv.setStatus("0");
                    if(quota>=num){
                        this.getHibernateTemplate().save(sfv);
                        finalMsg = "导入成功:" + "<br>" + "目标导入员工津贴及奖金管理:" + successRow + "</br>"
                        + "成功录入数:" + (successRow)
                        + "</br>" +"失败录入数"+(0)+ "<br>"; 

                    }else{
                        finalMsg = "导入失败:员工实发效益奖金大于额度,请重新分配!";      
                    }

                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            finalMsg = "导入失败!";
        }

        return finalMsg;
    }

}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值