`
weixl
  • 浏览: 22370 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

properties文件转化为excel文件

阅读更多
 

     (上面一行暂时不会删除...)  

     由于上线系统要做国际化,英文翻译,需要把原来的porperties文件内容copy到excel中发给翻译公司去做,但由于properties文件太多,而又没有比较好的方法做批量的copy,最后想了想,想了个偷懒的方法:自己写个io来做个读写文件操作。

       因为本身读取properties 文件很简单,读取properties文件中的key和value后,只需要把写入到新生成的excel的两个单元格中就ok了,由于系统调用poi的jar包来做excel文件导出,于是就试了试,这样一个简单的文件转换程序就完成了。只不过中间由于文件比较多,中间好几层文件夹,所以 中间还用了个递归。

       具体实现时候还是baidu了下,poi不是很熟悉...

 

1、首先先把源码包copy一份到c盘的XXX目录里面,然后递归查找非properties文件,删除

 

public class PropertiesToExcel {

    private static int num = 0;

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

        System.out.println("begin time at " + new Date());
        File file = new File("c:\\XXX");
        transformProperitesToExcel(file);
        System.out.println("end time at " + new Date());
        export("d:\\test.xls");

    }

 

 

    public static void readPropertiesToExecl(File file, String path) throws IOException {
        // TODO Auto-generated method stub
        Properties p = new Properties();
        InputStream inStream;
        inStream = new FileInputStream(file);
        p.load(inStream);
        // System.out.println(p.getProperty("mail.debug"));
        // System.out.println(p.isEmpty());
        // p.setProperty("pom", "pom123");
        // System.out.println(p.getProperty("pom"));
        // p.clear();
        // p = System.getProperties();
        Enumeration e = p.propertyNames();
        System.out.println(" 开始导出Excel文件 ");
        XLSExport ee = new XLSExport(path);

        int i = 0;
        while (e.hasMoreElements()) {
            String ele = (String) e.nextElement();
            // System.out.println(ele + ":" + p.getProperty(ele));
            ee.createRow(i);
            ee.setCell(0, ele);
            ee.setCell(1, p.getProperty(ele));
            i++;
        }
        try {
            ee.exportXLS(path);    //导出成excel文件
            System.out.println(" 导出Excel文件[成功] ");
        } catch (Exception e1) {
            System.out.println(" 导出Excel文件[失败] ");
            e1.printStackTrace();
        }

    }

 

 

    /**

     * 读取file目录下所有文件

     */

    public static void transformProperitesToExcel(File file) throws IOException {

        if (file.isDirectory()) {
            File[] subFile = file.listFiles();
            if (subFile.length == 0) {
                file.delete();
            }
            for (int i = 0; i < subFile.length; i++) {
                transformProperitesToExcel(subFile[i]);
            }
        } else {
            if ((!file.getName().endsWith(".PROPERTIES") && !file.getName().endsWith(".properties"))) {
                // file.delete();
            } else {
                String path = file.getAbsolutePath().substring(0,
                        file.getAbsolutePath().lastIndexOf('\\'));
                System.out.println(num + " 、转换文件:" + file.getAbsolutePath());
                num++;
                path = path + "\\packageExcel.xls";  //转换后相应的xls文件目录
                // File excelFile = new File(path);
                // if(!excelFile.canRead()){
                // excelFile.createNewFile();
                // }
                readPropertiesToExecl(file, path);
                // export(path);
            }
        }
    }

 

    public static void export(String file) {
        System.out.println(" 开始导出Excel文件 ");
        XLSExport e = new XLSExport(file);
        try {
            e.createRow(0);
            e.setCell(0, " 编号 ");
            e.setCell(1, " 名称 ");
            e.exportXLS(file);
            System.out.println(" 导出Excel文件[成功] ");
        } catch (Exception e1) {
            System.out.println(" 导出Excel文件[失败] ");
            e1.printStackTrace();
        }
    }

}

  

 

 

 

//*************************生成excel文件工具类****************//

 

import  java.io.FileNotFoundException;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.util.Calendar;

import  org.apache.poi.hssf.usermodel.HSSFCell;
import  org.apache.poi.hssf.usermodel.HSSFCellStyle;
import  org.apache.poi.hssf.usermodel.HSSFDataFormat;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;

/** */ /** 
* 生成导出Excel文件对象
* 
*  @author  John.Zhu
* 
 */ 
 public   class  XLSExport   {

    //  设置cell编码解决中文高位字节截断 
//     private   static   short  XLS_ENCODING  =  HSSFWorkbook.ENCODING_UTF_16;

    //  定制日期格式 
     private   static  String DATE_FORMAT  =   " m/d/yy " ;  //  "m/d/yy h:mm"

    //  定制浮点数格式 
     private   static  String NUMBER_FORMAT  =   " #,##0.00 " ;

    private  String xlsFileName;

    private  HSSFWorkbook workbook;

    private  HSSFSheet sheet;

    private  HSSFRow row;

    /** */ /** 
    * 初始化Excel
    * 
    *  @param  fileName
    *            导出文件名
     */ 
     public  XLSExport(String fileName)   {
        this .xlsFileName  =  fileName;
        this .workbook  =   new  HSSFWorkbook();
        this .sheet  =  workbook.createSheet();
   } 

     /** */ /** 
    * 导出Excel文件
    * 
    *  @throws  XLSException
     */ 
     public   void  exportXLS(String path)  throws  Exception   {
        try    {
           FileOutputStream fOut  =   new  FileOutputStream(path);
           workbook.write(fOut);
           fOut.flush();
           fOut.close();
       }   catch  (FileNotFoundException e)   {
            throw   new  Exception( " 生成导出Excel文件出错! " , e);
       }   catch  (IOException e)   {
            throw   new  Exception( " 写入Excel文件出错! " , e);
       } 

   } 

     /** */ /** 
    * 增加一行
    * 
    *  @param  index
    *            行号
     */ 
     public   void  createRow( int  index)   {
        this .row  =   this .sheet.createRow(index);
   } 

     /** */ /** 
    * 设置单元格
    * 
    *  @param  index
    *            列号
    *  @param  value
    *            单元格填充值
     */ 
     public   void  setCell( int  index, String value)   {
       HSSFCell cell  =   this .row.createCell(( short ) index);
       cell.setCellType(HSSFCell.CELL_TYPE_STRING);
       cell.setCellValue(value);
   } 

     /** */ /** 
    * 设置单元格
    * 
    *  @param  index
    *            列号
    *  @param  value
    *            单元格填充值
     */ 
     public   void  setCell( int  index, Calendar value)   {
       HSSFCell cell  =   this .row.createCell(( short ) index);
//       cell.setEncoding(cell.ENCODING_UTF_16);
       cell.setCellValue(value.getTime());
       HSSFCellStyle cellStyle  =  workbook.createCellStyle();  //  建立新的cell样式 
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT));  //  设置cell样式为定制的日期格式 
        cell.setCellStyle(cellStyle);  //  设置该cell日期的显示格式 
    } 

     /** */ /** 
    * 设置单元格
    * 
    *  @param  index
    *            列号
    *  @param  value
    *            单元格填充值
     */ 
     public   void  setCell( int  index,  int  value)   {
       HSSFCell cell  =   this .row.createCell(( short ) index);
       cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
       cell.setCellValue(value);
   } 

     /** */ /** 
    * 设置单元格
    * 
    *  @param  index
    *            列号
    *  @param  value
    *            单元格填充值
     */ 
     public   void  setCell( int  index,  double  value)   {
       HSSFCell cell  =   this .row.createCell(( short ) index);
       cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
       cell.setCellValue(value);
       HSSFCellStyle cellStyle  =  workbook.createCellStyle();  //  建立新的cell样式 
        HSSFDataFormat format  =  workbook.createDataFormat();
       cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT));  //  设置cell样式为定制的浮点数格式 
        cell.setCellStyle(cellStyle);  //  设置该cell浮点数的显示格式 
    } 

}

 

0
0
分享到:
评论

相关推荐

    .NET平台上的文件抽取框架toxy.zip

    Toxy高级扩展功能Toxy除了提供基础的抽取功能,也提供一些高级的对象转换服务,比如ToxySpreadsheet转DataSet,可以直接把Excel的数据转换成DataSet,方便调用和处理。代码超级简单,如下所示:1234ParserContext c=...

    JAVA 范例大全 光盘 资源

    实例92 Java操作Excel文件 237 第11章 Java高级特性 245 实例93 自动装箱与拆箱 245 实例94 for/in循环 247 实例95 参数不确定(可变长参数) 249 实例96 方法改变(协变式返回类型) 251 实例97 静态导入 252...

    基于SpringMVC的一个web框架

    首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...

    基于Spring MVC的web框架 1.1.11

    首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...

    SpringMVC基础上的web框架

    首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...

    visio教程PDF

    12.1.2 Properties对话框 12.1.3 后继保存 12.1.4 打印到文件 12.2 小结 第13章 打开绘图文件 13.1 打开已存在的Visio绘图文件 13.1.1 在启动时打开一个已存在的文件 13.1.2 在启动后打开一个已...

    Visio 2000 技术大全

    12.1.2 Properties对话框 12.1.3 后继保存 12.1.4 打印到文件 12.2 小结 第13章 打开绘图文件 13.1 打开已存在的Visio绘图文件 13.1.1 在启动时打开一个已存在的文件 13.1.2 在启动后...

    Java JDK实例宝典

    18 操作Excel文件 7. 19 操作PDF文件 7. 20 自定义日志文件类 第8章 线程 8. 1 定义和启动线程 8. 2 停止线程 8. 3 线程的互斥 8. 4 线程的协作 8. 5 线程join 8. 6 生产者. ...

    Chuyao-baiduMap-tools:百度地图经纬度和地址转换小工具(web)

    注:文件批量上传支持Excel文件 xls(2003)格式 导入Eclips或IDEA即可,环境为JDK1.8+Tomcat 8, Mysql配置在dbconfig.properties,修改成自己数据库的password,建表脚本在sql文件夹中, 在QueryController.java中...

    Java范例开发大全 (源程序)

     实例221 改变Properties文件中的键值 399  第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 启动线程 405  实例223 参赛者的比赛生活(线程休眠唤醒) 407  实例...

    java范例开发大全(pdf&源码)

    实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载...

    java范例开发大全源代码

     实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137 读取PDF文件中的内容 203  实例138 用iText生成Word文件 205  实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209 ...

    java范例开发大全

    实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载...

    Java范例开发大全(全书源程序)

    实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索...

    asp.net知识库

    在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C#...

    arcgis工具

    如果搜索不需要区分大小写,可以使用SQL函数将所有的值都转换成大写或者小写。对于基于文件的数据源,例如shape文件或coverages,既可以使用UPPER函数,也可以使用LOWER函数。 例如下面这个查询将选出那些姓名的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    把模型数据转化为XML 14.5.1.4. 定义视图属性 14.5.1.5. 文档转换 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.6.2.1. 文档视图定义 14.6.2.2. Controller 代码 14.6.2.3. Excel...

    Spring中文帮助文档

    14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...

Global site tag (gtag.js) - Google Analytics