读取excel,批量生成文件

package hho;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;



public class TestExcel {

    public static void main(String[] args) throws IOException {

        // 指定excel的位置
        @SuppressWarnings("resource")
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook("D:\\测试\\公用进度安全.xlsx");
        // 获取第一个标签页
        XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
        ArrayList<String> lurl = getUrl(sheet);
        ArrayList<String> surl = getName(lurl);
        mkdirFile(surl);
        getMap(surl);

        // 修改html文件
        HashMap<String, String> surlToLurl = new HashMap<>(16);
        for (String s : lurl) {
            // 取出模块的名称
            String[] arr = s.split("/");
            String suffix = arr[arr.length - 2];
            surl.add(suffix);
            surlToLurl.put(suffix, s);
        }
        // 这样就得到了一个键值对为, 模块.模块url的map

        for (String key : surlToLurl.keySet()) {
            FileReader h5fileReader = new FileReader("D:\\测试\\milestonePlan\\milestonePlanview.html");
            String url = surlToLurl.get(key);
            ArrayList<String> list = new ArrayList<String>();
            // list装入每一行的数据
            String line = null;
            BufferedReader br = new BufferedReader(h5fileReader);
            while ((line = br.readLine()) != null) {
                if (line.trim().length() > 2) {
                    list.add(line);
                }
            }
            String fileName = "D:\\测试\\生成\\" + key + "\\" + key + "view.html";
            FileWriter fw = new FileWriter(fileName);
            BufferedWriter bw = new BufferedWriter(fw);
            for (String string : list) {
                if (string.contains("milestonePlan")) {
                    bw.write("<iframe id=''  src='http://sgcis.sgcc.com.cn:18081/sgcis" + url
                        + "' style='width:100%;height:866px'> <iframe> ");
                    bw.newLine();
                } else {
                    bw.write(string);
                    // 写出换行
                    bw.newLine();
                }
            }

            bw.flush();
            br.close();
        }

    }

    /**
     * 获取路径
     * 
     * @param sheet
     * @return
     */
    private static ArrayList<String> getUrl(XSSFSheet sheet) {
        // 模块路径的URL
        ArrayList<String> lurl = new ArrayList<String>(16);
        int lastRowNum = sheet.getLastRowNum();
        Row row = null;
        Cell cellA = null;
        for (int i = 1; i <= lastRowNum; i++) {
            // 取得第i行
            row = sheet.getRow(i);
            // 取得i行的第4列
            cellA = row.getCell(3);
            String cellValue = cellA.getStringCellValue().trim();
            if (cellValue != null && !"".equals(cellValue.trim())) {
                lurl.add(cellValue);
            }
        }
        return lurl;
    }

    /**
     * 获取名字
     * 
     * @param lurl
     * @return
     */
    private static ArrayList<String> getName(ArrayList<String> lurl) {
        // 模块名字
        ArrayList<String> surl = new ArrayList<String>(16);
        for (String s : lurl) {
            // 取出模块的名称
            String[] arr = s.split("/");
            String suffix = arr[arr.length - 2];
            surl.add(suffix);
        }
        return surl;
    }

    /**
     * 创建文件夹
     * 
     * @param surl
     */
    private static void mkdirFile(ArrayList<String> surl) {
        for (String s : surl) {
            // 生成不同的文件夹
            String newPath = "D:\\测试\\生成\\" + s;
            File file = new File(newPath);
            if (!file.exists()) {
                file.mkdir();
            }
        }
    }

    /**
     * 生成一个装有2个模块名称的map
     * 
     * @param surl
     * @return
     * @throws IOException
     */
    private static void getMap(ArrayList<String> surl) throws IOException {
        // 生成一个装有2个模块名称的map
        ArrayList<String> surl2 = new ArrayList<>(surl);
        Map<String, String> map = new HashMap<>(16);
        for (String s : surl) {
            for (String s1 : surl2) {
                if (s.equals(s1)) {
                    map.put(s, s1);

                }
            }
        }
        // 循环拷贝文件
        for (String key : map.keySet()) {
            FileReader jsfileReader = new FileReader("D:\\测试\\milestonePlan\\milestonePlanviewmodel.js");
            String fileName2 = "D:\\测试\\生成\\" + key + "\\" + map.get(key) + "viewmodel.js";
            FileWriter fw1 = new FileWriter(fileName2);
            char[] chars2 = new char[1024];
            int i;
            while ((i = jsfileReader.read(chars2)) != -1) {
                fw1.write(chars2, 0, i);
            }
            if (fw1 != null) {
                fw1.flush();
                jsfileReader.close();
            }
        }
    }

}

所用jar包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值