Bug 198070 ArrayIndexOutOfBoundsException throws out for grid with ZERO columns
The exception stack is: java.lang.ArrayIndexOutOfBoundsException: -1 at org.eclipse.birt.report.engine.emitter.excel.layout.LayoutUtil.createTable(LayoutUtil.java:96) at org.eclipse.birt.report.engine.emitter.excel.ExcelEmitter.startTable(ExcelEmitter.java:128) at org.eclipse.birt.report.engine.layout.html.HTMLTableLayoutNoNestEmitter.startTable(HTMLTableLayoutNoNestEmitter.java:72) at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil$StartContentVisitor.visitTable(ContentEmitterUtil.java:82) at org.eclipse.birt.report.engine.content.impl.TableContent.accept(TableContent.java:87) at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil$StartContentVisitor.visit(ContentEmitterUtil.java:55) at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil.startContent(ContentEmitterUtil.java:42) at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.startContent(HTMLAbstractLM.java:113) at org.eclipse.birt.report.engine.layout.html.HTMLTableLM.layoutChildren(HTMLTableLM.java:84) at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:171) at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layoutChildren(HTMLPageLM.java:142) For an empty GRID, the BIRT will create a table content with ZERO columns, XLS should handle it gracefully.
engine/org.eclipse.birt.report.engine.emitter.prototype.excel/src/org/eclipse/birt/report/engine/emitter/excel/layout/LayoutUtil.java
{
				int pos = ((Integer) iter.next()).intValue( );
				index[pos] = size[i];
				i++;
			}
			
			return new DefaultTableInfo(index);
		}
		else 
		{
			return new DefaultTableInfo(index);
		}	
	}
	
	public static int[] split(int width, int count)
	{
		int[] size = new int[count];		
		int per = (int) width / count;
		
		for(int i = 0; i < count - 1; i++)
		{
			size[i] = per;
		}	
		
		size[count - 1] = width - per * (count - 1);
		
		return size;
	}
}