在支持双语或多语种项目中,常常需要编辑多个文件来添加资源项,感觉比较繁琐,所以想做一个可以集中管理资源文件的工具。借助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. 如何应对“改变现状”的失败"

    参加工作后,利用闲暇时间看了一些书,发现以上的场景可以通过心理学,神经生物学等相关的知识来解析,同时也可以利用这些知识来进行一些改进.那么下文就来尝试通过心理学来解析这个场景,同时提出一些改进方法. ...

  2. jQuery手机触屏左右滑动切换焦点图特效代码

    原文地址:http://www.17sucai.com/pins/4857.html 演示地址:http://www.17sucai.com/pins/demoshow/4857 干净演示地址:htt ...

  3. zoj2562:搜索+数论(反素数)

    题目大意:求n以内因子数量最多的数  n的范围为1e16 其实相当于求n以内最大的反素数... 由素数中的 算数基本原理 设d(a)为a的正因子的个数,则 d(n)=(a1+1)(a2+1)..... ...

  4. c语言const

    const关键字 const和指针结合,共有4种形式 const int *p; p是一个指针,指针指向一个int型数据.p所指向的是个常量. int const *p; p是一个指针,指针指向一个i ...

  5. c语言结构体2之变量赋值于字符串

    #include <stdio.h> #include <stdlib.h> struct dangdang { ]; ]; ]; int num; int bugnum; ] ...

  6. VC++ CopyFile函数使用方法

    BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileN ...

  7. poj 1011 Sticks (DFS+剪枝)

    Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 127771   Accepted: 29926 Descrip ...

  8. Android 通知栏用法例子

    当程序意外退出时,可以去掉通知栏上显示的图标 1.创建TestNotificationActivity activity类, package com.notioni.test.notification ...

  9. Android无法导入下载好的项目(和Eclipse中已经存在的项目命名一样导致冲突)解决办法

    错误提示: 在我们到导入从网络下载的项目时,经常会出现如下问题(选择的项目变灰,并且提示要选择至少一个项目): 错误原因: 出现这样的错误主要是因为你的Eclipse已经存在了和上图中New Proj ...

  10. C#中public、private、protected、internal、protected internal (转载)

    在C#语言中,共有五种访问修饰符:public.private.protected.internal.protected internal.作用范围如下表:访问修饰符 说明public 公有访问.不受 ...