在支持双语或多语种项目中,常常需要编辑多个文件来添加资源项,感觉比较繁琐,所以想做一个可以集中管理资源文件的工具。借助Excel,使用Excel来记录,并且通过Excel可以进行分页分模块来规划资源项的存放。

资源excel样例:

资源标识 中文 英文
product.id 产品ID Product ID
product.name 产品名称 Product Name

解析excel文件,生成资源文件的工具下载地址:

http://download.csdn.net/detail/u014569459/7186353

代码(基于jxl):

package cn.jerry.mouse.property_tools;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException; public class ExcelProperties { public void exportToFile(String excelFileName,int keyColumn,int valueColumn,String exportFileName) throws Exception {
File excelFile = new File(excelFileName);
File exportFile = new File(exportFileName);
BufferedWriter bw = new BufferedWriter(new FileWriter(exportFile)); Workbook workbook = Workbook.getWorkbook(excelFile);
Sheet[] sheet = workbook.getSheets();
Cell[] keyCell;
Cell[] valueCell;
String key;
String value; for(int sheetIndex=0;sheetIndex<sheet.length;sheetIndex++)
{
keyCell = sheet[sheetIndex].getColumn(keyColumn);
valueCell = sheet[sheetIndex].getColumn(valueColumn); for(int rowIndex=1;rowIndex<keyCell.length;rowIndex++) //第一行作为标题栏,忽略掉
{
key = keyCell[rowIndex].getContents();
value = valueCell[rowIndex].getContents();
if(key.trim()!="")
bw.write(key+"="+value+"\r\n");
}
}
bw.close();
workbook.close();
}
private boolean isFileValid(String excelFileName) throws Exception
{
try {
File excelFile = new File(excelFileName);
Workbook workbook = Workbook.getWorkbook(excelFile);
workbook.getSheets();
workbook.close();
} catch (BiffException e) {
throw new Exception("不支持此文件格式,仅支持Excel 2003");
}
return true;
}
public static void main(String[] args) throws Exception
{
ExcelProperties excelUtil = new ExcelProperties();
String excelFilePath = "D:\\res.xls";
String exportCNFilePath = "D:\\res_zh_CN.properties";
String exportENFilePath = "D:\\res_en_US.properties";
String exportDefaultFilePath = "D:\\res.properties";
int keyColumn = 0;
int valueColumn; if(args.length==4)
{
excelFilePath = args[0];
exportCNFilePath = args[1];
exportENFilePath = args[2];
exportDefaultFilePath = args[3];
}
else if(args.length!=0)
{
System.out.println("Usage: java -jar ExcelProps.jar excelFilePath exportCNFilePath exportENFilePath excelFilePath");
return;
} excelUtil.isFileValid(excelFilePath); System.out.println("Begin to exprort from excelFile: "+excelFilePath); valueColumn = 1;
excelUtil.exportToFile(excelFilePath, keyColumn, valueColumn, exportCNFilePath);
System.out.println("Config file in Chinese exported: "+exportCNFilePath); valueColumn = 2;
excelUtil.exportToFile(excelFilePath, keyColumn, valueColumn, exportENFilePath);
System.out.println("Config file in English exported: "+exportENFilePath); valueColumn = 1;
excelUtil.exportToFile(excelFilePath, keyColumn, valueColumn, exportDefaultFilePath);
System.out.println("Config file in default language exported: "+exportDefaultFilePath);
}
}

通过Excel来集中管理资源文件的更多相关文章

  1. DataSet导出到Excel,并生成文件(C#实现,可合并行和列)

    using System; using System.IO; using System.Data; using System.Reflection; using System.Diagnostics; ...

  2. 第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件

    iOS打开本地和网络上的word.ppt.excel.text等文件 iOS开发过程中可能需要预览一些文件,这些文件的格式可能有word.ppt.excel等文件格式.那么系统提供两个类去预览这些文件 ...

  3. 如何使用Resource资源文件

    一.目的 为了能够在DisplayAttribute中重复使用同样的名称,将所有的显示字符串集中管理. 二.方法 1.DisplayAttribute本身支持直接使用资源文件. [Display(Re ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  5. ABP文档 - 嵌入的资源文件

    文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的 ...

  6. Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容

    我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...

  7. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  8. Android-Drawable、Bitmap、byte[]、资源文件相互转换

    我们在Android的开发中,经常可以遇到图片的处理,当中,有很多是 Bitmap.Drawable.byte[]和资源文件它们直接相互转换. 今天就此总结一下: 1.资源文件转为Drawable 2 ...

  9. Spring 资源文件处理

    Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...

随机推荐

  1. (Data structure)Implement Trie && Add and Search Word

    Implement Trie (Prefix Tree) Implement a trie with insert, search, and startsWith methods. Note:You ...

  2. redis 学习笔记二 (简单动态字符串)

    redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; char data[0]; }; 这是个广泛使用的常见技巧,常用来 ...

  3. CSS的基本认识

    1.定义: 级联样式表(Cascading Style Sheet)简称“CSS”,通常又称为“风格样式表(Style Sheet)”,它是用来进行网页风格设计的. 2.对CSS的基本认识: CSS是 ...

  4. 关于bootstrap--表单(按钮<button>效果、大小、禁用)

    1.各种标签实现按钮效果: <button class="btn btn-default" type="button">button标签按钮< ...

  5. iOS 提示音播放

    首先找到对应的素材 音频文件 写一个类继承 NSObject 命名为AudioUtil 导入支撑文件 #import <AVFoundation/AVFoundation.h> #impo ...

  6. Sonar入门(四):Eclipse集成Sonar

    sonar及其插件在项目中的使用方法 Sonar平台 Sonar平台的安装见一文, 在Sonar平台上进行的检查可以通过hudson进行触发, A. 没有做持续集成的项目可以复制以下hudson上的任 ...

  7. CSS元素 之 float

    1. float 设计的初衷 Float 设计的初衷是为了文字环绕的效果 使得文字可以围绕着 图片.就像下面这样 2. float 的包裹和 破坏 A) 包裹性 和 破坏性 例如下图   我们原本是希 ...

  8. 在cygwin下编译c语言

    #include <stdio.h> int main (void) { printf("Hello World!\n"); ; } 1.保存到cygwin工作目录下 ...

  9. java下的第一个redis

    Redis支持很多编程语言的客户端,有C.C#.C++.Clojure.Common Lisp.Erlang.Go.Lua.Objective-C.PHP.Ruby.Scala,甚至更时髦的Node. ...

  10. Python爬虫——抓取糗百段子

    在别人博客里学习的 抓取糗百段子,由于糗百不断的更新,代码需要改正. 抓取网页:http://www.qiushibaike.com/hot/page/1 修改后的代码如下: # -*- coding ...