excel 导入功能
一:示例代码
//InputStream fis = new FileInputStream(tomcaturl+this.awardTask.getFileRoute());
//可以通过上述方式获得InputStream
private List<XueBaQuestionEntity> GetAllImportQuestion(InputStream inputstream) {
// POIFSFileSystem fs;
// HSSFWorkbook wb;
// HSSFSheet sheet;
// HSSFRow row;
// HSSF只支持excel2003
List<XueBaQuestionEntity> questionList = new ArrayList<XueBaQuestionEntity>();
List<XueBaOptionEntity> optionList;
XueBaQuestionEntity question = null;
try{
// fs = new POIFSFileSystem(inputstream);
// wb = new HSSFWorkbook(fs);
Workbook wb = WorkbookFactory.create(inputstream);
/** 遍历sheet **/
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
/** 获得当前sheet **/
Sheet sheet = wb.getSheetAt(i);
int num = 1;
for (int j = 1; j < sheet.getPhysicalNumberOfRows() ; j++) {
num++;
try{
question = new XueBaQuestionEntity();
optionList = new ArrayList<XueBaOptionEntity>();
/** 获得当前行情 **/
Row row = sheet.getRow(j);
if(row != null){
String qContent = getCellFormatValue(row.getCell(0)).trim();
String aOption = getCellFormatValue(row.getCell(1)).trim();
//题目或A选项为空就不保存
if(StringUtil.isEmpty(qContent) || StringUtil.isEmpty(aOption)){
logger.info("题库第" + num + "行题库或A选项为空,未保存");
continue;
}
String bOption = getCellFormatValue(row.getCell(2)).trim();
String cOption = getCellFormatValue(row.getCell(3)).trim();
String dOption = getCellFormatValue(row.getCell(4)).trim();
String eOption = getCellFormatValue(row.getCell(5)).trim();
String answer = getCellFormatValue(row.getCell(6)).trim();
System.out.println("qcontent:"+qContent);
/* 赋值问题实体 */
question.setContent(qContent);
if(answer.indexOf(",")>0){
question.setType(1);
}else{
question.setType(0);
}
question.setAnswer(answer);
//赋值选项实体
if (StringUtil.isNotEmpty(aOption)) {
XueBaOptionEntity aOptionEntity = new XueBaOptionEntity();
aOptionEntity = DealOption(aOptionEntity,aOption);
optionList.add(aOptionEntity);
}
if (StringUtil.isNotEmpty(bOption)) {
XueBaOptionEntity bOptionEntity = new XueBaOptionEntity();
bOptionEntity = DealOption(bOptionEntity,bOption);
optionList.add(bOptionEntity);
}
if (StringUtil.isNotEmpty(cOption)) {
XueBaOptionEntity cOptionEntity = new XueBaOptionEntity();
cOptionEntity = DealOption(cOptionEntity,cOption);
optionList.add(cOptionEntity);
}
if (StringUtil.isNotEmpty(dOption)) {
XueBaOptionEntity dOptionEntity = new XueBaOptionEntity();
dOptionEntity = DealOption(dOptionEntity,dOption);
optionList.add(dOptionEntity);
}
if (StringUtil.isNotEmpty(eOption)) {
XueBaOptionEntity eOptionEntity = new XueBaOptionEntity();
eOptionEntity = DealOption(eOptionEntity,eOption);
optionList.add(eOptionEntity);
}
question.setXueBaOptionList(optionList);
questionList.add(question);
}
}catch (Exception e) {
e.printStackTrace();
logger.info("题库第" + num + "行解析异常");
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
return questionList;
}
private XueBaOptionEntity DealOption(XueBaOptionEntity optionEntity,
String option) {
int start = option.indexOf("、");
// System.out.println("option:"+option+" start:"+start);
String optionTitle = option.substring(0, start);
String optionContent = option.substring(start+1);
optionEntity.setTitle(optionTitle);
optionEntity.setContent(optionContent);
return optionEntity;
}
private String getCellFormatValue(Cell cell) {
String cellvalue = "";
if (cell != null) {
// 判断当前Cell的Type
switch (cell.getCellType()) {
// 如果当前Cell的Type为NUMERIC
case Cell.CELL_TYPE_NUMERIC:{
BigDecimal big = new BigDecimal(cell.getNumericCellValue());
cellvalue = big.toString();
break;
}
case Cell.CELL_TYPE_FORMULA: {
BigDecimal bigula = new BigDecimal(cell
.getCachedFormulaResultType());
cellvalue = bigula.toString();
break;
}
// 如果当前Cell的Type为STRING
case Cell.CELL_TYPE_STRING:
// 取得当前的Cell字符串
cellvalue = cell.getRichStringCellValue().getString();
break;
// 默认的Cell值
default:
cellvalue = " ";
}
} else {
cellvalue = "";
}
return cellvalue;
}
excel 导入功能的更多相关文章
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
- java利用jxl实现Excel导入功能
本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...
- 后端Springboot前端VUE实现Excel导入功能
功能描述:做的是物联网的项目,Excel导入实现的功能是将Excel中的数据批量的导入AEP系统,再导入我们系统中.目前已经完成该功能,前端还会添加进度条优化.对于导入导出功能,推荐这个Git:htt ...
- Excel导入功能
一:前端 <t:dgToolBar title="Excel题库导入" icon="icon-search" onclick="question ...
- Java中Excel导入功能实现、excel导入公共方法_POI -
这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> ...
- Excel导入功能(Ajaxfileupload)
前言: 前端采用Easyui+Ajaxfileupload实现 后端采用springmvc框架,其中把解析xml封装成了一个jar包,直接调用即可 准备: 前端需要导入(easyui导入js省略,自行 ...
- php Excel 导入功能
下载excel类地址 https://pan.baidu.com/s/19MqAHUn4RyZ5HEAChyC0jg 密码:mn58 本人用的thinkcmf框架 把类文件放在框架的类文件里面,下面 ...
- Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能
1.工具类,读取单元格数据的时候,如果当前单元格是合并单元格,会自动读取合并单元格的值 package com.shjh.core.util; import java.io.IOException; ...
- React + Antd开发模式下的Excel导入功能
具体js如下,配合的是antd里面的upload组件,使用的是xlsx插件 npm : npm install xlsx 插件链接: https://github.com/SheetJS/sheet ...
随机推荐
- JavaScipt call和apply用法
转:http://www.cnblogs.com/wupeng/p/3477879.html Javascript call与apply记录 [注]:记录自己对javascript中call与appl ...
- oc-12-NSString 类简单介绍及用法
// 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...
- unity工程接入Android sdk后真机测试解锁屏后退出的解决
unity工程接入如91.移动支付等Android sdk后,真机运行尤其是在4.0+以上坏境,往往会出现解锁屏后退出的情况,解决办法如下: 可以在AndroidManifest.xml中所有的con ...
- C专家编程 总结
1 类型转换 当执行算术运算时,操作数的类型如果不同,就会发生转换,数据类型一般朝着浮点精度高.长度更长的方向转换,整数型如果转换为signed不会丢失信息,就转换为signed,否则转换为unsig ...
- LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...
- PHP设计模式之策略模式
前提: 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查 找.排序等,一种常用的方法是硬编码(Hard Cod ...
- c语言趣味
改编java趣味100题,c语言版 1.C语言版金字塔 #include <stdio.h> int main() { int n,i,j,k; scanf("%d", ...
- Object-c中的属性和成员变量的关系详解
很多人在初学移动开发的时候会对object-c中的合成存取方法感到疑惑,此处尝试为看到本文有缘人答疑解惑,鄙人才疏学浅,难免有疏漏谬误之处,热烈欢迎诸位看官拍砖指点. 1.合成存取方法: OC为增加开 ...
- Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)
1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...