gpt4 book ai didi

java实现excel导入数据的工具类

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java实现excel导入数据的工具类由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

导入Excel数据的工具类,调用也就几行代码,很简单的.

  。

复制代码代码如下:

import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.apache.commons.beanutils.BeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory,

  。

import java.io.IOException; import java.io.InputStream; import java.util.*,

/**  * Excel导入的工具类.  */ public class ExcelUtils {     private static final Logger logger = LoggerFactory.getLogger(ExcelUtils.class);     //成功     public static final Integer STATUS_OK = Integer.valueOf(1);     //失败     public static final Integer STATUS_NO = Integer.valueOf(0);     /**      * 私有化构造器      */     private ExcelUtils(){ 。

    } 。

    /**      * 获取excel文件中的数据对象      *      * @param is                        excel      * @param excelColumnNames          excel中每个字段的英文名(应该与pojo对象的字段名一致,顺序与excel一致)      * @return                          excel每行是list一条记录,map是对应的"字段名-->值"      * @throws Exception      */     public static List<Map<String, String>> getImportData(InputStream is, List<String> excelColumnNames) throws Exception {         logger.debug("InputStream:{}", is);         if (is == null) {             return Collections.emptyList();         } 。

        Workbook workbook = null;         try {             //拿到excel             workbook = Workbook.getWorkbook(is);         } catch (BiffException e) {             logger.error(e.getMessage(), e);             return Collections.EMPTY_LIST;         } catch (IOException e) {             logger.error(e.getMessage(), e);             return Collections.EMPTY_LIST;         }         logger.debug("workbook:{}", workbook),

        if (workbook == null) {             return Collections.emptyList();         } 。

        //第一个sheet         Sheet sheet = workbook.getSheet(0);         //行数         int rowCounts = sheet.getRows() - 1;         logger.debug("rowCounts:{}", rowCounts);         List<Map<String, String>> list = new ArrayList<Map<String, String>>(rowCounts - 1),

        //双重for循环取出数据         for(int i = 1; i < rowCounts; i++){             Map<String, String> params = new HashMap<String, String>();             //i,j i:行 j:列             for(int j = 0; j < excelColumnNames.size(); j++){                 Cell cell = sheet.getCell(j, i);                 params.put(excelColumnNames.get(j), cell.getContents());             } 。

            list.add(params);         } 。

        return list;     } 。

    /**      * 获取导入数据为对象的List      *      * @param data      * @param clazz      * @param excelColumnNames      * @param checkExcel      * @param <T>      * @return      * @throws Exception      */     public static <T> List<T> makeData(List<Map<String, String>> data, Class<T> clazz, List<String> excelColumnNames, CheckExcel checkExcel) throws Exception {         if(data == null || data.isEmpty() || clazz == null || checkExcel == null) {             return Collections.EMPTY_LIST;         } 。

        List<T> result = new ArrayList<T>(data.size());         for(Map<String, String> d : data) {             if(checkExcel != null && !checkExcel.check(d)) {                 continue;             }             T entity = clazz.newInstance();             for(String column : excelColumnNames) {                 BeanUtils.setProperty(entity, column, d.get(column));             } 。

            result.add(entity);         } 。

        return result;     } } 。

  。

检查excel中每一行的数据是否合法 。

  。

复制代码代码如下:

import java.util.Map;
/**
 * 检查excel中每一行的数据是否合法
 */
public interface CheckExcel {
    /**
     * 返回true合法
     *
     * @param data      excel中每一行的数据
     * @return
     */
    public boolean check(Map<String, String> data);
}

  。

调用部分 。

  。

复制代码代码如下:

List<Map<String, String>> data = ExcelUtils.getImportData(is,Constants.EXCEL_COLUMN_NAMES);
List<FeeAllocation> allocations = ExcelUtils.makeData(data, FeeAllocation.class, Constants.EXCEL_COLUMN_NAMES, new CheckExcel() {
            public boolean check(Map<String, String> data) {
                if(StringUtils.isEmpty(data.get("name")))
                    return false;
                return true;
            }
        });

最后此篇关于java实现excel导入数据的工具类的文章就讲到这里了,如果你想了解更多关于java实现excel导入数据的工具类的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com