EASBOS增加合计行

//合计行方法
/**
	 * 添加统计行
	 * @param table
	 * @param HasTotalRow 表格中是否包含合计行
	 * @param fields
	 * @param colDisplayFormat 显示格式
	 */
	public static void apendFootRow(KDTable table,boolean HasTotalRow, String fields[],String colDisplayFormat) 
	{  
		int size = fields.length;  
		if (size == 0)  
			return;  
		Map sumValue = new HashMap();  
		// 利用getRowCount的到的行可能不正确  
		int count = table.getRowCount3();  
		if (HasTotalRow)
		{
			count = table.getRowCount3()-1;  
		}
		
		for (int i = 0; i < fields.length; i++) {  
			sumValue.put(fields[i], new BigDecimal("0.00"));  
		}  
		IRow footRow = null;  
		KDTFootManager footManager = table.getFootManager();  
		if (footManager == null) {  
			footManager = new KDTFootManager(table);  
			footManager.addFootView();  
			table.setFootManager(footManager);  
		}  
		// 计算所有指定行的合计值  
		footRow = footManager.getFootRow(0);  
		for (int i = 0; i < count; i++) {  
			IRow row = table.getRow(i);  
			for (int j = 0; j < fields.length; j++) {  
				sumValueForCell(row, fields[j], sumValue);  
			}  
		}  

		if (footRow == null) {  
			footRow = footManager.addFootRow(0);  
		}  
		// 设置合计行显示样式  
		String colFormat = "%{0.00}f";  
		if (colDisplayFormat!=null && colDisplayFormat.length()>0)
		{
			colFormat=colDisplayFormat;
		}

		String total = EASResource.getString(FrameWorkClientUtils.strResource  
				+ "Msg_Total");  

		table.getIndexColumn().setWidthAdjustMode(KDTIndexColumn.WIDTH_MANUAL);  
		if (count>=0 && count<1000)
		{
		    table.getIndexColumn().setWidth(30);  
		}
		else if (count>=1000 && count<10000)
		{
			table.getIndexColumn().setWidth(50);  
		}
		else 
		{
			table.getIndexColumn().setWidth(70);  
		}
		
		footManager.addIndexText(0, total);  
		footRow.getStyleAttributes().setBackground(new Color(0xf6, 0xf6, 0xbf));  
		for (int i = 0; i < size; i++) {  
			String colName = fields[i];  
			footRow.getCell(colName).getStyleAttributes().setNumberFormat(  
					colFormat);  
			footRow.getCell(colName).getStyleAttributes().setHorizontalAlign(  
					HorizontalAlignment.RIGHT);  
			footRow.getCell(colName).getStyleAttributes().setFontColor(  
					Color.black);  
		}  

		// 设置合计行的值  
		for (int i = 0; i < fields.length; i++) {  
			footRow.getCell(fields[i]).setValue(sumValue.get(fields[i]));  
		}  
	}  

	private static void sumValueForCell(IRow row, String key, Map sumValue) {  
		ICell cell = row.getCell(key);  

		if (cell != null) {  
			Object obj = cell.getValue();  
			if (obj != null) {  
				BigDecimal keyValue = (BigDecimal) sumValue.get(key);  
				keyValue = keyValue.add(new BigDecimal(obj.toString()));  
				sumValue.put(key, keyValue);  
			}  
		}  
	} 

//合计行调用代码
apendFootRow(kdtGatherEntrys, false, new String[]{"capacity","repairFrequency","totalRrepairAmount"}, "")

//合计行特殊字段算法演示
//一个表分为 表头 表体 表脚
//如果一个表上只加了一个合计行,可通过下面代码获取合计行
IRow footRow = kdtGatherEntrys.getFootRow(0);

//然后通过获取到的footRow 进行字段算法处理
	if(UIRuleUtil.isNotNull(footRow.getCell("repairFrequency").getValue())
    				&& UIRuleUtil.isNotNull(footRow.getCell("capacity").getValue())) {
    			BigDecimal repairFrequency = (BigDecimal) footRow.getCell("repairFrequency").getValue();
    			BigDecimal capacity = (BigDecimal) footRow.getCell("capacity").getValue();
    			footRow.getCell("monthlyMean").setValue(repairFrequency.divide(capacity, 2, BigDecimal.ROUND_HALF_UP));
    		}

 

转载于:https://my.oschina.net/u/3375089/blog/1525710

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值