web开发之导入与导出excel
最近开发中的一个需求:需要从本地导入excel数据,根据筛选结果导出成excel到本地。今天把我的代码整理出来希望能给大家一些帮助。开发环境:ssm + maven;
1、导入:
jsp:准备一个model
<!-- 模态框(Modal) -->
<div id="importOrderExcelModal" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button id="closeModal" type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h5 class="modal-title" id="myModalLabel">
请选择需要导入的Excel文件:
</h5>
</div>
<div class="modal-body">
<form id="importExcelForm" action="#" class="form-horizontal" method="post">
<div class="modal-body">
<div class="control-group">
<label class="control-label">Excel文件(订单数据)</label>
<div class="controls">
<input type="file" name="file" id="file" class="input-block-level">
</div>
</div>
</div>
<div class="modal-footer">
<span id="importStatus" style="margin-right:20px;"></span>
<button id="downloadOrderModel" class="btn btn-default">下载模板 </button>
<button id="importBtn" class="btn btn-primary">上传 </button>
</div>
</form>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
js部分:提交表单到后台
$('#importExcelForm').ajaxSubmit({
url : '${ctx}/customerOrder/importCustomerOder.action',
type : "post",
beforeSubmit : function(arr, $form, options) {
$("#importStatus").html("<font color='blue'>正在上传...");
$('#importBtn').attr("disabled", true);
$('#closeModal').attr("disabled", true);
$('#downloadOrderModel').attr("disabled", true);
},
success : function(result) {
if (result.success == true) {
$("#importStatus").html("<font color='green'>"+result.msg);
setTimeout(function () {
$("#importOrderExcelModal").modal("hide");
window.location.href="${ctx}/customerOrder/customerOrderList.action"
}, 1000);
} else {
$("#importStatus").html("<font color='red'>" + result.msg);
$('#importBtn').attr("disabled", false);
$('#closeModal').attr("disabled", false);
$('#downloadOrderModel').attr("disabled", false);
}
},
error : function() {
$("#importStatus").html("<font color='red'>服务器发生错误");
$('#importBtn').attr("disabled", false);
$('#closeModal').attr("disabled", false);
$('#downloadOrderModel').attr("disabled", false);
}
});
java代码:
controller
@Controller
@RequestMapping("/customerOrder")
public class CustomerOrderController {
@RequestMapping(value = "/importCustomerOder.action")
@ResponseBody
public JsonResult importCustomerOder(HttpSession session,
@RequestParam("file") MultipartFile file) {
try {
if (!file.isEmpty()) {
User user = PrincipalUtil.getUser(session);
InputStream inputStream = file.getInputStream();
return customerService.importCustomerOrder(inputStream, user.getId());
} else {
return new JsonResult(false, "上传文件为空");
}
} catch (Exception e) {
return new JsonResult(false, e.getMessage());
}
}
}
seviceImpl:读取excel,循环遍历行和列,存进List