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();
}
}
}
}
读取excel,批量生成文件
最新推荐文章于 2023-05-08 16:06:11 发布