package net.vtstar.zhongtong.avi.utils;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

/**
 * @Author: xiadongwei
 * @Date: 2019/8/28 11:03
 */
public class ExpertUtils {

    private static String tempFileHomePath = "D:/vtstar/template/";

    public static void main(String[] arg){
        exportExcel();
    }
    /**
     * 生成excel并下载
     */
    public static void exportExcel(){

        File newFile = createNewFile();
        //File newFile = new File("d:/ss.xls");

        //新文件写入数据，并下载*****************************************************
        InputStream is = null;
        XSSFWorkbook workbook = null;
        XSSFSheet sheet = null;
        try {
            is = new FileInputStream(newFile);
            workbook = new XSSFWorkbook(is);
            //获取第一个sheet
            sheet = workbook.getSheetAt(0);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        if(sheet != null){
            try {
                //写数据
                FileOutputStream fos = new FileOutputStream(newFile);
                XSSFRow row = sheet.getRow(4);
                XSSFCell cell = row.getCell(1);
                System.out.println(cell.getStringCellValue());
                cell.setCellValue("ssssssssssssssssssssssssssssssssssssssssssss");
                workbook.write(fos);
                fos.flush();
                fos.close();

                //下载
                /*InputStream fis = new BufferedInputStream(new FileInputStream(newFile));
                HttpServletResponse response = this.getResponse();
                byte[] buffer = new byte[fis.available()];
                fis.read(buffer);
                fis.close();
                response.reset();
                response.setContentType("text/html;charset=UTF-8");
                OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
                response.setContentType("application/x-msdownload");
                String newName = URLEncoder.encode("采购合同"+System.currentTimeMillis()+".xls", "UTF-8");
                response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\"");
                response.addHeader("Content-Length", "" + newFile.length());
                toClient.write(buffer);
                toClient.flush();*/
            }
            catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if (null != is) {
                        is.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        //删除创建的新文件
        //this.deleteFile(newFile);
    }
    /**
     * 复制文件
     *
     * @param s
     * 源文件
     * @param t
     * 复制到的新文件
     */

    public static void fileChannelCopy(File s, File t) {
        try {
            InputStream in = null;
            OutputStream out = null;
            try {
                in = new BufferedInputStream(new FileInputStream(s),1024);
                out = new BufferedOutputStream(new FileOutputStream(t),1024);
                byte[] buffer = new byte[1024];
                int len;
                while ((len=in.read(buffer))!=-1) {
                    out.write(buffer,0,len);
                }
            } finally {
                if (null != in) {
                    in.close();
                }
                if (null != out) {
                    out.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 读取excel模板，并复制到新文件中供写入和下载
     * @return
     */
    public static File createNewFile(){
        //读取模板，并赋值到新文件************************************************************
        //文件模板路径
        String fileName = "向阳生产计划模板";
        File file = new File(tempFileHomePath, fileName + ".xls");

        //新的文件名
        String newFileName = "日常检测报告" + System.currentTimeMillis() + ".xls";

        //写入到新的excel
        File newFile = new File(tempFileHomePath, newFileName);
        try {
            newFile.createNewFile();
            //复制模板到新文件
            fileChannelCopy(file, newFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return newFile;
    }

    /**
     * 下载成功后删除
     *
     * @param files
     */
    private void deleteFile(File... files) {
        for (File file : files) {
            if (file.exists()) {
                file.delete();
            }
        }
    }
}
