在java中實現數據導入excel表格中


1.首先前端代碼如下:

一個導出按鈕:<input id="export" class="btn btn-primary" type="button" onclick="a();" value="導出"/>

實現按鈕的點擊事件:

function a(currentPage) {
console.log("你好");
var dateFrom = document.getElementById("todayStart").value;
var dateTo = document.getElementById("todayEnd").value;
var url = "<c:url value='/'/>communityOrder/export?dateFrom="+dateFrom+"&dateTo="+dateTo;
window.location.href = url;
}

其中dateTo和var dateFrom是條件查詢,url是請求后台的路徑

2.后台代碼如下:

/**
* 導出數據
* @param response
*/
@RequestMapping(value = "/export")
public void export(HttpSession session,HttpServletResponse response, HttpServletRequest request,
Model model,
@RequestParam(value = "dateFrom",required = false)String dateFrom,
@RequestParam(value = "dateTo",required = false)String dateTo,
@ModelAttribute("pageSupport")PageResult pageResult) throws IOException{
Date dDateFrom = null;
Date dDateTo = null;
Long startTime=null;
Long endTime=null;
// 處理申請日
if (!ComUtil.isEmpty(dateFrom) && dateFrom.matches("2[0-9]{7}")) {
dDateFrom = ComUtil.parseDate(dateFrom + "000000");
startTime=dDateFrom.getTime()/1000;
}
if (!ComUtil.isEmpty(dateTo) && dateTo.matches("2[0-9]{7}")) {
dDateTo = ComUtil.parseDate(dateTo + "235959");
endTime=dDateTo.getTime()/1000;
}
//三大步
//第一步:查詢數據
Integer totalCount =communityOrderService.getAllCount(startTime,endTime);
List<CommunityOrderObject> list = communityOrderService.findByPage(startTime,endTime,1, totalCount);
//第二步:將列表寫成excel文件流
//平時如何寫excel?
//1.創建一個excel的工作簿(創建是97格式還是2007的格式)
try (HSSFWorkbook workbook = new HSSFWorkbook()) {

//2.創建一個工作表(sheet)
//workbook.createSheet();
HSSFSheet sheet = workbook.createSheet("物業訂單");

//3.先創建第一行,寫excel表格:標題一列的信息
HSSFRow headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("編號");
headerRow.createCell(1).setCellValue("會員編號");
headerRow.createCell(2).setCellValue("訂單號");
headerRow.createCell(3).setCellValue("房間編號");
headerRow.createCell(4).setCellValue("支付金額");
headerRow.createCell(5).setCellValue("支付方式");
headerRow.createCell(6).setCellValue("支付時間");
headerRow.createCell(7).setCellValue("創建時間");

//創建其他行,數據行
for (CommunityOrderObject CommunityOrderObject : list) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
dataRow.createCell(0).setCellValue(CommunityOrderObject.getId());
dataRow.createCell(1).setCellValue(CommunityOrderObject.getMobile());
dataRow.createCell(2).setCellValue(CommunityOrderObject.getSn());
dataRow.createCell(3).setCellValue(CommunityOrderObject.getRoomId());
dataRow.createCell(4).setCellValue(CommunityOrderObject.getPayFee());
if(StringUtils.equals(CommunityOrderObject.getPayType(),"offline")){
dataRow.createCell(5).setCellValue("線下支付");
}
if(StringUtils.equals(CommunityOrderObject.getPayType(),"alipay")){
dataRow.createCell(5).setCellValue("線上支付");
}
String payTime = CommunityOrderObject.getPayTime();
/* Date d =new Date();
if(null!=payTime&&!"".equals(payTime.trim())){
d= new Date(Long.valueOf(payTime)*1000l);
}
String format1 = sdf2.format(d);*/
if(null!=payTime&&!"".equals(payTime)&&"1970-01-01".equals(payTime.trim())){
dataRow.createCell(6).setCellValue("");
}else{
dataRow.createCell(6).setCellValue(payTime);
}
Date createdOn = CommunityOrderObject.getCreatedOn();
String format1 = sdf2.format(createdOn);
dataRow.createCell(7).setCellValue(format1);
}

//第三步:將文件流寫入響應,交給客戶端瀏覽器
//1。設置文件類型
//文件名
StringBuffer sb = new StringBuffer();
Date date = new Date();
String time = sdf2.format(date);
sb.append(time).append("物業訂單.xls");
String downFilename= sb.toString();
//獲取文件的MIME類型:
String contentType = request.getContentType();
//String contentType=" multipart/form-data";兩種方式都可以
//將MIME類型放入響應
response.setContentType(contentType);
//2,文件名和附件打開方式
//瀏覽器類型
String agent = request.getHeader("user-agent");
//附件名編碼,解決中文亂碼問題
downFilename = ComUtil.encodeDownloadFilename(downFilename, agent);
//獲取附件的名字和下載方式
String contentDisposition="attachment;filename="+downFilename;
//將附件名字和下載方式放入響應頭信息中
response.setHeader("Content-Disposition", contentDisposition);
response.setCharacterEncoding("UTF-8");

//3.寫入到響應
workbook.write(response.getOutputStream());
}//end of try (HSSFWorkbook workbook = new HSSFWorkbook()) {
}

在這里需要注意的是條件查詢和沒有條件查詢結果的導出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM