修复G4Studio导出execl时数字被转换成字符的问题

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. 到此就完成了。

 

 

 

 

你可能感兴趣的:(G4Studio)