HelpControl.java 3.77 KB
package com.sincere.haikangface.control;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController("/help/")
@Api(tags = "辅助工具")
@RequestMapping("/help/*")
public class HelpControl {


    @RequestMapping(value = "createFile", method = RequestMethod.GET)
    @ApiOperation(value = "生成文件")
    @ApiImplicitParams({@ApiImplicitParam(name = "file", value = "根目录")})
    public String createFile(@RequestParam("file") String file) {
//        System.out.println("count:" + (count++));

        //第一步,创建一个workbook对应一个excel文件
        HSSFWorkbook workbook = new HSSFWorkbook();

        File file1 = new File(file);

        File[] files = file1.listFiles();

        List<String> list = new ArrayList<>();

        for (int i = 0; i < files.length; i++) {
            File file2 = files[i];

            if (file2.isDirectory()) {

                File[] file3 = file2.listFiles();
                for (int j = 0; j < file3.length; j++) {
                    File file4 = file3[j];
                    String fileName = file4.getName();
                    String fileDirName = file2.getName();
                    list.add(fileDirName+","+fileName);
                }

            }else if (file2.isFile()){
                String fileName = file2.getName() ;
                String fileDirName = file1.getName();
                list.add(fileDirName+","+fileName);
            }

        }


        return writeToExcel(workbook,"文件",list).getAbsolutePath();
    }


    private File writeToExcel(HSSFWorkbook workbook, String sheetName, List<String> values) {
        //第二部,在workbook中创建一个sheet对应excel中的sheet
        HSSFSheet sheet = workbook.createSheet(sheetName);
        //第三部,在sheet表中添加表头第0行,老版本的poi对sheet的行列有限制
        HSSFRow row = sheet.createRow(0);
        //第四步,创建单元格,设置表头
        HSSFCell cell = null;
        for (int i = 0; i < 2; i++) {
            cell = row.createCell(i);
            if (i == 0)
                cell.setCellValue("目录名称");
            else if (i==1)
                cell.setCellValue("文件名称");
        }

        //第五步,写入数据
        for (int i = 0; i < values.size(); i++) {

            HSSFRow row1 = sheet.createRow(i + 1);
            String value = values.get(i);

            row1.createCell(0).setCellValue(value.split(",")[0]);
            row1.createCell(1).setCellValue(value.split(",")[1]);
        }

        //将文件保存到指定的位置
        try {
            File file = new File("./file/");
            if (!file.exists()) file.mkdirs();

            File file1 = new File(file.getAbsolutePath(), sheetName + ".xls");
            if (!file1.exists()) file1.createNewFile();
            FileOutputStream fos = new FileOutputStream(file1);
            workbook.write(fos);
            System.out.println("写入成功");
            fos.close();
            return file1;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}