批量处理txt文本文件到Excel文件中去----java

来源:互联网 发布:js教程视频 编辑:程序博客网 时间:2024/06/06 14:02

不多说了 直接看代码:

下面的FileFind类首先是找到文件夹下面所有的txt文件,并且获取他们的绝对路径或者相对路径存放在数组中

public class FileFind {    @SuppressWarnings("rawtypes")    /**     * 利用字符串的.endsWith()来判断后缀名     * 利用文件类的.listFiles()来获取一个文件夹下所有文件     *      * @param path     * @param data     * @return     */    @SuppressWarnings({ "rawtypes", "unchecked" })private static List getData(String path, List data) {    try{File f = new File(path);if (f.isDirectory()) {File[] fs = f.listFiles();for (int i = 0; i < fs.length; i++) {// 如果该文件夹下面还有文件夹,那么继续往下面去找,递归data = getData(fs[i].getPath(), data);}} else if (f.getName().endsWith(".txt")) {// 匹配文本文件,*.txtdata.add(f.getName());// 得到相对路径}    }catch(Exception e){    e.printStackTrace();    }    return data;    }        /**     *      * @param path     * @param data     * @return  data  返回文件的绝对路径     */    @SuppressWarnings({ "rawtypes", "unchecked" })public static List getFileAbsolutePath(String path, List data) {    try{File f = new File(path);if (f.isDirectory()) {File[] fs = f.listFiles();for (int i = 0; i < fs.length; i++) {// 如果该文件夹下面还有文件夹,那么继续往下面去找,递归data = getFileAbsolutePath(fs[i].getPath(), data);}} else if (f.getName().endsWith(".txt")) {// 匹配文本文件,*.txtdata.add(f.getAbsolutePath().toString());// 得到相对路径//System.out.println(f.getAbsolutePath());// 得到绝对路径}    }catch(Exception e){    e.printStackTrace();    }    return data;    }}

类GetStringByLocation获取文本文件内容,这个案例中只用了,readTEXT函数,按照\t读取字段内容

import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class GetStringByLocation {/** * 按照行读取文本文件的数据,每一行存入到list一维数组中 *  * @param list 用来存储读取的数据 * @param destFile  读取的文件路径 * @throws Exception  读取文件出错  抛出异常 */@SuppressWarnings({ "rawtypes", "unchecked" })public void readTxt(List list, String destFile) throws Exception {try{BufferedReader reader = new BufferedReader(new FileReader(destFile));String line = reader.readLine();while (line != null) {list.add(line);line = reader.readLine();}reader.close();}catch(Exception e){e.printStackTrace();}}/** *  * @param list  存放读取的结果,按照每行的数据格式  \t读取每一个字段 * @param pathName  读取的文本文件路径 * @throws Exception  抛出异常 */@SuppressWarnings({ "rawtypes", "unchecked" })public void readTEXT(List list,String pathName) throws Exception{String text = null;try{    InputStreamReader read1 = new InputStreamReader(new FileInputStream(pathName));    BufferedReader br1 = new BufferedReader(read1);         while((text = br1.readLine())!=null)    {        /***相应操作***/    System.out.println(text);    String[] ss =text.split("\t");    for(int j=0;j<ss.length;j++){    System.out.println(ss[j]);    list.add(ss[j]);    }        text = br1.readLine();    }    br1.close();        } catch(FileNotFoundException e) {      System.out.println(e); } catch(IOException e) {      System.out.println(e); }}    /**     * 从文件读取数据     * @param path 文件路径     * @return 文件数据     */    public static List<String> getFileData(String path)    {        List<String> result = new ArrayList<String>();        FileReader fr = null;        BufferedReader br = null;         try        {            fr = new FileReader(path);            br = new BufferedReader(fr);            String str;             while((str = br.readLine()) != null)            {                result.add(str);            }        }        catch(IOException e)        {            e.printStackTrace();        }        finally        {            try            {                if(fr != null)                {                    fr.close();                }                 if(br != null)                {                    br.close();                }            }            catch(IOException e)            {                e.printStackTrace();            }        }         return result;    }}

最后就是写入到Excel文件中去的主函数:

public class ExcelForAlibaba {@SuppressWarnings("rawtypes")public static void main(String[] args)    {   String targetfile = "E:/out.xls";// 输出的excel文件名String worksheet = "InfoList";// 输出的excel文件工作表名String[] title = { "A", "A", "A" };// excel工作表的标题WritableWorkbook workbook;try {// 创建可写入的Excel工作薄,运行生成的文件在tomcat/bin下// workbook = Workbook.createWorkbook(new File("output.xls"));OutputStream os = new FileOutputStream(targetfile);workbook = Workbook.createWorkbook(os);WritableSheet sheet = workbook.createSheet(worksheet, 0); // 添加第一个工作表jxl.write.Label label;System.out.println("title:"+title.length);for (int i = 0; i < title.length; i++) {// Label(列号,行号 ,内容 )label = new jxl.write.Label(i, 0, title[i]); sheet.addCell(label);}//添加内容:String[] row = { "E", "E", "E" };// excel工作表的的行数据jxl.write.Label label1;System.out.println("row:"+row.length);for(int i =0;i<row.length;i++){label1 = new jxl.write.Label(i, 1, row[i]);sheet.addCell(label1);}try{GetStringByLocation test = new GetStringByLocation();FileFind filefind = new FileFind();List absdata = new ArrayList();//存放文本文件的绝对路径String path = "E:\\DD\DD\\test";//文件夹路径absdata = filefind.getFileAbsolutePath(path, absdata);//获取文本文件的路径集,存放在数组中int j=2;//从第三行开始,写到Excel文件中for (int m = 0; m < absdata.size(); m++) {//每一个文件进行操作,每一个文件里面的内容都放在list中,List list = new ArrayList();//存放每一个文件的内容test.readTEXT(list, absdata.get(m).toString());for (int i = 0; i < 3; i++) {//i表示第一列,第二列。。。。。。jxl.write.Label labeltemp;//System.out.println(list.get(i).toString());labeltemp = new jxl.write.Label(i, j, list.get(i).toString());sheet.addCell(labeltemp);}j++;//从下一行开始写起}}catch(Exception e){e.printStackTrace();}        workbook.write();workbook.close();} catch (Exception e) {e.printStackTrace();}System.out.println("end");}}

以上代码经过测试完全没有问题。需要导入的包自己弄,需要自己写三个包

package org.txtOperate; GetStringByLocation

package org.file.operate; FileFind

package org.excelTest;man()

需要引用的各种第三方包:在main(0)中

import jxl.*;   import jxl.write.*;   import java.io.*;   import java.io.File.*;   import java.util.*; import org.file.operate.FileFind;import org.txtOperate.GetStringByLocation;

转载请注明,交流请联系nlp30508@qq.com


0 0
原创粉丝点击