protected void initializeFromByteArray( byte[] barray )
	{
		// check first bytes to see if this is a zipfile (OOXML)
		if( ((char) barray[0] == 'P') && ((char) barray[1] == 'K') )
		{
			try
			{
				// added "." fixes Baxter Open Bug [BugTracker 2909]
				File ftmp = TempFileManager.createTempFile( "WBP", ".tmp" );
				FileOutputStream fous = new FileOutputStream( ftmp );
				fous.write( barray );
				fous.flush();
				fous.close();
				initFromFile( ftmp );
				return;
			}
			catch( Exception e )
			{
				log.error( "Could not parse XLSX from bytes." + e.toString() );
				return;
			}
		}

		ByteBuffer bbf = ByteBuffer.wrap( barray );
		bbf.order( ByteOrder.LITTLE_ENDIAN );
		myLEOFile = new LEOFile( bbf );
		if( myLEOFile.hasWorkBook() )
		{
			try
			{
				BlockByteReader bar = myLEOFile.getXLSBlockBytes();
				initBytes( bar );
			}
			catch( Throwable e )
			{
				if( e instanceof OutOfMemoryError )
				{
					throw (Error) e;
				}
				if( e instanceof WorkBookException )
				{
					throw (WorkBookException) e;
				}
				String errstr = "Instantiating WorkBookHandle failed: " + e.toString();
				throw new org.openxls.formats.XLS.WorkBookException( errstr, WorkBookException.UNSPECIFIED_INIT_ERROR );
			}
		}
		else
		{
			log.error( "Initializing WorkBookHandle failed: byte array does not contain a supported Excel WorkBook." );
			throw new InvalidFileException( "byte array does not contain a supported Excel WorkBook." );
		}
	}