Java读取并导入Excel题库

//like12 add,20161107,Java读取并导入Excel题库

@Expose

public String netExcelImportAction(Map<String,Object>parameter) throws Exception{

System.out.println("Excel题库导入----");

if(parameter == null){

return "parameter不能为空";

}

String fileName = (String)parameter.get("fileName");

String strLicenseType = (String)parameter.get("strLicenseType");

String strSubject = (String)parameter.get("strSubject");

String strChapterParam = (String)parameter.get("strChapterParam");

if(StringUtils.isEmpty(fileName)

|| StringUtils.isEmpty(strLicenseType)

|| StringUtils.isEmpty(strSubject)

|| StringUtils.isEmpty(strChapterParam)

){

return "fileName等参数不能为空";

}

//读取指定的文件

File fIn = new File("d:" + File.separator + fileName);

FileInputStream readFile = null;

HSSFWorkbook wb = null;

try {

readFile = new FileInputStream(fIn);

wb = new HSSFWorkbook(readFile);

} catch (Exception e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

HSSFSheet sheet = wb.getSheetAt(0);

HSSFRow row = sheet.getRow(0);

//获取总行数

int rowNum = sheet.getLastRowNum();

System.out.println("---Size:" + rowNum);

//HSSFCell cell = row.getCell(0);

//System.out.println(cell.getRichStringCellValue());

try {

readFile.close();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

String sortOrder = null;

String question = null;

String type = null;

String an1 = null;

String an2 = null;

String an3 = null;

String an4 = null;

String correctAnswer = null;

//like12 add,20171117,解释 与 图片

String explanation = null;

String imageUrl = null;

String strChapter = null;

int sortOrderInt = 0;

for(int i=1; i<=rowNum; i++){

row = sheet.getRow(i);

sortOrder = getCellValue(row.getCell(0));

type = getCellValue(row.getCell(1));

question = getCellValue(row.getCell(2));

an1 = getCellValue(row.getCell(3));

an2 = getCellValue(row.getCell(4));

an3 = getCellValue(row.getCell(5));

an4 = getCellValue(row.getCell(6));

correctAnswer = getCellValue(row.getCell(7));

sortOrderInt = Integer.parseInt(sortOrder);

//like12 add,20171117,解释 与 图片

explanation = getCellValue(row.getCell(8));

imageUrl = getCellValue(row.getCell(9));

strChapter = getCellValue(row.getCell(10));

if(StringUtils.isEmpty(strChapter)){//没有时才用参数覆盖

strChapter = strChapterParam;

}

StdExamLibs stdExamLibs = new StdExamLibs();

stdExamLibs.setSortOrder(sortOrderInt);

stdExamLibs.setQuestion(question);

stdExamLibs.setAn1(an1);

stdExamLibs.setAn2(an2);

stdExamLibs.setAn3(an3);

stdExamLibs.setAn4(an4);

if("A".equals(correctAnswer)){

correctAnswer = "1";

}else if("B".equals(correctAnswer)){

correctAnswer = "2";

}else if("C".equals(correctAnswer)){

correctAnswer = "3";

}else if("D".equals(correctAnswer)){

correctAnswer = "4";

}else if("AB".equals(correctAnswer)){

correctAnswer = "12";

}else if("AC".equals(correctAnswer)){

correctAnswer = "13";

}else if("AD".equals(correctAnswer)){

correctAnswer = "14";

}else if("BC".equals(correctAnswer)){

correctAnswer = "23";

}else if("BD".equals(correctAnswer)){

correctAnswer = "24";

}else if("CD".equals(correctAnswer)){

correctAnswer = "34";

}else if("ABC".equals(correctAnswer)){

correctAnswer = "123";

}else if("ABD".equals(correctAnswer)){

correctAnswer = "124";

}else if("ACD".equals(correctAnswer)){

correctAnswer = "134";

}else if("BCD".equals(correctAnswer)){

correctAnswer = "234";

}else if("ABCD".equals(correctAnswer)){

correctAnswer = "1234";

}else{

System.out.println("--Error 既不是 A 也不是 B...");

return sortOrderInt + " 既不是 A 也不是 B";

}

stdExamLibs.setCorrectAnswer(correctAnswer);

if("判断".equals(type)){

stdExamLibs.setType(1);//1判断2单选3多选

}else if("单选".equals(type)){

stdExamLibs.setType(2);

}else if("多选".equals(type)){

stdExamLibs.setType(3);

}else{

System.out.println("--Error 既不是 判断 也不是单选...");

return sortOrderInt + " 既不是 判断 也不是单选";

}

//like12 add,20171117,解释 与 图片

stdExamLibs.setExplanation(explanation);

stdExamLibs.setImageUrl(imageUrl);

stdExamLibs.setLicenseType(strLicenseType);//车型

stdExamLibs.setChapter(strChapter);//章节

stdExamLibs.setSubject(strSubject);//科目

System.out.println("--- " + i + "/" + rowNum

+ "--" + stdExamLibs.getSortOrder()

+ " " + stdExamLibs.getQuestion()

+ " " + stdExamLibs.getAn1()

+ " " + stdExamLibs.getAn2()

+ " " + stdExamLibs.getAn3()

+ " " + stdExamLibs.getAn4()

+ " " + stdExamLibs.getCorrectAnswer()

+ " " + stdExamLibs.getExplanation()

+ " " + stdExamLibs.getImageUrl()

+ " " + stdExamLibs.getLicenseType()

+ " " + stdExamLibs.getSubject()

+ " " + stdExamLibs.getType()

+ " " + stdExamLibs.getChapter()

);

//保存题库

stdExamLibsDS.saveStdExamLibs(stdExamLibs, null);

}

System.out.println("---finish");

return "success";

}

private String getCellValue(HSSFCell cell) {

if(cell == null){

return null;

}

String cellValue = "";

//like12 modified bug,20171124,不能保留小数

//DecimalFormat df = new DecimalFormat("#");//不保留小数

DecimalFormat df = new DecimalFormat("#.##");//最多保留x位小数

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:

cellValue = cell.getRichStringCellValue().getString().trim();

break;

case HSSFCell.CELL_TYPE_NUMERIC:

cellValue = df.format(cell.getNumericCellValue()).toString();

break;

case HSSFCell.CELL_TYPE_BOOLEAN:

cellValue = String.valueOf(cell.getBooleanCellValue()).trim();

break;

case HSSFCell.CELL_TYPE_FORMULA:

cellValue = cell.getCellFormula();

break;

default:

cellValue = "";

}

return cellValue;

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值