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

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值