参考
https://sarin.iteye.com/blog/845035Apache POI组件操作Excel,制作报表(一)
辣鸡代码将就看吧
控制层.java
@ResponseBody
@RequiresPermissions("finance:financefixedassets:financeFixedAssets:import")
@RequestMapping(value
= "import")
public AjaxJson
importFile(@RequestParam("file") MultipartFile file
, HttpServletResponse response
,
HttpServletRequest request
) {
AjaxJson j
= new AjaxJson();
try {
int successNum
= 0;
int failureNum
= 0;
ExcelUtils excelUtils
= new ExcelUtils();
List
<FinanceFixedAssets> studentList
= new ArrayList<FinanceFixedAssets>();
StringBuilder failureMsg
= new StringBuilder();
if (StringUtils
.isBlank(file
.getOriginalFilename())) {
j
.setSuccess(false);
j
.setMsg("导入固定资产管理失败!失败信息:");
}
studentList
= excelUtils
.ExcelUtilsFinanceFixedAssets(file
);
for (FinanceFixedAssets atbut
: studentList
) {
if(atbut
.getAssetsName()!=null
&&atbut
.getAssetsPrice()!=null
&&atbut
.getProcurementDate()!=null
&&atbut
.getAssetsCount()!=null
) {
try {
if (atbut
.getIsNewRecord()) {
atbut
.setAssetsNo(genAssetCode());
} else {
FinanceFixedAssets oldAssert
= financeFixedAssetsService
.get(atbut
.getId());
atbut
.setAssetsNo(oldAssert
.getAssetsNo());
}
financeFixedAssetsService
.save(atbut
);
successNum
++;
} catch (ConstraintViolationException ex
) {
failureNum
++;
} catch (Exception ex
) {
failureNum
++;
}
}
}
if (failureNum
> 0) {
failureMsg
.insert(0, ",失败 " + failureNum
+ " 条固定资产管理记录。");
}
j
.setMsg("已成功导入 " + successNum
+ " 条固定资产管理记录" + failureMsg
);
} catch (Exception e
) {
j
.setSuccess(false);
j
.setMsg("导入固定资产管理失败!失败信息:" + e
.getMessage());
}
return j
;
}
ExcelUtils工具类.java
public List
<FinanceFixedAssets> ExcelUtilsFinanceFixedAssets(MultipartFile file
) {
String cellStr
= null
;
FinanceFixedAssets student
= null
;
Date date
= null
;
List
<FinanceFixedAssets> studentList
= new ArrayList<FinanceFixedAssets>();
if (file
.getOriginalFilename().toLowerCase().endsWith("xls")) {
HSSFWorkbook wb
= null
;
try {
wb
= new HSSFWorkbook(file
.getInputStream());
} catch (IOException e1
) {
e1
.printStackTrace();
}
System
.out
.println("*************xsl******************");
HSSFSheet xssfSheet
= wb
.getSheetAt(0);
for (int rowNum
= 1; rowNum
<= xssfSheet
.getLastRowNum(); rowNum
++) {
HSSFRow xssfRow
= xssfSheet
.getRow(rowNum
);
if (xssfRow
== null
) {
continue;
}
student
= new FinanceFixedAssets();
for (int cellNum
= 0; cellNum
<= xssfRow
.getLastCellNum(); cellNum
++) {
HSSFCell cell
= xssfRow
.getCell(cellNum
);
if (cell
== null
) {
cellStr
= "";
continue;
} else if (cell
.getCellType() == HSSFCell
.CELL_TYPE_BOOLEAN
) {
cellStr
= String
.valueOf(cell
.getBooleanCellValue());
} else if (cell
.getCellType() == HSSFCell
.CELL_TYPE_NUMERIC
) {
if (cellNum
== 3) {
date
= cell
.getDateCellValue();
} else {
cellStr
= cell
.getNumericCellValue() + "";
}
} else {
cellStr
= cell
.getStringCellValue();
}
switch (cellNum
) {
case 0:
student
.setAssetsName(cellStr
);
break;
case 1:
student
.setAssetsPrice(cellStr
);
break;
case 2:
student
.setAssetsCount(cellStr
);
break;
case 3:
try {
student
.setProcurementDate(date
);
} catch (Exception e
) {
System
.out
.println("what????日期解析不了");
}
break;
case 4:
student
.setSpecification(cellStr
);
break;
case 5:
student
.setSn(cellStr
);
break;
case 6:
student
.setAssetsUnit(cellStr
);
break;
case 7:
student
.setAssetsBrand(cellStr
);
break;
case 8:
student
.setRemarks(cellStr
);
break;
default:
}
}
studentList
.add(student
);
}
} else if (file
.getOriginalFilename().toLowerCase().endsWith("xlsx")) {
XSSFWorkbook wb
= null
;
try {
wb
= new XSSFWorkbook(file
.getInputStream());
} catch (IOException e1
) {
e1
.printStackTrace();
}
System
.out
.println("****************xslx******************");
XSSFSheet xssfSheet
= wb
.getSheetAt(0);
for (int rowNum
= 1; rowNum
<= xssfSheet
.getLastRowNum(); rowNum
++) {
XSSFRow xssfRow
= xssfSheet
.getRow(rowNum
);
if (xssfRow
== null
) {
continue;
}
student
= new FinanceFixedAssets();
for (int cellNum
= 0; cellNum
<= xssfRow
.getLastCellNum(); cellNum
++) {
XSSFCell cell
= xssfRow
.getCell(cellNum
);
if (cell
== null
) {
cellStr
= "";
continue;
} else if (cell
.getCellType() == HSSFCell
.CELL_TYPE_BOOLEAN
) {
cellStr
= String
.valueOf(cell
.getBooleanCellValue());
} else if (cell
.getCellType() == HSSFCell
.CELL_TYPE_NUMERIC
) {
if (cellNum
== 3) {
date
= cell
.getDateCellValue();
} else {
cellStr
= cell
.getNumericCellValue() + "";
}
} else {
cellStr
= cell
.getStringCellValue();
}
switch (cellNum
) {
case 0:
student
.setAssetsName(cellStr
);
break;
case 1:
student
.setAssetsPrice(cellStr
);
break;
case 2:
student
.setAssetsCount(cellStr
);
break;
case 3:
try {
student
.setProcurementDate(date
);
} catch (Exception e
) {
System
.out
.println("what????日期解析不了");
}
break;
case 4:
student
.setSpecification(cellStr
);
break;
case 5:
student
.setSn(cellStr
);
break;
case 6:
student
.setAssetsUnit(cellStr
);
break;
case 7:
student
.setAssetsBrand(cellStr
);
break;
case 8:
student
.setRemarks(cellStr
);
break;
default:
}
}
studentList
.add(student
);
}
}
return studentList
;
}
js代码
$("#btnImport").click(function(){
jp
.open({
type
: 2,
area
: [500, 200],
auto
: true,
title
:"导入数据",
content
: "${ctx}/tag/importExcel" ,
btn
: ['下载模板','确定', '关闭'],
btn1
: function(index
, layero
){
jp
.downloadFile('${ctx}/../webpage/modules/finance/financefixedassets/template/固定资产导入模板.xlsx');
},
btn2
: function(index
, layero
){
var iframeWin
= layero
.find('iframe')[0];
iframeWin
.contentWindow
.importExcel('${ctx}/finance/financefixedassets/financeFixedAssets/import', function (data
) {
if(data
.success
){
jp
.success(data
.msg
);
refresh();
}else{
jp
.error(data
.msg
);
if(data
.body
!= null && data
.body
!= undefined
){
window
.location
.href
= data
.body
.url
;
}
}
jp
.close(index
);
});
return false;
},
btn3
: function(index
){
jp
.close(index
);
}
});
});
html
<div id="toolbar">
<shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:add">
<button id="add" class="btn btn-primary" onclick="add()">
<i class="glyphicon glyphicon-plus"></i> 新建
</button>
</shiro:hasPermission>
<shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:edit">
<button id="edit" class="btn btn-success" disabled onclick="edit()">
<i class="glyphicon glyphicon-edit"></i> 修改
</button>
</shiro:hasPermission>
<shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:import">
<button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入
</button>
</shiro:hasPermission>
<shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:del">
<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
<i class="glyphicon glyphicon-remove"></i> 删除
</button>
</shiro:hasPermission>
<%--
<shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:view"> --%>
<%--
</shiro:hasPermission> --%>
</div>
下边的是被参考内容
Apache POI组件操作Excel,制作报表(一) 博客分类: • 探索实践 ExcelApacheOfficeBeanJ# Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少。那么本文就结合POI来介绍一下操作Excel的方法。 Office 2007的文件结构完全不同于2003,所以对于两个版本的Office组件,POI有不同的处理API,分开使用即可。首先来说几个Excel的基本概念。对于一个Excel文件,这称为一个工作簿(Workbook),打开Excel之后,在下方会有sheet1/2/3这样的选项卡,点击可以切换到不同的sheet中,这个sheet称作工作表。每个工作表就是我们编辑的区域,这是一张二维表,阿拉伯数字控制行数,从1开始,而程序中还是0,类似数组和集合。字母控制列数,从A开始,Z以后是两个字母控制。对于每一行,我们称为Row,列就是Column,行列可以确定唯一的一个元素,那么就是单元格,称为Cell。 POI组件可以方便的操纵这些元素,但初次接触POI可能会有畏惧心理,因为要对每个单元格进行设置,那么不管是用数组还是集合,从工作簿,工作表,行下来的代码量都不会小,这是不能避免的,但是按照这个处理顺序走,就一定可以得到结果。 有了这些基础的概念之后,我们就可以操作Excel了。先来看一下所需的依赖,因为涉及到2007,就要额外加一些依赖。 下面从读取Excel开始,首先建立一个Excel 2003以下版本的xls文件。设定几列来看。来存储学生信息的Excel表如下: 这里的姓名,性别和班级是文本值,而年龄和成绩是数字值,这在设计对象和处理时要注意区分。那么可以如下设计这个对象: