<%--
  Created by IntelliJ IDEA.
  User: mc
  Date: 2021/7/7
  Time: 15:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import=" java.io.BufferedInputStream" %>
<%@ page import=" java.io.BufferedOutputStream" %>
<%@ page import=" java.io.File" %>
<%@ page import=" java.io.FileInputStream" %>
<%@ page import=" java.io.FileOutputStream" %>
<%@ page import=" java.io.IOException" %>
<%@ page import=" java.io.InputStream" %>
<%@ page import=" java.io.OutputStream" %>
<%@ page import=" java.text.SimpleDateFormat" %>
<%@ page import=" javax.servlet.http.HttpServletResponse" %>
<%@ page import=" org.apache.poi.xssf.usermodel.XSSFRow" %>
<%@ page import=" org.apache.poi.xssf.usermodel.XSSFSheet" %>
<%@ page import=" org.apache.poi.xssf.usermodel.XSSFWorkbook" %>
<%@ page import="com.censoft.common.base.Pub" %>
<%@ page import="com.censoft.common.db.ConnectionFactory" %>
<%@ page import="com.censoft.db.Logger" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.util.*" %>
<%!
    private void download(String path, HttpServletResponse response) {
        try {
            // path是指欲下载的文件的路径。
            File file = new File(path);
            // 取得文件名。
            String filename = file.getName();
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename="+ new String(filename.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
%>
<%
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    ConnectionFactory cf = new ConnectionFactory();
    Pub pub = new Pub();
    Connection conn = null;
    List list = new ArrayList();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    String fileName = sdf.format(new Date()) + ".xlsx";
    // 文件路径
    String filePath = "ABC" + fileName;
    try {
        conn = com.censoft.db.DBUtil.getConnection();
        Vector v_list=cf.doQuery(conn,"select * from zc_register",null,new Object[]{});
        if(v_list==null){
            System.out.println("查询有误"+cf.getMsg());
            return;
        }
        // 输出流
        OutputStream os = new FileOutputStream(filePath);
        // 工作区
        XSSFWorkbook wb = new XSSFWorkbook();
        // 工作区名
        XSSFSheet sheet = wb.createSheet("资产管理");

        // 创建表头
        XSSFRow row = sheet.createRow(0);
        row.createCell(0).setCellValue("登记编号");
        row.createCell(1).setCellValue("资产编号");
        row.createCell(2).setCellValue("资产名称");
        row.createCell(3).setCellValue("资产国标分类");
        row.createCell(4).setCellValue("资产分类");
        row.createCell(5).setCellValue("品牌");

        // 遍历数据装进table
        for (int i = 0; i < v_list.size(); i++) {
            // sheet.createRow(i+1) 因为表头是0
            Hashtable ht = (Hashtable) v_list.get(i);
            XSSFRow rows = sheet.createRow(i + 1);
            rows.createCell(0).setCellValue((String)ht.get("reg_id"));
            rows.createCell(1).setCellValue((String)ht.get("zc_id"));
            rows.createCell(2).setCellValue((String)ht.get("zc_name"));
            rows.createCell(3).setCellValue((String)ht.get("zc_gj_type"));
            rows.createCell(4).setCellValue((String)ht.get("zc_fl"));
            rows.createCell(5).setCellValue((String)ht.get("pinpai"));
        }

        wb.write(os);
        // 关闭输出流
        os.close();
    } catch (Exception e) {
        e.printStackTrace();
    }finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
            }
        }
    }
    download(filePath, response);
%>