方法一: 根據 easypoi 實現導入導出
導入:
前端部分:
<div style="vertical-align:top;padding-left:5px; position: relative; display:inline">
<input id="excle" type="file" class="btn"/>
<input type="file" class="btn" style="position: absolute; width: 30px; height: 30px; top:0;opacity: 0">
</div>
js:
$("#excle").change(function(){
var file= document.getElementById("excle").files[0];
var formData=new FormData();
formData.append("file",file);
top.jzts();
$.ajax({
//bbk2300/lecturerExcelImport.do
url : "<%=basePath%>oce6001/Map6001ExcelImport.do",
type : "POST",
dataType:"JSON",
data : formData,
// 告訴jQuery不要去處理髮送的數據
processData : false,
// 告訴jQuery不要去設置Content-Type請求頭
contentType : false,
success:function (data) {
top.hangge();
tosearch(1);
alert(data.meta.msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
top.hangge();
tosearch(1);
alert(JSON.parse(XMLHttpRequest.responseText).msg);
}
});
})
後臺部分:
Controller
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
/**
* 20180908
* 效果圖產品庫導入
*
* @param request 講師Excel基本信息
* @return 返回導入是否成功的
* @throws IOException 拋出異常
*/
@RequestMapping(value = "/Map6001ExcelImport", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public Response Map6001ExcelImport(HttpServletRequest request) throws IOException {
Response res = null;
MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;
/**excel作品模板上傳的名稱*/
MultipartFile file;
file = mhs.getFile("file");
ImportParams importParams = new ImportParams();
/**是否啓用驗證功能,默認是false不做驗證檢測,這裏的驗證在實體對象中使用annotation標籤驗證*/
importParams.setNeedVerfiy(true);
try {
/**把上傳的Excel文件轉換爲EasyPoi的一個導入結果對象*/
ExcelImportResult<Map6001ImportExcel> result = ExcelImportUtil.importExcelMore(file.getInputStream(), Map6001ImportExcel.class,
importParams);
int count = map6001Service.inserListMap6001(result);
if(count>0){
return new Response().success("導入成功"+count+"條");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
server
/**
* 導入評論信息
* @param list
* @return
* @throws Exception
*/
@Override
public int inserListMap6001(ExcelImportResult<Map6001ImportExcel> list)throws Exception{
/**所有導入的結果集*/
List<Map6001ImportExcel> allList = list.getFailList();
List<Map6001DO> map6001DOList = new ArrayList<>();
for(Map6001ImportExcel importExcel:allList){
Map6001DO map6001DO=new Map6001DO();
map6001DO.setDisId(importExcel.getDisId());
map6001DO.setOpId(importExcel.getOpId());
map6001DO.setDisOpId(importExcel.getDisOpId());
map6001DO.setArtId(importExcel.getArtId());
map6001DO.setParentId(importExcel.getParentId());
map6001DO.setDisContent(importExcel.getDisContent());
map6001DO.setDisUser(importExcel.getDisUser());
//格式轉換
Date date = CommonWan4.parseUsDateTime02(importExcel.getDisDate());
map6001DO.setDisDate(date);
map6001DO.setDisStatus(importExcel.getDisStatus());
Map6001DisExpandOne map6001DisExpandOne=new Map6001DisExpandOne();
map6001DisExpandOne.setSource(importExcel.getDisExpandOne());
map6001DO.setDisExpandOne(map6001DisExpandOne);
map6001DOList.add(map6001DO);
}
if(map6001DOList.size()>0){
//批量寫入數據庫
return daoMap6001.saveListDb("Map6001DOMapper.insertMap6001List",map6001DOList);
}
return 0;
};
bean:
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.NotBlank;
import java.io.Serializable;
/**
* Excel導入實體類
*
* @author yedong
* @version 1.0
* @date 2018.908
*/
@Getter
@Setter
@ToString
public class Map6001ImportExcel implements Serializable {
/**
*
*/
@Excel(name = "評論唯一ID")
@NotBlank(message = "評論唯一ID")
private String disId;
/**
* 被評論會員ID
*/
@Excel(name = "評論會員ID")
private String opId;
/**
* 被評論會員ID
*/
@Excel(name = "被評論會員ID")
private String disOpId;
/**
* 關聯產品ID
*/
@Excel(name = "關聯產品ID")
private String artId;
/**
* 上級評論ID
*/
@Excel(name = "上級評論ID")
private String parentId;
/**
* 評論內容
*/
@Excel(name = "評論內容")
private String disContent;
/**
* 評論人
*/
@Excel(name = "評論人")
private String disUser;
/**
* 評論時間
*/
@Excel(name = "評論時間")
private String disDate;
/**
* 評論狀態(1可用2不可用)
*/
@Excel(name = "評論狀態")
private String disStatus;
/**
* 評論類型(1帖子2產品3效果圖)
*/
@Excel(name = "評論類型")
private String disExpandOne;
}
公共方法:
/**
* 導入導出功能
* @param timeStr
* @return
*/
public static Date parseUsDateTime02(String timeStr) {
Preconditions.checkArgument(StringUtils.isNotBlank(timeStr), "時間參數不能爲空");
String pattern = "EEE MMM dd HH:mm:ss zzz yyyy";
try {
Date date = new SimpleDateFormat(pattern, Locale.US).parse(timeStr);
return date;
} catch (ParseException e) {
System.out.println("時間解析錯誤");
}
return null;
}
導出:
前段部分:
<a class="btn btn-info" title="批量導出" href="javascript:void(0)" onclick="onExi()">批量導出</a>
function onExi() {
//獲取ID串
var SelectValue="";
$("input[name='ids']:checked").each(function(j) {
if (j >= 0) {
SelectValue += $(this).val() + ","
}
});
if(SelectValue==undefined || SelectValue==''){
alert("導出失敗,請選擇導出的數據");
return ;
}
window.location.href="excelController/exportYuYue.do?selectValue="+SelectValue
}
後臺部分:
/**
* 導出預約數據
*
* @param response 出參對象
* @return 返回數據
* @throws Exception 拋出異常
*/
@RequestMapping(value = "/exportYuYue")
public void exportYuYue(HttpServletResponse response, String selectValue) throws Exception {
/**重置響應對象*/
response.reset();
/**當前日期,用於導出文件名稱*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
/**設置excel的文件名稱*/
String dateStr = "[效果圖信息-" + sdf.format(new Date()) + "]";
/**指定下載的文件名--設置響應頭*/
response.setCharacterEncoding("UTF-8");
/**轉換一下編碼,防止亂碼*/
response.setHeader("Content-Disposition", "attachment;filename=" +
new String(dateStr.getBytes("UTF-8"), "ISO-8859-1") + ".xls");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
//獲取導出參數
//請求中臺獲取數據預約列表數據
//請求中臺獲取所有預約信息
Map map = new HashMap();
List<Long> listLong = new ArrayList<>();
if (selectValue != null && !selectValue.equals("")) {
String tr[] = selectValue.split(",");
for (int i = 0; i < tr.length - 1; i++) {
Long lo = Long.valueOf(tr[i]);
listLong.add(lo);
}
} else {
return;
}
map.put("ids", listLong);
String url = ConstOce.ZTVIP_USER + "/sign/getAllAboutListEx";
String map1 = JSON.toJSONString(map);
String json = HttpUtil.httpsRequest(url, "POST", map1);
JSONObject jsonObject1 = JSON.parseObject(json);
if (jsonObject1 == null || !jsonObject1.getString("code").equals("100")) {
new Response().failure("獲取失敗");
return;
}
if (jsonObject1.get("list") != null && !jsonObject1.get("list").equals("")) {
JSONArray jsonArray = JSON.parseArray(jsonObject1.get("list") + "");
List<Oce4000Expor> list = new ArrayList();
for (int j = 0; j < jsonArray.size(); j++) {
JSONObject jsonObject = jsonArray.getJSONObject(j);
Oce4000Expor oce4000Expor = new Oce4000Expor();
if (jsonObject.getString("provinceCode") != null && !jsonObject.getString("provinceCode").equals("")) {
Oce1006DO oce1006DO = oce1006Service.findByKeyOrName(jsonObject.getString("provinceCode"));
if (oce1006DO != null) {
oce4000Expor.setProvinceCode(oce1006DO.getProvinceName());
}
}
if (jsonObject.getString("cityCode") != null && !jsonObject.getString("cityCode").equals("")) {
Oce1007DO oce1007DO = oce1007Service.findByKeyOrName(jsonObject.getString("cityCode"));
if (oce1007DO != null) {
oce4000Expor.setCityCode(oce1007DO.getCityName());
}
}
if (jsonObject.getString("districtCode") != null && !jsonObject.getString("districtCode").equals("")) {
Oce1008DO oce1008DO = oce1008Service.findByKeyOrName(jsonObject.getString("districtCode"));
if (oce1008DO != null) {
oce4000Expor.setDistrictCode(oce1008DO.getAreaName());
}
}
//補充其他數據
oce4000Expor.setAboutId(jsonObject.getString("id"));
oce4000Expor.setAboutName(jsonObject.getString("customerName"));
oce4000Expor.setAddress(jsonObject.getString("address"));
oce4000Expor.setCreationDateStr(jsonObject.getString("creationDateStr"));
oce4000Expor.setAboutPhone(jsonObject.getString("mobile"));
list.add(oce4000Expor);
}
/**在這裏把查詢到的數據插入Excel模板*/
ExportParams params = new ExportParams("預約列表信息", "預約列表信息");
Workbook workbook = ExcelExportUtil.exportExcel(params, Oce4000Expor.class, list);
workbook.write(response.getOutputStream());
}
}
方法二: (暫時沒時間寫)