java简单的导入导出

    /**
     * 导入25年回本付息的每月支出
     */
    @RequestMapping("/ordinaryLoan")
    public Object OrdinaryLoan(HttpServletRequest request, HttpServletResponse response, Long projectId) {
        MultipartHttpServletRequest re = (MultipartHttpServletRequest) request;
        System.out.println("开始");
        MultipartFile mf = re.getFile("upFile");
        String[] keys = {"month", "money"};
        try {
            if (ObjectUtils.isNull(projectId))
                return ResultForm.createErrorResultForm(null, "导入失败,项目编号为空");

            List<Map<String, Object>> list = ExcelToolUtils.importExcel(mf.getInputStream(), keys);
            List<OrdinaryLoan> ordinaryLoans = new ArrayList<>();
            OrdinaryLoan ordinaryLoan = new OrdinaryLoan();
            for (Map<String, Object> map : list) {
                ordinaryLoan = new OrdinaryLoan();
                ordinaryLoan.setProjectId(projectId);
                ordinaryLoan.setCreateTime(new Date());
                ordinaryLoan.setMoney(MapUtils.getFloat(map, "money"));
                ordinaryLoan.setMonth(MapUtils.getString(map, "month"));
                ordinaryLoan.setMonthTime(TimeUtil.parseDate(MapUtils.getString(map, "month")));
                ordinaryLoans.add(ordinaryLoan);
            }
            chargeAPIHandler.saveOrdinaryLoans(ordinaryLoans, projectId);
            return ResultForm.createSuccessResultForm(null, "导入成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("上传文件错误!");
            return ResultForm.createErrorResultForm(null, "导入失败");
        }
    }

工具类

package com.td.crm.web.utils;

import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import com.td.util.MapUtils;

public class ExcelToolUtils {

    public static void exportExcel(InputStream input, OutputStream out, List<Map<String, Object>> list, LinkedHashMap<String, String> keys2titlesMap) throws Exception {
        SXSSFWorkbook wb = new SXSSFWorkbook(100);
        Sheet sh = wb.createSheet("data");  
        Row rowHeader = sh.createRow(0);
        Iterator<String> keys = keys2titlesMap.keySet().iterator();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        int i = 0;
        List<String> keyList = new ArrayList<String>();
        while(keys.hasNext()) {
            String key = keys.next();
            keyList.add(key);
            String title = keys2titlesMap.get(key);
            Cell cellHeader = rowHeader.createCell(i++);  
            cellHeader.setCellValue(title);
        }

        for(int rownum = 1; rownum <= list.size(); rownum++) {
            Row row = sh.createRow(rownum);
            Map<String, Object> dataMap = list.get(rownum-1);
            i = 0;

//          while(keys.hasNext()) {
            for(String key: keyList){
//              String key = keys.next();
                Cell cell = row.createCell(i++); 
                if(dataMap.get(key) instanceof String) {
                    cell.setCellValue(MapUtils.getString(dataMap, key));  
                } else if(dataMap.get(key) instanceof Date) {
                    cell.setCellValue(simpleDateFormat.format(MapUtils.getDate(dataMap, key)));
                } else if(dataMap.get(key) instanceof Number) {
                    cell.setCellValue(MapUtils.getDouble(dataMap, key));
                } else if(dataMap.get(key) instanceof Boolean) {
                    cell.setCellValue(MapUtils.getBooleanValue(dataMap, key));
                }
            }
            if(rownum % 100 == 0) {  
                ((SXSSFSheet) sh).flushRows();  
            }  
        }
        wb.write(out);  
        out.close();  
    }


    public static List<Map<String, Object>> importExcel(InputStream input, String[] keys) throws Exception {
        Workbook wb = WorkbookFactory.create(input);  
        Sheet sheet = wb.getSheetAt(0);

        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for(int rownum = 1; rownum <= sheet.getLastRowNum(); rownum++) {
            Row row = sheet.getRow(rownum);
            if(row == null) {
                continue;
            }
            Map<String, Object> map = new HashMap<String, Object>();
            for(int cellnum = 0; cellnum<row.getLastCellNum(); cellnum++){
                Cell cell = row.getCell(cellnum);
                int valType = cell.getCellType();
                if(valType == Cell.CELL_TYPE_STRING) {
                    map.put(keys[cellnum], cell.getStringCellValue());
                } else if(valType == Cell.CELL_TYPE_BOOLEAN) {
                    map.put(keys[cellnum], cell.getBooleanCellValue());
                } else if(valType == Cell.CELL_TYPE_NUMERIC) {
                    if(HSSFDateUtil.isCellDateFormatted(cell)){
                        //用于转化为日期格式
                        Date d = cell.getDateCellValue();
                        DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
                        map.put(keys[cellnum], formater.format(d));
                    } else {
                        map.put(keys[cellnum], cell.getNumericCellValue());
                    }
                } 
            }
            list.add(map);
        }
        return list;
    }


/*  public static void createExcel(String fileName) throws Exception {
        // 打开文件
        WritableWorkbook book = Workbook.createWorkbook(new File(fileName));

        // 生成名为“第一页”的工作表,参数0表示这是第一页
        WritableSheet sheet = book.createSheet(" 第一页 ", 0);
        // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
        // 以及单元格内容为test
        Label label = new Label(0, 0, "test");
        // 将定义好的单元格添加到工作表中
        sheet.addCell(label);

        * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123

        jxl.write.Number number = new jxl.write.Number(1, 0, 555.12541);
        sheet.addCell(number);
        // 写入数据并关闭文件
        book.write();
        book.close();
    }


    public static void readExcel(String fileName) throws Exception {
        Workbook book  =  Workbook.getWorkbook( new  File(fileName));
        //  获得第一个工作表对象
       Sheet sheet  =  book.getSheet( 0 );
        //  得到第一列第一行的单元格
       Cell cell1  =  sheet.getCell( 0 ,  0 );
       String result  =  cell1.getContents();
       System.out.println(result);
       book.close();
    }*/




}

猜你喜欢

转载自blog.csdn.net/zr527397749/article/details/79192806