ExcelReadController excel批量导入

/*上传*/
@PostMapping("/upload")
@ResponseBody
public AjaxResult upload(@RequestParam("file2") MultipartFile multipartFile, HttpServletRequest request) throws IOException{
    WholeDepartmentController wholeDepartmentController = new WholeDepartmentController();
    WholeDepartment wholeDepartment = new WholeDepartment();

    int flag = 0;
    //案例指标的code
    String code = null;
    Integer rows=0;
    //案例名称
    String casesName = null;
    String casesIndicatorsCode = null;
    //String calculateSymbol = null;
    String TargetValue = null;
    String calculateUnits = null;
    String indicatorName = null;
    //三个实体类实例化方便调取set方法
    Indicator indicator = new Indicator();
    CasesIndicators casesIndicators = new CasesIndicators();



    //准备List容器进行存储数据
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    //利用Workbook接口和判断excel版本创建相应版本 HSSFWorkbook/XSSFWorkbook对象
    org.apache.poi.ss.usermodel.Workbook workbook = null;
    // 获取上传文件的原始名称
    String filename = multipartFile.getOriginalFilename();
    //获取文件后缀名称,如果后缀是xls则结果为true,如果为xlsx,则结果为false.
    boolean isExcel2003 = filename.toLowerCase().endsWith("xls") ? true : false;
    //根据不同版本,创建不同的EXCEL表格. 注意: 有的poi的jar包在这一步是不适用的.如果不适用则只能根据不同文件进行不同的方法处理了.
    if (isExcel2003) {
        workbook = new org.apache.poi.hssf.usermodel.HSSFWorkbook(multipartFile.getInputStream());
    } else {
        workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(multipartFile.getInputStream());
    }
    //创建这个EXCEL的一页. 一个工作簿有多个sheet,可以把工作簿就看成一本书, sheet就是页. 每页里面就是一张Excel表格了.
    org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
    //获取EXCEL第一页中(列头)的总列数.
    int physicalNumberOfCells = sheet.getRow(0).getPhysicalNumberOfCells();
    //总行数
    int hang =sheet.getPhysicalNumberOfRows();
    //最后一行
    int hang2 =sheet.getLastRowNum();
    /**
     * 通常第一行都是标题,所以从第二行开始读取数据.这要根据实际情况自行定义开始索引.
     */
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
        //准备容器 封装没一行
        HashMap<String, Object> stringStringHashMap = new HashMap<>();
        //获取这个一页中这个表格的一行数据.
        org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);
        //如果该行里面存在数据.
        if (row != null){
            //遍历这行的所有列,按顺序取值,并存入一个map中,key为列的顺序,value为EXCEL这一列的具体值
            for (int j = 0; j < physicalNumberOfCells; j++) {
                //指定每行每列的接收类型为String
                String key = "" + j;
                //获取每一列
                org.apache.poi.ss.usermodel.Cell cell = row.getCell(j);
                //准备接收列内容的容器.
                String value = "";
                //由于每一列的值类型都可能不同, 所以要根据不同类型进行转换, 否则取值时候会出现问题.
                //如果列内容不为null
                if (cell != null) {
                    //则判断是否为数值-- 数据又分两种: 日期和纯数字.
                    if (0 == cell.getCellType()) {
                        // 如果是日期类型.
                        if (org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(cell)) {
                            // 则以日期格式获取列值
                            Date date = cell.getDateCellValue();
                            //并指定日期格式,进行格式化
                            DateFormat formater = new SimpleDateFormat(
                                    "yyyy-MM-dd");
                            value = formater.format(date);
                        } else {

                            //如果不是日期, 则为纯数字. 我在这里直接以String类型接收, 正常来讲是要用纯数字接收的.
                            cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                            value = cell.getStringCellValue();
                        }
                    } else {
                        //如果不为数值, 既不是日期也不是纯数字, 在这里, 统统设置成以字符串进行接收. 如果想具体区别接收,请自行百度.
                        cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                        value = cell.getStringCellValue();
                    }
                } else {
                    //如果列内容为null, 则直接设置内容为 " ";
                    value = "";
                }
                //以下则是根据第几列,将相应的列set进实体类中对应的字段
                if( j == 0 ) {
                    casesIndicators.setName(value.trim());
                    casesName = value.trim();
                }
                if( j == 1 ) {
                    code = value.trim();
                }
                if( j == 2 ) {
                    casesIndicators.setFirstIndicator(value.trim());
                }
                if( j == 3 ) {
                    casesIndicators.setSecondIndicator(value.trim());
                }
                if( j == 4 ) {
                    casesIndicators.setIndicatorName(value.trim());
                    indicatorName=value.trim();
                }
                if( j == 5 ) {
                    //casesIndicators.setTargetValue(value.trim());
                    TargetValue = value.trim();
                }
                if( j == 6 ) {
                    casesIndicators.setCalculateUnits(value.trim());
                    calculateUnits = value.trim();
                }
                if( j == 7 ) {
                    casesIndicators.setCalculateSymbol(value.trim());
                    // calculateSymbol = value.trim();
                }
                if( j == 8 ) {
                    //生成结果为例:>=90%(计划标准)
                    casesIndicators.setIndicatorStandard(value.trim());
                    //casesIndicators.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
                }
                if( j == 9 ) {
                }
                //存储map中
                if (StringUtils.isEmpty(value)) {
                    value = "";
                }
                //将这一列, 以列序号为key, 列内容为值, 存入准备好的map容器中.
                stringStringHashMap.put(key, value);
            }
            //最后, 将这一行作为一个整体对象存进List中.
            list.add(stringStringHashMap);
        }else {
            break;
        }
    }
    return wholeDepartmentController.addSave(wholeDepartment);
}

package com.sinuo.excel5.controller;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.sinuo.excel5.entity.Cases;
import com.sinuo.excel5.entity.CasesIndicators;
import com.sinuo.excel5.entity.Indicator;
import com.sinuo.excel5.service.ExcelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@Controller
@RequestMapping("/")
public class ExcelReadController {

@Autowired
ExcelService service;


@Transactional
@PostMapping( "/caseIndicators")
@ResponseBody
public String importCasesIndicators(HttpServletRequest request, MultipartFile multipartFile) throws Exception {

    int flag = 0;
    //案例指标的code
    String code = null;
    Integer rows=0;
    //案例名称
    String casesName = null;
    String casesIndicatorsCode = null;

// String calculateSymbol = null;
String TargetValue = null;
String calculateUnits = null;
String indicatorName = null;
//三个实体类实例化方便调取set方法
Indicator indicator = new Indicator();
CasesIndicators casesIndicators = new CasesIndicators();
// Cases cases = new Cases();

    //准备List容器进行存储数据
    List<Map<String, Object>> ListMap = new ArrayList<Map<String, Object>>();

    //利用Workbook接口和判断excel版本创建相应版本 HSSFWorkbook/XSSFWorkbook对象
    org.apache.poi.ss.usermodel.Workbook workbook = null;

    // 获取上传文件的原始名称
    String filename = multipartFile.getOriginalFilename();

    //获取文件后缀名称,如果后缀是xls则结果为true,如果为xlsx,则结果为false.
    boolean isExcel2003 = filename.toLowerCase().endsWith("xls") ? true : false;

    //根据不同版本,创建不同的EXCEL表格. 注意: 有的poi的jar包在这一步是不适用的.如果不适用则只能根据不同文件进行不同的方法处理了.
    if (isExcel2003) {
        workbook = new org.apache.poi.hssf.usermodel.HSSFWorkbook(multipartFile.getInputStream());
    } else {
        workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(multipartFile.getInputStream());
    }

    //创建这个EXCEL的一页. 一个工作簿有多个sheet,可以把工作簿就看成一本书, sheet就是页. 每页里面就是一张Excel表格了.
    org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);


    //获取EXCEL第一页中(列头)的总列数.
    int physicalNumberOfCells = sheet.getRow(0).getPhysicalNumberOfCells();
    int hang =sheet.getPhysicalNumberOfRows();
    int hang2 =sheet.getLastRowNum();

    /**
     * 通常第一行都是标题,所以从第二行开始读取数据.这要根据实际情况自行定义开始索引.
     */
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {

        //准备容器
        HashMap<String, Object> stringStringHashMap = new HashMap<>();

        //获取这个一页中这个表格的一行数据.
        org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);

        //如果该行里面存在数据.
        if (row != null) {

            //遍历这行的所有列,按顺序取值,并存入一个map中,key为列的顺序,value为EXCEL这一列的具体值
            for (int j = 0; j < physicalNumberOfCells; j++) {

                //指定每行每列的接收类型为String
                String key = "" + j;

                //获取每一列
                org.apache.poi.ss.usermodel.Cell cell = row.getCell(j);

                //准备接收列内容的容器.
                String value = "";

                //由于每一列的值类型都可能不同, 所以要根据不同类型进行转换, 否则取值时候会出现问题.

                //如果列内容不为null
                if (cell != null) {

                    //则判断是否为数值-- 数据又分两种: 日期和纯数字.
                    if (0 == cell.getCellType()) {

                        // 如果是日期类型.
                        if (org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(cell)) {
                            // 则以日期格式获取列值
                            Date date = cell.getDateCellValue();
                            //并指定日期格式,进行格式化
                            DateFormat formater = new SimpleDateFormat(
                                    "yyyy-MM-dd");
                            value = formater.format(date);
                        } else {

                            //如果不是日期, 则为纯数字. 我在这里直接以String类型接收, 正常来讲是要用纯数字接收的.
                            cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                            value = cell.getStringCellValue();

                        }

                    } else {

                        //如果不为数值, 既不是日期也不是纯数字, 在这里, 统统设置成以字符串进行接收. 如果想具体区别接收,请自行百度.
                        cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                        value = cell.getStringCellValue();

                    }
                } else {

                    //如果列内容为null, 则直接设置内容为 " ";
                    value = "";

                }
                //指标库插入方式
                //以下则是根据第几列,将相应的列set进实体类中对应的字段
                if( j == 0 ) {

                    casesIndicators.setName(value.trim());
                    casesName = value.trim();


                }
                if( j == 1 ) {

                    casesIndicators.setIndicatorCode(value.trim());
                    code = value.trim();

                }

                if( j == 2 ) {

                    casesIndicators.setFirstIndicator(value.trim());
                }
                if( j == 3 ) {

                    casesIndicators.setSecondIndicator(value.trim());
                }
                if( j == 4 ) {

                    casesIndicators.setIndicatorName(value.trim());
                    indicatorName=value.trim();

                }
                if( j == 5 ) {

// casesIndicators.setTargetValue(value.trim());
TargetValue = value.trim();
}
if( j == 6 ) {

                    casesIndicators.setCalculateUnits(value.trim());
                    calculateUnits = value.trim();
                }
                if( j == 7 ) {

                    casesIndicators.setCalculateSymbol(value.trim());

// calculateSymbol = value.trim();
}
if( j == 8 ) {
//生成结果为例:>=90%(计划标准)
casesIndicators.setIndicatorStandard(value.trim());
// casesIndicators.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
}
if( j == 9 ) {

                    casesIndicators.setPerformanceValueType(value.trim());

                    List<Indicator> indicatorList = service.selectGuidByIndicatorName(indicatorName,casesName);

// Indicator indicatorList = service.selectGuidByIndicatorName2(indicatorName,casesName);
int ind = indicatorList.size();
for (Indicator indi : indicatorList) {
casesIndicators.setIndicatorGuid(indi.getGuid());
}

                    Cases cases = service.selectCasesByName(casesName);
                    if (cases != null) {
                        code = cases.getCode();
                        casesIndicators.setCode(Integer.parseInt(code));
                        service.insert(casesIndicators);
                    }
                    else if (cases == null) {
                        Cases newCase = new Cases();
                        newCase.setName(casesName);
                        service.insertCases(newCase);
                        cases = service.selectCasesByName(casesName);
                        code = cases.getCode();
                        casesIndicators.setCode(Integer.parseInt(code));
                        service.insert(casesIndicators);
                    }
                }



                //存储map中
                if (StringUtils.isEmpty(value)) {
                    value = "";
                }

                //将这一列, 以列序号为key, 列内容为值, 存入准备好的map容器中.
                stringStringHashMap.put(key, value);

            }

            //最后, 将这一行作为一个整体对象存进List中.
            ListMap.add(stringStringHashMap);
        } else {
            break;
        }

//

// List casesList = casesIndicators.getCasesIndicators();

// if(service.selectCasesByName(name).isEmpty()){
// service.insertCases(cases);
// casesIndicatorsCode=cases.getCode();
// }

// System.err.println(rows);
// } else if(service.selectCasesIndicatorsByName(name)!= null){
// Integer rows = service.updateCasesIndicators(name);
// System.err.println(rows);
// }
}

    //以上, 就得到了上传进来的Excel中的数据.

    /**---------------------------华丽的分割线---------------------------------*/


    //以下,则可以对该数据进行自己项目的不同操作.


    //最后,返回处理成功的标识即可.
    return "本次插入行数:"+rows;
}

@PostMapping( "/indicators")
@ResponseBody
@Transactional
public String importIndicators(HttpServletRequest request, MultipartFile multipartFile) throws Exception {

    Integer rows=0;
    String name = null;
    String casesIndicatorsCode = "";

// String calculateSymbol = null;
String TargetValue = null;
String calculateUnits = null;

    //三个实体类实例化方便调取set方法
    Indicator indicator = new Indicator();
    CasesIndicators casesIndicators = new CasesIndicators();
    Cases cases = new Cases();

    //准备List容器进行存储数据
    List<Map<String, Object>> ListMap = new ArrayList<Map<String, Object>>();

    //利用Workbook接口和判断excel版本创建相应版本 HSSFWorkbook/XSSFWorkbook对象
    org.apache.poi.ss.usermodel.Workbook workbook = null;

    // 获取上传文件的原始名称
    String filename = multipartFile.getOriginalFilename();

    //获取文件后缀名称,如果后缀是xls则结果为true,如果为xlsx,则结果为false.
    boolean isExcel2003 = filename.toLowerCase().endsWith("xls") ? true : false;

    //根据不同版本,创建不同的EXCEL表格. 注意: 有的poi的jar包在这一步是不适用的.如果不适用则只能根据不同文件进行不同的方法处理了.
    if (isExcel2003) {
        workbook = new org.apache.poi.hssf.usermodel.HSSFWorkbook(multipartFile.getInputStream());
    } else {
        workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(multipartFile.getInputStream());
    }

    //创建这个EXCEL的一页. 一个工作簿有多个sheet,可以把工作簿就看成一本书, sheet就是页. 每页里面就是一张Excel表格了.
    org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);


    //获取EXCEL第一页中(列头)的总列数.
    int physicalNumberOfCells = sheet.getRow(0).getPhysicalNumberOfCells();
    int hang =sheet.getPhysicalNumberOfRows();
    int hang2 =sheet.getLastRowNum();

    /**
     * 通常第一行都是标题,所以从第二行开始读取数据.这要根据实际情况自行定义开始索引.
     */
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {

        //准备容器
        HashMap<String, Object> stringStringHashMap = new HashMap<>();

        //获取这个一页中这个表格的一行数据.
        org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);

        //如果该行里面存在数据.
        if (row != null) {

            //遍历这行的所有列,按顺序取值,并存入一个map中,key为列的顺序,value为EXCEL这一列的具体值
            for (int j = 0; j < physicalNumberOfCells; j++) {

                //指定每行每列的接收类型为String
                String key = "" + j;

                //获取每一列
                org.apache.poi.ss.usermodel.Cell cell = row.getCell(j);

                //准备接收列内容的容器.
                String value = "";

                //由于每一列的值类型都可能不同, 所以要根据不同类型进行转换, 否则取值时候会出现问题.

                //如果列内容不为null
                if (cell != null) {

                    //则判断是否为数值-- 数据又分两种: 日期和纯数字.
                    if (0 == cell.getCellType()) {

                        // 如果是日期类型.
                        if (org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(cell)) {
                            // 则以日期格式获取列值
                            Date date = cell.getDateCellValue();
                            //并指定日期格式,进行格式化
                            DateFormat formater = new SimpleDateFormat(
                                    "yyyy-MM-dd");
                            value = formater.format(date);
                        } else {

                            //如果不是日期, 则为纯数字. 我在这里直接以String类型接收, 正常来讲是要用纯数字接收的.
                            cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                            value = cell.getStringCellValue();

                        }

                    } else {

                        //如果不为数值, 既不是日期也不是纯数字, 在这里, 统统设置成以字符串进行接收. 如果想具体区别接收,请自行百度.
                        cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                        value = cell.getStringCellValue();

                    }
                } else {

                    //如果列内容为null, 则直接设置内容为 " ";
                    value = "";

                }
                //指标库插入方式
                //以下则是根据第几列,将相应的列set进实体类中对应的字段
                if( j == 0 ) {

                    indicator.setCases(value.trim());
                    name = value.trim();


                }
                if( j == 1 ) {

                    indicator.setCode(value.trim());

                }

                if( j == 2 ) {

                    indicator.setFirstIndicator(value.trim());
                }
                if( j == 3 ) {

                    indicator.setSecondIndicator(value.trim());
                }
                if( j == 4 ) {

                    indicator.setName(value.trim());
                }
                if( j == 5 ) {

// indicator.setTargetValue(value.trim());
// TargetValue = value.trim();
}
if( j == 6 ) {

                    indicator.setCalculateUnits(value.trim());

// calculateUnits = value.trim();
}
if( j == 7 ) {

                    indicator.setCalculateSymbol(value.trim());

// calculateSymbol = value.trim();
}
if( j == 8 ) {
indicator.setStandardType(value.trim());
//生成结果为例:>=90%(计划标准)
// indicator.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
}
if( j == 9 ) {

                    indicator.setPerformanceValueType(value.trim());
                }

                //存储map中
                if (StringUtils.isEmpty(value)) {
                    value = "";
                }

                //将这一列, 以列序号为key, 列内容为值, 存入准备好的map容器中.
                stringStringHashMap.put(key, value);

            }

            //最后, 将这一行作为一个整体对象存进List中.
            ListMap.add(stringStringHashMap);
        } else {
            break;
        }

// if (service.selectCasesIndicatorsByName(name)== null) {
//version版本设置
indicator.setVersion(“宁德”);
indicator.setEnabled(“1”);
indicator.setIndicatorType(“系統指标”);
// casesIndicators.setCode(Integer.parseInt(casesIndicatorsCode));
service.insertIndicator(indicator);
// service.insert(casesIndicators);
rows++;
// if(service.selectCasesByName(name).isEmpty()){
// service.insertCases(cases);
// casesIndicatorsCode=cases.getCode();
// }

// System.err.println(rows);
// } else if(service.selectCasesIndicatorsByName(name)!= null){
// Integer rows = service.updateCasesIndicators(name);
// System.err.println(rows);
// }
}

    //以上, 就得到了上传进来的Excel中的数据.

    /**---------------------------华丽的分割线---------------------------------*/


    //以下,则可以对该数据进行自己项目的不同操作.


    //最后,返回处理成功的标识即可.
    return "本次插入行数:"+rows;
}

@PostMapping( "/cases")
@ResponseBody
@Transactional
public String importCases(HttpServletRequest request, MultipartFile multipartFile) throws Exception {

    Integer rows=0;
    String name = null;
    String casesIndicatorsCode = "";

// String calculateSymbol = null;
String TargetValue = null;
String calculateUnits = null;

    //三个实体类实例化方便调取set方法
    Indicator indicator = new Indicator();
    CasesIndicators casesIndicators = new CasesIndicators();
    Cases cases = new Cases();

    //准备List容器进行存储数据
    List<Map<String, Object>> ListMap = new ArrayList<Map<String, Object>>();

    //利用Workbook接口和判断excel版本创建相应版本 HSSFWorkbook/XSSFWorkbook对象
    org.apache.poi.ss.usermodel.Workbook workbook = null;

    // 获取上传文件的原始名称
    String filename = multipartFile.getOriginalFilename();

    //获取文件后缀名称,如果后缀是xls则结果为true,如果为xlsx,则结果为false.
    boolean isExcel2003 = filename.toLowerCase().endsWith("xls") ? true : false;

    //根据不同版本,创建不同的EXCEL表格. 注意: 有的poi的jar包在这一步是不适用的.如果不适用则只能根据不同文件进行不同的方法处理了.
    if (isExcel2003) {
        workbook = new org.apache.poi.hssf.usermodel.HSSFWorkbook(multipartFile.getInputStream());
    } else {
        workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(multipartFile.getInputStream());
    }

    //创建这个EXCEL的一页. 一个工作簿有多个sheet,可以把工作簿就看成一本书, sheet就是页. 每页里面就是一张Excel表格了.
    org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);


    //获取EXCEL第一页中(列头)的总列数.
    int physicalNumberOfCells = sheet.getRow(0).getPhysicalNumberOfCells();
    int hang =sheet.getPhysicalNumberOfRows();
    int hang2 =sheet.getLastRowNum();

    /**
     * 通常第一行都是标题,所以从第二行开始读取数据.这要根据实际情况自行定义开始索引.
     */
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {

        //准备容器
        HashMap<String, Object> stringStringHashMap = new HashMap<>();

        //获取这个一页中这个表格的一行数据.
        org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);

        //如果该行里面存在数据.
        if (row != null) {

            //遍历这行的所有列,按顺序取值,并存入一个map中,key为列的顺序,value为EXCEL这一列的具体值
            for (int j = 0; j < physicalNumberOfCells; j++) {

                //指定每行每列的接收类型为String
                String key = "" + j;

                //获取每一列
                org.apache.poi.ss.usermodel.Cell cell = row.getCell(j);

                //准备接收列内容的容器.
                String value = "";

                //由于每一列的值类型都可能不同, 所以要根据不同类型进行转换, 否则取值时候会出现问题.

                //如果列内容不为null
                if (cell != null) {

                    //则判断是否为数值-- 数据又分两种: 日期和纯数字.
                    if (0 == cell.getCellType()) {

                        // 如果是日期类型.
                        if (org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(cell)) {
                            // 则以日期格式获取列值
                            Date date = cell.getDateCellValue();
                            //并指定日期格式,进行格式化
                            DateFormat formater = new SimpleDateFormat(
                                    "yyyy-MM-dd");
                            value = formater.format(date);
                        } else {

                            //如果不是日期, 则为纯数字. 我在这里直接以String类型接收, 正常来讲是要用纯数字接收的.
                            cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                            value = cell.getStringCellValue();

                        }

                    } else {

                        //如果不为数值, 既不是日期也不是纯数字, 在这里, 统统设置成以字符串进行接收. 如果想具体区别接收,请自行百度.
                        cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
                        value = cell.getStringCellValue();

                    }
                } else {

                    //如果列内容为null, 则直接设置内容为 " ";
                    value = "";

                }
                //指标库插入方式
                //以下则是根据第几列,将相应的列set进实体类中对应的字段
                if( j == 0 ) {

                    cases.setName(value.trim());
                    name = value.trim();


                }

// if( j == 1 ) {
//
// indicator.setCode(value.trim());
// casesIndicators.setIndicatorCode(value.trim());
//
// }
//
// if( j == 2 ) {
//
// indicator.setFirstIndicator(value.trim());
// casesIndicators.setFirstIndicator(value.trim());
// }
// if( j == 3 ) {
//
// indicator.setSecondIndicator(value.trim());
// casesIndicators.setSecondIndicator(value.trim());
// }
// if( j == 4 ) {
//
// indicator.setName(value.trim());
// casesIndicators.setIndicatorName(value.trim());
// }
// if( j == 5 ) {
//
// indicator.setTargetValue(value.trim());
// casesIndicators.setTargetValue(value.trim());
// TargetValue = value.trim();
// }
// if( j == 6 ) {
//
// indicator.setCalculateUnits(value.trim());
// casesIndicators.setCalculateUnits(value.trim());
// calculateUnits = value.trim();
// }
// if( j == 7 ) {
//
// indicator.setCalculateSymbol(value.trim());
// casesIndicators.setCalculateSymbol(value.trim());
calculateSymbol = value.trim();
// }
// if( j == 8 ) {
// indicator.setStandardType(value.trim());
// //生成结果为例:>=90%(计划标准)
// indicator.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
// casesIndicators.setIndicatorStandard(value.trim());
// casesIndicators.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
// }
// if( j == 9 ) {
//
// indicator.setPerformanceValueType(value.trim());
// casesIndicators.setPerformanceValueType(value.trim());
// }

                //存储map中
                if (StringUtils.isEmpty(value)) {
                    value = "";
                }

                //将这一列, 以列序号为key, 列内容为值, 存入准备好的map容器中.
                stringStringHashMap.put(key, value);

            }

            //最后, 将这一行作为一个整体对象存进List中.
            ListMap.add(stringStringHashMap);
        } else {
            break;
        }

// if (service.selectCasesIndicatorsByName(name)== null) {
//version版本设置
// indicator.setVersion(“宁德”);
// indicator.setEnabled(“1”);
// indicator.setIndicatorType(“系統指标”);
// casesIndicators.setCode(Integer.parseInt(casesIndicatorsCode));
// service.insertIndicator(indicator);
// service.insert(casesIndicators);
// rows++;
if(service.selectCasesByName(name) == null){
service.insertCases(cases);
// casesIndicatorsCode=cases.getCode();
}

// System.err.println(rows);
// } else if(service.selectCasesIndicatorsByName(name)!= null){
// Integer rows = service.updateCasesIndicators(name);
// System.err.println(rows);
// }
}

    //以上, 就得到了上传进来的Excel中的数据.

    /**---------------------------华丽的分割线---------------------------------*/


    //以下,则可以对该数据进行自己项目的不同操作.


    //最后,返回处理成功的标识即可.
    return "本次插入行数:"+rows;
}

}

// public String importCases(HttpServletRequest request, MultipartFile multipartFile) throws Exception {
//
// Integer rows=0;
// String name = null;
// String casesIndicatorsCode = “”;
String calculateSymbol = null;
// String TargetValue = null;
// String calculateUnits = null;
//
// //三个实体类实例化方便调取set方法
// Indicator indicator = new Indicator();
// CasesIndicators casesIndicators = new CasesIndicators();
// Cases cases = new Cases();
//
// //准备List容器进行存储数据
// List<Map<String, Object>> ListMap = new ArrayList<Map<String, Object>>();
//
// //利用Workbook接口和判断excel版本创建相应版本 HSSFWorkbook/XSSFWorkbook对象
// org.apache.poi.ss.usermodel.Workbook workbook = null;
//
// // 获取上传文件的原始名称
// String filename = multipartFile.getOriginalFilename();
//
// //获取文件后缀名称,如果后缀是xls则结果为true,如果为xlsx,则结果为false.
// boolean isExcel2003 = filename.toLowerCase().endsWith(“xls”) ? true : false;
//
// //根据不同版本,创建不同的EXCEL表格. 注意: 有的poi的jar包在这一步是不适用的.如果不适用则只能根据不同文件进行不同的方法处理了.
// if (isExcel2003) {
// workbook = new org.apache.poi.hssf.usermodel.HSSFWorkbook(multipartFile.getInputStream());
// } else {
// workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(multipartFile.getInputStream());
// }
//
// //创建这个EXCEL的一页. 一个工作簿有多个sheet,可以把工作簿就看成一本书, sheet就是页. 每页里面就是一张Excel表格了.
// org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
//
//
// //获取EXCEL第一页中(列头)的总列数.
// int physicalNumberOfCells = sheet.getRow(0).getPhysicalNumberOfCells();
// int hang =sheet.getPhysicalNumberOfRows();
// int hang2 =sheet.getLastRowNum();
//
// /**
// * 通常第一行都是标题,所以从第二行开始读取数据.这要根据实际情况自行定义开始索引.
// /
// for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
//
// //准备容器
// HashMap<String, Object> stringStringHashMap = new HashMap<>();
//
// //获取这个一页中这个表格的一行数据.
// org.apache.poi.ss.usermodel.Row row = sheet.getRow(i);
//
// //如果该行里面存在数据.
// if (row != null) {
//
// //遍历这行的所有列,按顺序取值,并存入一个map中,key为列的顺序,value为EXCEL这一列的具体值
// for (int j = 0; j < physicalNumberOfCells; j++) {
//
// //指定每行每列的接收类型为String
// String key = “” + j;
//
// //获取每一列
// org.apache.poi.ss.usermodel.Cell cell = row.getCell(j);
//
// //准备接收列内容的容器.
// String value = “”;
//
// //由于每一列的值类型都可能不同, 所以要根据不同类型进行转换, 否则取值时候会出现问题.
//
// //如果列内容不为null
// if (cell != null) {
//
// //则判断是否为数值-- 数据又分两种: 日期和纯数字.
// if (0 == cell.getCellType()) {
//
// // 如果是日期类型.
// if (org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(cell)) {
// // 则以日期格式获取列值
// Date date = cell.getDateCellValue();
// //并指定日期格式,进行格式化
// DateFormat formater = new SimpleDateFormat(
// “yyyy-MM-dd”);
// value = formater.format(date);
// } else {
//
// //如果不是日期, 则为纯数字. 我在这里直接以String类型接收, 正常来讲是要用纯数字接收的.
// cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
// value = cell.getStringCellValue();
//
// }
//
// } else {
//
// //如果不为数值, 既不是日期也不是纯数字, 在这里, 统统设置成以字符串进行接收. 如果想具体区别接收,请自行百度.
// cell.setCellType(org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING);
// value = cell.getStringCellValue();
//
// }
// } else {
//
// //如果列内容为null, 则直接设置内容为 " “;
// value = “”;
//
// }
// //指标库插入方式
// //以下则是根据第几列,将相应的列set进实体类中对应的字段
// if( j == 0 ) {
//
// indicator.setCases(value.trim());
// casesIndicators.setName(value.trim());
// cases.setName(value.trim());
// name = value.trim();
//
//
// }
// if( j == 1 ) {
//
// indicator.setCode(value.trim());
// casesIndicators.setIndicatorCode(value.trim());
//
// }
//
// if( j == 2 ) {
//
// indicator.setFirstIndicator(value.trim());
// casesIndicators.setFirstIndicator(value.trim());
// }
// if( j == 3 ) {
//
// indicator.setSecondIndicator(value.trim());
// casesIndicators.setSecondIndicator(value.trim());
// }
// if( j == 4 ) {
//
// indicator.setName(value.trim());
// casesIndicators.setIndicatorName(value.trim());
// }
// if( j == 5 ) {
//
// indicator.setTargetValue(value.trim());
// casesIndicators.setTargetValue(value.trim());
// TargetValue = value.trim();
// }
// if( j == 6 ) {
//
// indicator.setCalculateUnits(value.trim());
// casesIndicators.setCalculateUnits(value.trim());
// calculateUnits = value.trim();
// }
// if( j == 7 ) {
//
// indicator.setCalculateSymbol(value.trim());
// casesIndicators.setCalculateSymbol(value.trim());
calculateSymbol = value.trim();
// }
// if( j == 8 ) {
// indicator.setStandardType(value.trim());
// //生成结果为例:>=90%(计划标准)
// indicator.setIndicatorStandard(TargetValue+calculateUnits+”("+value.trim()+")");
// casesIndicators.setIndicatorStandard(value.trim());
// casesIndicators.setIndicatorStandard(TargetValue+calculateUnits+"("+value.trim()+")");
// }
// if( j == 9 ) {
//
// indicator.setPerformanceValueType(value.trim());
// casesIndicators.setPerformanceValueType(value.trim());
// }
//
// //存储map中
// if (StringUtils.isEmpty(value)) {
// value = “”;
// }
//
// //将这一列, 以列序号为key, 列内容为值, 存入准备好的map容器中.
// stringStringHashMap.put(key, value);
//
// }
//
// //最后, 将这一行作为一个整体对象存进List中.
// ListMap.add(stringStringHashMap);
// } else {
// break;
// }
if (service.selectCasesIndicatorsByName(name)== null) {
// //version版本设置
// indicator.setVersion(“宁德”);
// indicator.setEnabled(“1”);
// indicator.setIndicatorType(“系統指标”);
casesIndicators.setCode(Integer.parseInt(casesIndicatorsCode));
// service.insertIndicator(indicator);
// service.insert(casesIndicators);
// rows++;
// if(service.selectCasesByName(name).isEmpty()){
// service.insertCases(cases);
// casesIndicatorsCode=cases.getCode();
// }
//
System.err.println(rows);
} else if(service.selectCasesIndicatorsByName(name)!= null){
Integer rows = service.updateCasesIndicators(name);
System.err.println(rows);
}
// }
//
// //以上, 就得到了上传进来的Excel中的数据.
//
// /**---------------------------华丽的分割线---------------------------------
/
//
//
// //以下,则可以对该数据进行自己项目的不同操作.
//
//
// //最后,返回处理成功的标识即可.
// return “本次插入行数:”+rows;
// }
//}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值