数据导出Excel

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();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值