java poi 导入excel

来源:互联网 发布:创维电视如何连接网络 编辑:程序博客网 时间:2024/06/05 02:14

从本机电脑导入excel到服务器中 ,首先要把文件上传到服务器中,这时候,我使用的是strus2 接受上传的文件;

package ht.humanResources.action;

import ht.humanResources.model.HtglNew;
import ht.humanResources.service.HrHtglService;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class HtImportAction extends ActionSupport{
    private HrHtglService hrHtglService;
    private File file;
    private String fileFileName;

    private String fileContentType;
    private HttpServletRequest req;

    public String upload() throws IOException{
        req=ServletActionContext.getRequest();
        req.setCharacterEncoding("utf-8");
        String realPath=    ServletActionContext.getServletContext().getRealPath("/upload/htImport/");

        String name=this.getFileFileName();
        //方法1 开始
//        if (file != null) {
//        File savefile = new File(new File(realPath), this.getFileFileName());
//        if (!savefile.getParentFile().exists()){

//        savefile.getParentFile().mkdirs();
//        }

//        FileUtils.copyFile(file, savefile);
//        }
        //---方法1结束
        try {

            String filename = realPath+File.separator+name;  
            copyfile(filename);
            List<HtglNew>list=    DaoruExcelUtil.getList(filename);
            List list2=DaoruExcelUtil.reclist;
            this.getHrHtglService().saveHtglNew(list);
            this.getHrHtglService().saveHtglRec(list2);
            req.setAttribute("success", "1");
        } catch (Exception e) {
            e.printStackTrace();
            req.setAttribute("success", "0");
        }

        return "success";


    }

    public void copyfile(String path) throws IOException{
        //方法2开始

        File outfile=new File(path);
        if(!outfile.getParentFile().exists()){
            outfile.getParentFile().mkdirs();
        }

        InputStream is=new FileInputStream(this.getFile());

        FileOutputStream out=new FileOutputStream(outfile);

        byte[] buffer=new byte[1024];
        int len=0;
        while(( len=is.read(buffer))!=-1){
            out.write(buffer);
        }
        out.close();
        is.close();
        //方法2结束
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }



    public String getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

    public String getFileFileName() {
        return fileFileName;
    }


    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    public HrHtglService getHrHtglService() {
        return hrHtglService;
    }

    public void setHrHtglService(HrHtglService hrHtglService) {
        this.hrHtglService = hrHtglService;
    }

}

将导入excel的业务提取写出来 ,需要注意的是去excel中各种不同的数据类型的数据,我这次导入,时读取固定的模板的文件;模板文件放出来供大家参考;

劳动合同管理台账                                                                                                                                                                                                                                         单位名称:有限责任公司                                       总人数:__295人                                                                                                                                                                                                                                           序号个人编号姓名性别年龄状态劳动合同签订编码第一次劳动合同续签编码第二次劳动合同续签编码辞职日期当前日期到期提醒备注                                                                                                                                                                                                                                         期限起止时间期限起止时间期限起止时间                                                                                                                                                                                                                                         10002张三男1960年8月10日57在职无固定2015-1-12015010600022015.8.25