- 浏览: 56499 次
文章分类
- 全部博客 (46)
- java邮件组件 (1)
- java excel上传 (3)
- java 导出excel (1)
- java文件上传 (1)
- java文件上传、下载 (1)
- mytatis插件 (1)
- jquery.validate.min.js 非空验证 (1)
- 常用js工具 (2)
- 编程规范 (1)
- art.dialog页面 (1)
- java常量配置 (1)
- 框架知识 (2)
- web页面前段技术 (3)
- Method方法反射机制 (1)
- 数据库 (5)
- java解析excel数据 (1)
- java 反射 (1)
- spring 注解 (2)
- mybatis (4)
- Eclipse 模板 (1)
- web页面前端技术 (3)
- java 1.8 (1)
- 111111 (0)
- EL (1)
- mysql 分页 (1)
- excel导出 (1)
- 页面通用查询保存方法 (1)
- 自动创建数据库脚本 (1)
- 重复提交后台校验 (1)
- maven (1)
最新评论
/////////////////页面js代码
<script type="text/javascript">
var planMonth = "${param.planMonth}";
function import_rollPlan() {
var fileName = $("#excel").val();
if($("#excel").val()==''){
art.dialog({
content : "请选择文件",
lock : true
});
return;
}
if(fileName.lastIndexOf(".xlsx") != -1 || fileName.lastIndexOf(".xls") != -1) {
art.dialog({
width : "200px",
content:"文件加载成功,是否确定导入",
lock : true,
button: [{name:'是',
callback:function (){
window.setTimeout(function(){
$("#upForm").ajaxSubmit({
url : "${contextPath}/service/pageReq",
type : 'post',
dataType : "json",
data : {content:"planMonth:" + planMonth, needcontrolprocess : "purRollPlanService.importRollPlan"},
success : function(data) {
var dialog = art.dialog.get('importing_dialog');
dialog.close();
if (data.status == "FAIL") {
art.dialog({
title : "提示",
width : "350px",
content : "数据格式非法,导入失败!",
lock : true,
ok: function () {
_myDialog.close();
doSearch();
}
});
} else {
art.dialog({
title : "提示",
width : "350px",
content : data.expData.impResultMsg,
lock : true,
ok: function () {
_myDialog.close();
doSearch();
}
});
}
}
});
},10);
art.dialog({
id : "importing_dialog",
title : "提示",
width : "200px",
content : "正在导入,请稍等...",
lock : true
});
},focus: true},
{name:'否'}
]
});
} else {
alert("请选择正确的excel文件!")
}
}
</script>
//////////////////
public abstract class AbstractExcelReader {
public abstract void doParse(Workbook workbook);
/*
*相当于
Reader(new a());
public class a implements Validate {
@Override
public void doValidate(InputStream inputStream) throws Exception {
String fileType = getType(inputStream);
if (StringUtils.isBlank(fileType)
|| (!FileType.XLSX.getValue().equals(fileType)
&& !FileType.XLS_DOC.getValue().equals(fileType) && !FileType.XLSX_DOCX
.getValue().equals(fileType))) {
throw new ServiceException("上传失败,请选择Excel类型文件! ");
}
}
}
*/
public void Reader() throws Exception {
Reader((InputStream inputStream) -> {
String fileType = getType(inputStream);
if (StringUtils.isBlank(fileType)
|| (!FileType.XLSX.getValue().equals(fileType)
&& !FileType.XLS_DOC.getValue().equals(fileType) && !FileType.XLSX_DOCX
.getValue().equals(fileType))) {
throw new ServiceException("上传失败,请选择Excel类型文件! ");
}
});
}
public void Reader(Validate validate) throws Exception {
MultiPartRequestWrapper mpRequest = (MultiPartRequestWrapper) HttpServletHolder
.getCurrentRequest();
//@sfit1092 解决ie安全警告
HttpServletHolder.getCurrentResponse().setContentType("application/octet-stream; charset=UTF-8");
// 导入的文件
File files = mpRequest.getFiles("excel")[0];
if (null == files) {
throw new FileNotFoundException("解析的文件不存在");
}
try (InputStream fileInputStream = new FileInputStream(files);) {
validate.doValidate(fileInputStream);
if (!fileInputStream.markSupported()) {
try (BufferedInputStream bufferedInputStream = new BufferedInputStream(
fileInputStream);) {
Workbook workbook = null;
if (POIFSFileSystem.hasPOIFSHeader(bufferedInputStream)) {
workbook = new HSSFWorkbook(bufferedInputStream);
} else if (POIXMLDocument
.hasOOXMLHeader(bufferedInputStream)) {
workbook = new XSSFWorkbook(
OPCPackage.open(bufferedInputStream));
} else {
throw new ServiceException("没有获得相应的workbook");
}
doParse(workbook);
}
}
}
}
/**
* * 判断文件类型
*
* @param inputStream
*
* @return 文件类型
*
*/
private static String getType(InputStream inputStream) throws IOException {
if (inputStream == null) {
return null;
}
String fileHead = getFileContent(inputStream);
if (fileHead == null || fileHead.length() == 0) {
return null;
}
fileHead = fileHead.toUpperCase();
FileType[] fileTypes = FileType.values();
for (FileType type : fileTypes) {
if (fileHead.startsWith(type.getValue())) {
return type.getValue();
}
}
throw new ServiceException("没有获取到响应的文件类型");
}
/**
* 得到文件头
*
* @param filePath
* 文件路径
* @return 文件头
* @throws IOException
*/
private static String getFileContent(InputStream inputStream)
throws IOException {
int length = 28;
byte[] b = null;
if (inputStream != null) {
inputStream.read(b = new byte[length], 0, length);
inputStream.skip(-length);
}
return FileTypeJudge.bytesToHexString(b);
}
public interface Validate {
public void doValidate(InputStream inputStream) throws Exception;
}
}
/***解析代码///////////////////////////
List<PurRollPlan> rollList = new ArrayList<PurRollPlan>();
try {
new AbstractExcelReader() {
@Override
public void doParse(Workbook workbook) {
Sheet f = workbook.getSheetAt(0);
int totalRow = f.getLastRowNum();
for (int i = 1; i <= totalRow; i++) {
Row row = f.getRow(i);
Cell cell1 = row.getCell(0);
Cell cell2 = row.getCell(1);
Cell cell3 = row.getCell(2);
Cell cell4 = row.getCell(3);
Cell cell5 = row.getCell(4);
// 计划月份转换
String planDate = cell1.getStringCellValue();
String planDate2 = planDate + "-01";
Date planDate3 = new Date();
try {
planDate3 = new SimpleDateFormat("yyyy-MM-dd")
.parse(planDate2);
} catch (ParseException e) {
logger.error("读取滚动计划时,设置计划月份异常!");
}
String materialCode = cell2.getStringCellValue();
String reqQuantity = cell3.getStringCellValue();
String reqDate = cell4.getStringCellValue();
reqDate = reqDate.replaceAll("\\/","-");
Date reqDate2 = new Date();
try {
reqDate2 = new SimpleDateFormat("yyyy-MM-dd")
.parse(reqDate);
} catch (ParseException e) {
logger.error("读取滚动计划时,设置需求日期异常!");
}
//加入计划月份和需求日期的校验
/*if(planDate3.after(reqDate2)) {
}*/
String supplierCode = cell5.getStringCellValue();
String supplierName = getSupplierName(supplierCode);
String materialName = getMaterialName(materialCode);
Date createTime = new Date();
String id = randomId();
ids.append(id);
PurRollPlan plan = new PurRollPlan();
plan.setId(id);
plan.setMaterialCode(materialCode);
plan.setMaturialDesc(materialName);
plan.setSupplierCode(supplierCode);
plan.setSupplierDesc(supplierName);
plan.setReqDate(reqDate2);
plan.setReqQuantity(Double.parseDouble(reqQuantity));
plan.setPlanDate(planDate3);
plan.setStatus("0");
plan.setSentStatus("0");
plan.setDelFlag("1");
String createPerson = UserUtil.getCurrentUser().getEmpCode();
plan.setCreatePerson(createPerson);
plan.setCreateTime(createTime);
rollList.add(plan);
}
}
}.Reader();
} catch (Exception e) {
logger.error("读取滚动计划异常!");
}
<script type="text/javascript">
var planMonth = "${param.planMonth}";
function import_rollPlan() {
var fileName = $("#excel").val();
if($("#excel").val()==''){
art.dialog({
content : "请选择文件",
lock : true
});
return;
}
if(fileName.lastIndexOf(".xlsx") != -1 || fileName.lastIndexOf(".xls") != -1) {
art.dialog({
width : "200px",
content:"文件加载成功,是否确定导入",
lock : true,
button: [{name:'是',
callback:function (){
window.setTimeout(function(){
$("#upForm").ajaxSubmit({
url : "${contextPath}/service/pageReq",
type : 'post',
dataType : "json",
data : {content:"planMonth:" + planMonth, needcontrolprocess : "purRollPlanService.importRollPlan"},
success : function(data) {
var dialog = art.dialog.get('importing_dialog');
dialog.close();
if (data.status == "FAIL") {
art.dialog({
title : "提示",
width : "350px",
content : "数据格式非法,导入失败!",
lock : true,
ok: function () {
_myDialog.close();
doSearch();
}
});
} else {
art.dialog({
title : "提示",
width : "350px",
content : data.expData.impResultMsg,
lock : true,
ok: function () {
_myDialog.close();
doSearch();
}
});
}
}
});
},10);
art.dialog({
id : "importing_dialog",
title : "提示",
width : "200px",
content : "正在导入,请稍等...",
lock : true
});
},focus: true},
{name:'否'}
]
});
} else {
alert("请选择正确的excel文件!")
}
}
</script>
//////////////////
public abstract class AbstractExcelReader {
public abstract void doParse(Workbook workbook);
/*
*相当于
Reader(new a());
public class a implements Validate {
@Override
public void doValidate(InputStream inputStream) throws Exception {
String fileType = getType(inputStream);
if (StringUtils.isBlank(fileType)
|| (!FileType.XLSX.getValue().equals(fileType)
&& !FileType.XLS_DOC.getValue().equals(fileType) && !FileType.XLSX_DOCX
.getValue().equals(fileType))) {
throw new ServiceException("上传失败,请选择Excel类型文件! ");
}
}
}
*/
public void Reader() throws Exception {
Reader((InputStream inputStream) -> {
String fileType = getType(inputStream);
if (StringUtils.isBlank(fileType)
|| (!FileType.XLSX.getValue().equals(fileType)
&& !FileType.XLS_DOC.getValue().equals(fileType) && !FileType.XLSX_DOCX
.getValue().equals(fileType))) {
throw new ServiceException("上传失败,请选择Excel类型文件! ");
}
});
}
public void Reader(Validate validate) throws Exception {
MultiPartRequestWrapper mpRequest = (MultiPartRequestWrapper) HttpServletHolder
.getCurrentRequest();
//@sfit1092 解决ie安全警告
HttpServletHolder.getCurrentResponse().setContentType("application/octet-stream; charset=UTF-8");
// 导入的文件
File files = mpRequest.getFiles("excel")[0];
if (null == files) {
throw new FileNotFoundException("解析的文件不存在");
}
try (InputStream fileInputStream = new FileInputStream(files);) {
validate.doValidate(fileInputStream);
if (!fileInputStream.markSupported()) {
try (BufferedInputStream bufferedInputStream = new BufferedInputStream(
fileInputStream);) {
Workbook workbook = null;
if (POIFSFileSystem.hasPOIFSHeader(bufferedInputStream)) {
workbook = new HSSFWorkbook(bufferedInputStream);
} else if (POIXMLDocument
.hasOOXMLHeader(bufferedInputStream)) {
workbook = new XSSFWorkbook(
OPCPackage.open(bufferedInputStream));
} else {
throw new ServiceException("没有获得相应的workbook");
}
doParse(workbook);
}
}
}
}
/**
* * 判断文件类型
*
* @param inputStream
*
* @return 文件类型
*
*/
private static String getType(InputStream inputStream) throws IOException {
if (inputStream == null) {
return null;
}
String fileHead = getFileContent(inputStream);
if (fileHead == null || fileHead.length() == 0) {
return null;
}
fileHead = fileHead.toUpperCase();
FileType[] fileTypes = FileType.values();
for (FileType type : fileTypes) {
if (fileHead.startsWith(type.getValue())) {
return type.getValue();
}
}
throw new ServiceException("没有获取到响应的文件类型");
}
/**
* 得到文件头
*
* @param filePath
* 文件路径
* @return 文件头
* @throws IOException
*/
private static String getFileContent(InputStream inputStream)
throws IOException {
int length = 28;
byte[] b = null;
if (inputStream != null) {
inputStream.read(b = new byte[length], 0, length);
inputStream.skip(-length);
}
return FileTypeJudge.bytesToHexString(b);
}
public interface Validate {
public void doValidate(InputStream inputStream) throws Exception;
}
}
/***解析代码///////////////////////////
List<PurRollPlan> rollList = new ArrayList<PurRollPlan>();
try {
new AbstractExcelReader() {
@Override
public void doParse(Workbook workbook) {
Sheet f = workbook.getSheetAt(0);
int totalRow = f.getLastRowNum();
for (int i = 1; i <= totalRow; i++) {
Row row = f.getRow(i);
Cell cell1 = row.getCell(0);
Cell cell2 = row.getCell(1);
Cell cell3 = row.getCell(2);
Cell cell4 = row.getCell(3);
Cell cell5 = row.getCell(4);
// 计划月份转换
String planDate = cell1.getStringCellValue();
String planDate2 = planDate + "-01";
Date planDate3 = new Date();
try {
planDate3 = new SimpleDateFormat("yyyy-MM-dd")
.parse(planDate2);
} catch (ParseException e) {
logger.error("读取滚动计划时,设置计划月份异常!");
}
String materialCode = cell2.getStringCellValue();
String reqQuantity = cell3.getStringCellValue();
String reqDate = cell4.getStringCellValue();
reqDate = reqDate.replaceAll("\\/","-");
Date reqDate2 = new Date();
try {
reqDate2 = new SimpleDateFormat("yyyy-MM-dd")
.parse(reqDate);
} catch (ParseException e) {
logger.error("读取滚动计划时,设置需求日期异常!");
}
//加入计划月份和需求日期的校验
/*if(planDate3.after(reqDate2)) {
}*/
String supplierCode = cell5.getStringCellValue();
String supplierName = getSupplierName(supplierCode);
String materialName = getMaterialName(materialCode);
Date createTime = new Date();
String id = randomId();
ids.append(id);
PurRollPlan plan = new PurRollPlan();
plan.setId(id);
plan.setMaterialCode(materialCode);
plan.setMaturialDesc(materialName);
plan.setSupplierCode(supplierCode);
plan.setSupplierDesc(supplierName);
plan.setReqDate(reqDate2);
plan.setReqQuantity(Double.parseDouble(reqQuantity));
plan.setPlanDate(planDate3);
plan.setStatus("0");
plan.setSentStatus("0");
plan.setDelFlag("1");
String createPerson = UserUtil.getCurrentUser().getEmpCode();
plan.setCreatePerson(createPerson);
plan.setCreateTime(createTime);
rollList.add(plan);
}
}
}.Reader();
} catch (Exception e) {
logger.error("读取滚动计划异常!");
}
相关推荐
在Java开发中,上传并解析Excel文件是一种常见的需求,特别是在数据处理、报表导入或系统集成等场景。本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要...
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
总结来说,Java提供了强大的工具来处理文件上传、解析Excel和CSV,以及将数据映射到Java Bean。理解这些概念和库的使用,将极大地提高你在实际项目中的效率。无论你是新手还是经验丰富的开发者,熟练掌握这些技能都...
在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。Eclipse作为Java开发的主流IDE,提供了丰富的工具和支持来完成这项工作。本项目名为"java 解析Excel 并判断解析...
在这个名为"小项目上传解析excel文件"的实践中,我们将探讨如何使用JavaWeb技术来实现Excel文件的上传、解析以及将数据存储到数据库中。以下是对这一主题的详细阐述: 1. **文件上传**: - 在JavaWeb应用中,文件...
在上传并解析Excel文件后,我们可能需要将数据存储到数据库或进行进一步的数据处理。例如,可以遍历每个`Row`,获取`Cell`的值,然后根据业务逻辑进行处理。如果需要下载Excel,SpringMVC也提供了便捷的方式。可以...
在Java编程中,解析Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。Excel文件格式主要有两种:老式的`.xls`(基于BIFF格式)和较新的`.xlsx`(基于Open XML标准)。本篇将详细介绍如何...
本节详细介绍了如何使用Java解析EXCEL文件,包括文件的上传、读取、设置以及工作表的处理等关键步骤。这些知识点对于开发人员来说是非常实用的,尤其在处理大量Excel数据时更是必不可少的技术。通过上述代码示例,你...
Java有许多库可以帮助解析Excel文件,如Apache POI。使用POI,可以创建一个工作簿对象,读取工作表,遍历单元格,获取并处理数据。 4. **异常处理**:在处理文件上传和解析时,需要考虑可能出现的异常,如文件类型...
导入Excel文件通常涉及到解析Excel文件的格式,如XLS或XLSX,然后将数据逐行读取并存储到合适的数据结构中,如List或Map。Java中常见的库如Apache POI或JExcelApi可以实现这样的操作。 在"创建t_student.sql"文件中...
回答csdn论坛:Java语言下excel导入到mysql数据库表...
本篇文章主要介绍了Java解析Excel文件并把数据存入数据库的方法,涵盖了上传Excel文件、解析Excel文件、将数据存入数据库等多个方面的知识点。 一、上传Excel文件 在上传Excel文件时,需要在web.xml文件中配置...
首先,让我们详细探讨Java解析Excel的步骤: 1. **引入库**:为了处理Excel文件,我们通常会用到Apache POI库。Apache POI是Apache软件基金会的一个项目,提供了API来读写Microsoft Office格式的文件,包括Excel。...
本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页的技巧。 首先,我们需要了解Java中处理Excel的库。Apache POI是一个广泛使用的开源库,它提供了API...
在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。Java提供了多种库来处理Excel文件,如Apache POI、JExcelAPI、OpenCSV等,但最常用的是Apache POI库,它是一个用于...
java对Excel表格数据处理并以List集合返回(只要传Excel文件路径即可)
导入Excel的过程则相对复杂一些,因为需要解析Excel文件并将其数据转化为可操作的对象。easypoi提供了一个PoiService接口,你可以根据自己的业务需求实现这个接口。通常,你需要实现的方法包括读取Excel文件,解析每...
在Java开发中,处理Excel文件是一项常见的任务,无论是上传、下载还是解析和生成。下面将详细阐述这个主题,包括如何实现Excel的下载、上传以及解析。 1. **Excel的下载** 下载Excel文件通常涉及将服务器上的文件...
### Java读取上传的Excel与TXT文件数据解析 #### 一、引言 在实际开发过程中,经常需要处理用户上传的文件,特别是Excel文件和文本文件。这些文件中往往包含了重要的业务数据,需要通过程序来读取并进行进一步的...
在Spring Boot框架中,实现Excel文件的解析是一个常见的需求,特别是在数据导入、导出或数据分析的应用场景中。本文将深入探讨如何使用Spring Boot结合Java来处理Excel文件。 首先,我们需要引入处理Excel文件的库...