通过Excel来集中管理资源文件
在支持双语或多语种项目中,常常需要编辑多个文件来添加资源项,感觉比较繁琐,所以想做一个可以集中管理资源文件的工具。借助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来集中管理资源文件的更多相关文章
- DataSet导出到Excel,并生成文件(C#实现,可合并行和列)
using System; using System.IO; using System.Data; using System.Reflection; using System.Diagnostics; ...
- 第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件
iOS打开本地和网络上的word.ppt.excel.text等文件 iOS开发过程中可能需要预览一些文件,这些文件的格式可能有word.ppt.excel等文件格式.那么系统提供两个类去预览这些文件 ...
- 如何使用Resource资源文件
一.目的 为了能够在DisplayAttribute中重复使用同样的名称,将所有的显示字符串集中管理. 二.方法 1.DisplayAttribute本身支持直接使用资源文件. [Display(Re ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- ABP文档 - 嵌入的资源文件
文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的 ...
- Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容
我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- Android-Drawable、Bitmap、byte[]、资源文件相互转换
我们在Android的开发中,经常可以遇到图片的处理,当中,有很多是 Bitmap.Drawable.byte[]和资源文件它们直接相互转换. 今天就此总结一下: 1.资源文件转为Drawable 2 ...
- Spring 资源文件处理
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...
随机推荐
- 【转】Android API 中文(14) —— ViewStub
用一个XML源填充view.inflate(上下文对象,资源文件Id,父窗口组一般为null): 原文网址:http://www.cnblogs.com/over140/archive/2010/10 ...
- 利用Visual Studio寻找C#程序必要的运行库文件
在工程打包中,有时候很头痛的就是运行所需要的库文件不能够全面的包含进来,特别是有时候调用了一系列外部扩展.对于这些问题,我们可以借用Visual Studio的打包功能帮助我们寻找软件运行必须的库文件 ...
- 第23讲 UI_布局 之相对布局
第23讲 UI_布局 之相对布局 .RelativeLayout(相对布局): RelativeLayout(相对布局)是指组件的位置总是相对兄弟组件.父容器来决定的(相对位置),如某个组件的左边右边 ...
- linux shell在while中用read从键盘输入
系统是ubuntu 14.04 64bit,之前曾想安装Stream来玩dota2,但最终没成功.由于Stream只有32bit,安装Stream时也安装了大量32bit的库.删除Stream后,这些 ...
- 面试时遇到的SQL
CustomerID DateTime ProductName Price C001 2014-11-20 16:02:59 123 PVC 100 C001 2014-11-19 16:02:59 ...
- (转)iPhone 判断UITableView 滚动到底部
UITableView is a subclass of UIScrollView, and UITableViewDelegate conforms to UIScrollViewDelegate. ...
- <Win32_6>程序员求爱的创意程序^_^
作为程序员,我们时常被外界误认为很闷.不浪漫.没创意……等等这一类人,这让我们实在有些感伤啊,我得为程序员呐喊一声: 我们也能可以欢快.浪漫.有创意…… 朋友,你向女生表白过吗? …… 这个问题有点儿 ...
- sql获取每门课程成绩最好的学生信息
1.相关数据表 Score表 [User]表 SQL语句例如以下: --查询出各科成绩最好的学生信息 --自连接 --SELECT TOP 1 * FROM Score B WHERE B.Score ...
- Git diff (---和+++具体解释)
如果两个文件相似度很高,那么上下文格式的diff,将显示大量重复的内容,很浪费空间.1990年,GNU diff率先推出了"合并格式"的diff,将f1和f2的上下文合并在一起显示 ...
- IOS 原生解析JSON 问题
服务器----WebService 返回的是JSON数据 IOS解析报错: Error Domain=NSCocoaErrorDomain Code=3840 "Unable to conv ...