package cn.jit.util;
import cn.jit.handler.ExcelHeader;
import cn.jit.handler.ExcelTemplate;
import cn.jit.util.Utils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class ExcelUtils {
static private ExcelUtils excelUtils = new ExcelUtils();
private ExcelUtils() {
}
public static ExcelUtils getInstance() {
return excelUtils;
}
/*----------------------------------------读取Excel操作基于注解映射---------------------------------------------*/
/* 一. 操作流程 : */
/* 1) 读取表头信息,与给出的Class类注解匹配 */
/* 2) 读取表头下面的数据内容, 按行读取, 并映射至java对象 */
/* 二. 参数说明 */
/* *) excelPath => 目标Excel路径 */
/* *) InputStream => 目标Excel文件流 */
/* *) clazz => java映射对象 */
/* *) offsetLine => 开始读取行坐标(默认0) */
/* *) limitLine => 最大读取行数(默认表尾) */
/* *) sheetIndex => Sheet索引(默认0) */
public <T> List<T> readExcel2Objects(String excelPath, Class<T> clazz, int offsetLine, int limitLine, int
sheetIndex) throws Exception {
Workbook workbook = WorkbookFactory.create(new File(excelPath));
return readExcel2ObjectsHandler(workbook, clazz, offsetLine, limitLine, sheetIndex);
}
public <T> List<T> readExcel2Objects(InputStream is, Class<T> clazz, int offsetLine, int limitLine, int
sheetIndex) throws Exception {
Workbook workbook = WorkbookFactory.create(is);
return readExcel2ObjectsHandler(workbook, clazz, offsetLine, limitLine, sheetIndex);
}
public <T> List<T> readExcel2Objects(String excelPath, Class<T> clazz, int sheetIndex)
throws Exception {
return readExcel2Objects(excelPath, clazz, 0, Integer.MAX_VALUE, sheetIndex);
}
public <T> List<T> readExcel2Objects(String excelPath, Class<T> clazz)
throws Exception {
return readExcel2Objects(excelPath, clazz, 0, Integer.MAX_VALUE, 0);
}
public <T> List<T> readExcel2Objects(InputStream is, Class<T> clazz, int sheetIndex)
throws Exception {
return readExcel2Objects(is, clazz, 0, Integer.MAX_VALUE, sheetIndex);
}
public <T> List<T> readExcel2Objects(InputStream is, Class<T> clazz)
throws Exception {
return readExcel2Objects(is, clazz, 0, Integer.MAX_VALUE, 0);
}
private <T> List<T> readExcel2ObjectsHandler(Workbook workbook, Class<T> clazz, int offsetLine, int limitLine,
int sheetIndex) throws Exception {
Sheet sheet = workbook.getSheetAt(sheetIndex);
Row row = sheet.getRow(offsetLine);
List<T> list = new ArrayList<>();
Map<Integer, ExcelHeader> maps = Utils.getHeaderMap(row, clazz);
if (maps == null || maps.size() <= 0)
throw new RuntimeException("要读取的Excel的格式不正确,检查是否设定了合适的行");
int maxLine = sheet.getLastRowNum() > (offsetLine + limitLine) ? (offsetLine + limitLine) : sheet
.getLastRowNum();
for (int i = offsetLine + 1; i <= maxLine; i++) {
row = sheet.getRow(i);
T obj = clazz.newInstance();
for (Cell cell : row) {
int ci = cell.getColumnIndex();
ExcelHeader header = maps.get(ci);
if (null == header)
continue;
String filed = header.getFiled();
String val = Utils.getCellValue(cell);
Object value = Utils.str2TargetClass(val, header.getFiledClazz());
BeanUtils.copyProperty(obj, filed, value);
}
list.add(obj);
}
return list;
}
/*----------------------------------------读取Excel操作无映射--------------------------------------------------*/
/* 一. 操作流程 : */
/* *) 按行读取Excel文件,存储形式为 Cell->String => Row->List<Cell> => Excel->List<Row> */
/* 二. 参数说明 */
/* *) excelPath => 目标Excel路径 */
/* *) InputStream => 目标Excel文件流 */
/* *) offsetLine => 开始读取行坐标(默认0) */
/* *) limitLine => 最大读取行数(默认表尾) */
/* *) sheetIndex => Sheet索引(默认0) */
public List<List<String>> readExcel2List(String excelPath, int offsetLine, int limitLine, int sheetIndex)
throws Exception {
Workbook workbook = WorkbookFactory.create(new File(excelPath));
return readExcel2ObjectsHandler(workbook, offsetLine, limitLine, sheetIndex);
}
public List<List<String>> readExcel2List(InputStream is, int offsetLine, int limitLine, int sheetIndex)
throws Exception {
Workbook workbook = WorkbookFactory.create(is);
return readExcel2ObjectsHandler(workbook, offsetLine, limitLine, sheetIndex);
}
public List<List<String>> readExcel2List(String excelPath, int offsetLine)
throws Exception {
Workbook workbook = WorkbookFactory.create(new File(excelPath));
return readExcel2ObjectsHandler(workbook, offsetLine, Integer.MAX_VALUE, 0);
}
public List<List<String>> readExcel2List(InputStream is, int offsetLine)
throws Exception {
Workbook workbook = WorkbookFactory.create(is);
return readExcel2ObjectsHandler(workbook, offsetLine, Integer.MAX_VALUE, 0);
}
public List<List<String>> readExcel2List(String excelPath)
throws Exception {
Workbook workbook = WorkbookFactory.create(new File(excelPath));
return readExcel2ObjectsHandler(workbook, 0, Integer.MAX_VALUE, 0);
}
public List<List<String>> readExcel2List(InputStream is)
throws Exception {
Workbook workbook = WorkbookFactory.create(is);
return readExcel2ObjectsHandler(workbook, 0, Integer.MAX_VALUE, 0);
}
private List<List<String>> readExcel2ObjectsHandler(Workbook workbook, int offsetLine, int limitLine, int
sheetIndex)
throws Exception {
List<List<String>> list = new ArrayList<>();
Sheet sheet = workbook.getSheetAt(sheetIndex);
int maxLine = sheet.g
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
dsts模拟考试系统设计源码:该项目基于Java开发,包含991个文件,主要使用JavaScript、Java和CSS语言。该设计源码是用SSM、MySQL、HTML、CSS、Javascript实现的模拟考试系统,适用于在线考试和模拟测试场景。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的dsts模拟考试系统设计源码 (993个子文件)
.classpath 825B
org.eclipse.wst.common.component 456B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.css 124KB
bootstrap.min.css 104KB
bootstrap-responsive.css 22KB
bootstrap-responsive.min.css 16KB
index.css 1KB
basic.css 512B
angular-csp.css 263B
start_exam.css 146B
register.css 52B
login.css 52B
file_upload.css 0B
upload_headphoto.css 0B
.gitignore 102B
ooxml-schemas-1.1.jar 14.15MB
java-jwt-2.2.0.jar 4.48MB
xmlbeans-2.6.0.jar 2.6MB
poi-3.12.jar 2.04MB
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar 1.57MB
mongo-java-driver-3.2.2.jar 1.42MB
jackson-databind-2.8.2.jar 1.18MB
poi-ooxml-3.12.jar 1.17MB
spring-context-4.0.6.RELEASE.jar 955KB
spring-core-4.0.6.RELEASE.jar 954KB
jackson-all-1.6.2.jar 842KB
mybatis-3.2.5.jar 699KB
spring-web-4.0.6.RELEASE.jar 657KB
spring-beans-4.0.6.RELEASE.jar 655KB
spring-webmvc-4.0.6.RELEASE.jar 647KB
quartz-2.2.1.jar 645KB
javassist-3.11.0.GA.jar 600KB
c3p0-0.9.1.jar 594KB
commons-collections-3.1.jar 546KB
jedis-2.9.0.jar 541KB
jackson-mapper-asl-1.6.2.jar 530KB
mysql-connector-java-5.0.8-bin.jar 528KB
core-2.3.0.jar 516KB
mail-1.4.7.jar 509KB
log4j-1.2.16.jar 470KB
mysql.jar 464KB
spring-test-4.0.6.RELEASE.jar 439KB
commons-lang3-3.4.jar 424KB
httpclient-4.2.1.jar 417KB
spring-jdbc-4.0.6.RELEASE.jar 415KB
spring-orm-4.0.6.RELEASE.jar 359KB
spring-aop-4.0.6.RELEASE.jar 345KB
standard.jar 343KB
com.springsource.net.sf.cglib-2.2.0.jar 319KB
jackson-core-2.8.2.jar 274KB
commons-codec-1.9.jar 258KB
commons-lang-2.4.jar 256KB
spring-tx-4.0.6.RELEASE.jar 243KB
gson-2.1-javadoc.jar 240KB
commons-beanutils-1.8.3.jar 227KB
ognl-3.0.6.jar 223KB
httpcore-4.2.1.jar 218KB
junit-4.6.jar 213KB
spring-expression-4.0.6.RELEASE.jar 201KB
jackson-core-asl-1.6.2.jar 196KB
gson-2.1.jar 176KB
commons-io-2.2.jar 170KB
jdom.jar 150KB
commons-dbcp-1.3.jar 145KB
json-lib-2.2.3-jdk15.jar 145KB
spring-context-support-4.0.6.RELEASE.jar 132KB
gson-2.1-sources.jar 122KB
httpclient-cache-4.2.1.jar 112KB
commons-pool2-2.4.2.jar 109KB
ezmorph-1.0.6.jar 84KB
commons-fileupload-1.3.1.jar 67KB
validation-api-1.1.0.Final.jar 62KB
commons-logging-1.1.3.jar 61KB
jackson-annotations-2.8.2.jar 54KB
spring-aspects-4.0.6.RELEASE.jar 51KB
mybatis-spring-1.2.0.jar 48KB
json.jar 45KB
asm-3.3.jar 43KB
asm-commons-3.3.jar 37KB
httpmime-4.2.1.jar 26KB
slf4j-api-1.6.6.jar 26KB
asm-tree-3.3.jar 21KB
jstl.jar 17KB
mybatis-ehcache-1.0.3.jar 11KB
slf4j-log4j12-1.6.6.jar 9KB
com.springsource.org.aopalliance-1.0.0.jar 5KB
ExcelUtils.java 26KB
UserController.java 19KB
ExcelTemplate.java 10KB
AdminController.java 8KB
ExamController.java 7KB
DateUtils.java 6KB
Utils.java 5KB
BaseController.java 5KB
FileController.java 4KB
SqlUtil.java 4KB
RedisUtil.java 3KB
Question.java 3KB
QuestionVo.java 3KB
共 993 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
沐知全栈开发
- 粉丝: 5017
- 资源: 4984
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功