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


    首发地址:http://blog.csdn.net/u014737138/article/details/38120403

    不多说了 直接看代码: 

    下面的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")) {
                    // 匹配文本文件,*.txt
                    data.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")) {
                    // 匹配文本文件,*.txt
                    data.add(f.getAbsolutePath().toString());// 得到相对路径
    //                System.out.println(f.getAbsolutePath());// 得到绝对路径
                }
                
            }catch(Exception e){
                e.printStackTrace();
            }
            return data;
        }
    }

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

    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  存放读取的结果,按照每行的数据格式  	读取每一个字段
         * @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("	");
    
                    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:\DDDD\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

  • 相关阅读:
    使用JS模拟锚点跳转
    js如何获取url参数
    k64 datasheet学习笔记52---Universal Asynchronous Receiver/Transmitter (UART)
    k64 datasheet学习笔记11---Port Control and Interrupts (PORT)
    k64 datasheet学习笔记10---Signal Multiplexing and Signal Descriptions
    k64 datasheet学习笔记50---GPIO
    k64 datasheet学习笔记4---Clock distribution
    k64 datasheet学习笔记3---Chip Configuration之Human machine interfaces
    k64 datasheet学习笔记3---Chip Configuration之Communication interfaces
    k64 datasheet学习笔记3---Chip Configuration之Times
  • 原文地址:https://www.cnblogs.com/wust221/p/3868797.html
Copyright © 2020-2023  润新知