G4Studio是国人开发的一个开源的二次开发平台,自己感觉还是很不错的,很多我们要用到的功能都被包含在里面了,昨天在用G4studio导出execl的时候发现导出来本来是数字的被改变成了文本,这样就不方便在execl中做计算,跟踪源码后发现G4Studio在转换数据的格式的时候有一点问题,修改如下:
1. 首先找到org.g4studio.core.web.report.excel下面的ExcelFiller,这个类是execl数据填充器
2. 然后找到private void fillFields(WritableSheet wSheet) throws Exception, 这个方法就是我们要修改的方法,这个方法是写入表格字段对象
3. 在fillFields中找到String type = getType(cell.getContents().trim()); ,把这句话给注释掉,然后在下面加上String type = getType(dataDto.getAsString(key));
4. 找到getType这个方法中的if (pType.indexOf(":n") != -1 || pType.indexOf(":N") != -1),把修改成if (isNumber(pType))
5. 接下来就要添加isNumber方法了,总共添加两个方法:
/**
* 判断字符串是否是数字
*
* @param str
* 源字符串
* @return true是,false否
*/
private static boolean isNumber(String number) {
// 判断参数
if (G4Utils.isEmpty(number)) {
return false;
}
// 查看是否有小数点
int index = number.indexOf(".");
if (index < 0) {
return isNumeric(number);
} else {
// 如果有多个".",则不是数字
if (number.indexOf(".") != number.lastIndexOf(".")) {
return false;
}
String num1 = number.substring(0, index);
String num2 = number.substring(index + 1);
return isNumeric(num1) && isNumeric(num2);
}
}
/**
* 判断字符串是否由纯数字组成
*
* @param str
* 源字符串
* @return true是,false否
*/
private static boolean isNumeric(String str) {
if (G4Utils.isEmpty(str)) {
return false;
}
Pattern pattern = Pattern.compile("^-?\\d*");
return pattern.matcher(str).matches();
}
6. 到此就完成了。