Excel导入(ssh)

Excel导入(ssh)ssh下的excel导入_ssh导入excel

步骤:
1、首先在ftl页面上添加导入按钮跳转到导入详情页面,再写一个导入详情页面sp_importfile.ftl
2、然后在Action中导入一堆包,excel的,reader的,并写excel导入的方法importfile(),设置上传文件的路径uploadFile,开启新的线程处理SP厂商信息,利用SpReader与ExcelReaderUtil导入厂商信息
3、在SpReader.java中写getRows()的方法,获取service,若第一行为标题行,则直接跳过,若第一行直接开始信息就不跳过,然后读取excel中的每条数据,存入实体表中。
下面以SP厂商为例。
excel导入的代码:

// excel导入
        public String importfile() {
            return "importfile";
        }
        public String importfilesave()
        {
            if (excel == null) {
                addActionError("请导入excel");
                return ERROR;
            }
            try {
                String filePath = FileUtil.copyFile(
                        ServletActionContext.getServletContext(),
                        excel,
                        excelFileName.substring(excelFileName.lastIndexOf(".")+1, excelFileName.length()));
                String newfilePath = Tools.class.getClassLoader().getResource("/").getPath();
                newfilePath = newfilePath.substring(0, newfilePath.indexOf("/WEB-INF/classes"));
                final String finalPath = newfilePath + filePath;
                File uploadFile = new File(finalPath);
                String excelFilePath = CommonConstant.FTP.READ_FTP_FILE_PATH_FOR_EXCEL + "/" + uploadFile.getName();
                System.out.println(excelFilePath);

                // 开启新的线程处理入库
                new Thread() {
                    public void run() {
                        try {
                                // 执行处理
                                // 导入SP厂商信息
                                SpReader reader = new SpReader();
                                String path = finalPath;
                                ExcelReaderUtil.readExcel(reader, path);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            } catch (Exception e) {
                e.printStackTrace();
                addActionError(e.getMessage());
                return ERROR;
            }
            redirectUrl = "sp!list.action";
        return SUCCESS;
        }

下面是SpReader的代码:

public class SpReader implements IRowReader { 
   

    private static Integer count = 1;
    /* * 业务逻辑实现方法 * * @see com.eprosun.util.excel.IRowReader#getRows(int, int, java.util.List) */
    public void getRows(int sheetIndex, int curRow, List<Integer> collist, List<String> rowlist) {
        // 获取service
        SpService spService = (SpService) SpringUtil
                .getBean("spServiceImpl");
        // 若第一行为标题行,则直接跳过
        if (curRow == 0) {
            return;
        }
        try {
            // 处理空值列
            rowlist = operateEmptyCol(collist,rowlist);
            Sp sp = new Sp(); //一定要每条记录就new一次
            sp.setName(rowlist.get(0));
            spService.save(sp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // 处理空值列
    private List<String> operateEmptyCol(List<Integer> collist, List<String> rowlist){
        // 转化行数据,将空值填入
        List<String> newList = new ArrayList<String>();
        // 根据excel的列数初始化
        for(int i = 0; i < count; i++){
            newList.add("");
        }
        // 根据有值的列覆盖list
        for(int i = 0; i < collist.size(); i++){
            newList.set(collist.get(i), rowlist.get(i));
        }
        return newList;
    }
}

今天的文章Excel导入(ssh)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65504.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注