package com.ym.web;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sf.json.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.ym.dao.SystemLogMapper;
import com.ym.data.JsonReturn;
import com.ym.po.SystemLog;
import com.ym.util.LayuiResponseData;
import com.ym.util.Tools;
@Controller
@RequestMapping("/Journal")
public class JournalController {
/***
* 数据导出Excel
* @param response
* @return
*/
@ResponseBody
@RequestMapping(value="/ExportDate", produces = "application/json; charset=utf-8")
public String ExportDate(HttpServletResponse response,String userName)throws Exception{
response.setContentType("application/binary;charset=UTF-8");
JsonReturn jsonReturn = new JsonReturn();
jsonReturn.setState(false);
try{
ServletOutputStream out=response.getOutputStream();
try {
//设置文件头:最后一个参数是设置下载文件名(这里我们叫:张三.pdf)
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(userName+"系统日志.xls", "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String[] titles = { "编号", "管理员姓名", "内容", "操作时间" };
try{
// 第一步,创建一个workbook,对应一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet hssfSheet = workbook.createSheet("sheet1");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = hssfSheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
//居中样式
hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFCell hssfCell = null;
for (int i = 0; i < titles.length; i++) {
hssfCell = row.createCell(i);//列索引从0开始
hssfCell.setCellValue(new HSSFRichTextString(titles[i]));//列名1
hssfCell.setCellStyle(hssfCellStyle);//列居中显示
}
List<SystemLog> list = systemLogMapper.findByName(userName);
for (int i = 0; i < list.size(); i++) {
row = hssfSheet.createRow(i+1);
SystemLog person = list.get(i);
// 第六步,创建单元格,并设置值
String id = null;
if(person.getSystemLogId() != null){
id = person.getSystemLogId().toString();
}
row.createCell(0).setCellValue(new HSSFRichTextString(id));
String UserName = "";
if(person.getUserName() != null){
UserName = person.getUserName();
}
row.createCell(1).setCellValue(new HSSFRichTextString(UserName));
String Substance = "";
if(person.getSubstance() != null){
Substance = person.getSubstance();
}
row.createCell(2).setCellValue(new HSSFRichTextString(Substance));
String OperateHour=null;
if(person.getOperateHours() !=null){
OperateHour = person.getOperateHours();
}
row.createCell(3).setCellValue(new HSSFRichTextString(OperateHour));
}
// 第七步,将文件输出到客户端浏览器
try {
workbook.write(out);
out.flush();
out.close();
jsonReturn.setState(true);
jsonReturn.setMsg("管理员为"+userName+"的日志数据导出成功。");
} catch (Exception e) {
e.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
jsonReturn.setMsg("导出信息失败");
}
} catch(Exception e){
e.printStackTrace();
jsonReturn.setMsg("导出信息失败");
}
JSONObject jsonObject=JSONObject.fromObject(jsonReturn);
return jsonObject.toString();
}
}