java导入.csv和excel文件并获取内容

4 篇文章 0 订阅
package com.controls.util;

import com.common.util.POIUtil;
import com.csvreader.CsvReader;
import com.performance.service.impl.ResumeManageService;
import jxl.read.biff.BiffException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

@Component
public class InputFile {

    @Autowired
    POIUtil pOIUtil;
    @Value("${nas.file.path}")
    private String nasPath;
    private final static Logger logger = LoggerFactory.getLogger(ResumeManageService.class);

    public List<List<String>> inputCSVorEXCEL(MultipartFile multipartFile)throws IOException, BiffException, ParseException {
        List<List<String>> list=new ArrayList<List<String>>();
        try{
            String originalFilename=multipartFile.getOriginalFilename();
            String uploadFileSuffix = originalFilename.substring(
                    originalFilename.lastIndexOf('.'));
            if(uploadFileSuffix.equals(".csv")){
                CsvReader csvReader = new CsvReader(multipartFile.getInputStream(), ',', Charset.forName("GBK"));
                csvReader.readHeaders(); 
                String[] headers = csvReader.getHeaders(); // 获取第一行表头
                int headerCount = csvReader.getHeaderCount(); // 获取每行列数
                list.add(Arrays.asList(headers));
                while (csvReader.readRecord()) {
                    List<String> item=new ArrayList<>();
                    for(int i=0;i<headerCount;i++){
                        item.add(csvReader.get(i));
                    }
                    list.add(item);
                }
            }else {
                Workbook workBook = null;
                Sheet sheets;
                FileInputStream fis = (FileInputStream) multipartFile.getInputStream();
                if(originalFilename.endsWith(".xls")){
                    workBook=new HSSFWorkbook(fis);
                }
                if(originalFilename.endsWith(".xlsx")){
                    workBook=new XSSFWorkbook(fis);
                }
                sheets = workBook.getSheetAt(0);
                fis.close();
                Iterator<Row> rows = sheets.rowIterator();
                Row row;
                Cell cell;
                while (rows.hasNext()) {
                    List<String> tem = new ArrayList<String>();
                    row = rows.next();
                    // 获取单元格
                    short cells = row.getLastCellNum();
                    for(int i=0;i<cells;i++){
                        cell = row.getCell(i);
                        String cellValue;
                        try {
                            cellValue = pOIUtil.getCellValue(cell).toString();
                        }catch (Exception e){
                            cellValue="";
                        }
                        tem.add(cellValue);
                    }
                    list.add(tem);
                }
            }

        }catch (Exception e){
            logger.warn(e.getMessage());
        }
        return list;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值