读取txt内容并取出需要的数据写入到表格导出(通过EasyExcelFactory来实现)

//通过EasyExcelFactory来实现 
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.metadata.Table;
import com.dikeni.computer.utils.TableUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Computer {

    public static void main(String[] args) {
        // String filePath = "D:\\test\\沈阳机场.txt";
        String filePath = "";
        File file = new File("D:\\test");
        File[] files = file.listFiles();
        for (File file1 : files) {
            Pattern r = Pattern.compile(".+.txt");
            Matcher m = r.matcher(file1.getAbsolutePath());
            if (m.find()) {
                String substring = m.group(0).substring(m.group(0).lastIndexOf("\\") + 1,m.group(0).length()-4);
                //System.out.println(substring);
                filePath = file + "\\" + substring + ".txt";
                readTxtFile(filePath,substring,"计算机名称","DIMM1: SK hynix HMA81GS6CJR8N-VK");
            }
        }


        // readTxtFile(filePath);
        //    readTxtFile(filePath,"沈阳机场1" ,"计算机名称","DIMM1: SK hynix HMA81GS6CJR8N-VK");
        //readTxtFile(filePath, "DIMM1: SK hynix HMA81GS6CJR8N-VK");
    }

    public static void readTxtFile(String filePath, String pathName, String... wantText) {
        //StringBuilder str = new StringBuilder();
        StringBuilder sb = new StringBuilder();
        try {
            String encoding = "GBK";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) { //判断文件是否存在
                InputStreamReader read = new InputStreamReader(
                        new FileInputStream(file), encoding);//考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                List<List<String>> strings = new ArrayList<>();
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    for (String s : wantText) {
                        if (lineTxt.contains(s) && lineTxt != null && !sb.toString().contains(s)) {
                            //System.out.println(lineTxt);
                            String trim = lineTxt.trim();
                            String replace = trim.replaceAll(" {3,}", ",");//把多个空格替换成,号
                            System.out.println(replace);
                            String[] split = replace.split(",");//分割获取最终数据
                            if (split.length==0) {
                                break;
                            }
                            strings.add(Arrays.asList(split));
                            //System.out.println(strings);
                            sb.append(s);
                        }
                    }
                }
                System.out.println("信息:"+strings);
                writeOut(strings, pathName);//写入到表
                read.close();
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }

    }

    //写出到表格
    public static void writeOut(List<List<String>> lists, String pathName) {
        OutputStream out = null;
        try {
            //写入到表路径
            out = new FileOutputStream("D:\\test\\out\\" + pathName + ".xlsx");
            ExcelWriter writer = EasyExcelFactory.getWriter(out);
            Sheet sheet = new Sheet(1, 0);
            sheet.setSheetName("Message");
            Table table = new Table(1);
            List<List<String>> title = TableUtils.setTitle(//工具类
                    "名称",
                    "内容"
            );
            table.setHead(title);
           /* ArrayList<List<String>> lists = new ArrayList<>();
            if (!CollectionUtils.isEmpty(list)) {
                lists.add(list);
            }*/
            writer.write0(lists, sheet, table);//开始写入
            writer.finish();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

***工具类:用来设置表的字段

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TableUtils {
    public static  List<List<String>> setTitle(String ...a) {
        ArrayList<List<String>> titles = new ArrayList<>();
        for (String field : a) {
            titles.add(Arrays.asList(field));
        }
        return titles;
    }
}

 

这功能主要是读取一个文件夹下所有的.txt后缀结尾的文件,判断有某些内容后就把那些内容截取出来,然后写入到表格中,最后再把表格导出到电脑本地。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值