/*上传*/
@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;
// }
//}