Samples‎ > ‎Basics‎ > ‎

Listening to Workbook events and Worksheet events

/*
 * Copyright (c) 2000-2012 TeamDev Ltd. All rights reserved.
 * Use is subject to license terms.
 */

import com.jniwrapper.win32.jexcel.*;

import java.util.List;

/**
 * This sample demonstrates how to listen to workbook and worksheet events.
 *
 * The sample works with MS Excel in non-embedded mode.
 */
public class EventListenersSample
{
public static void main(String[] args) throws ExcelException
{
//Start MS Excel application. Application starts invisible and without any workbooks
Application application = new Application();
Workbook workbook = application.createWorkbook(null);

addListeners(workbook);

runEventsGenerator(workbook);

//Perform cleanup after yourself and close the MS Excel application forcing it to quit
workbook.close(false);
application.close();
}

/**
     * Add event listeners to workbook and then iterate over its worksheets and add listeners to
     * each of them.
     *
     * @param workbook - workbook to add listeners to.
     */
private static void addListeners(GenericWorkbook workbook)
{
WorkbookEventListenerImpl workbookEventListener = new WorkbookEventListenerImpl();
WorksheetEventListenerImpl worksheetEventListener = new WorksheetEventListenerImpl();

workbook.addWorkbookEventListener(workbookEventListener);

List worksheets = workbook.getWorksheets();
for (int i = 0; i < worksheets.size(); i++)
{
Worksheet worksheet = (Worksheet) worksheets.get(i);
worksheet.addWorksheetEventListener(worksheetEventListener);
}
}

/**
     * Perform actions on the workbook to demonstrate listeners' work
     *
     * @param workbook - workbook to perform actions
     * @throws ExcelException - thrown in case if addition of worksheet fails for some reasons
     */
private static void runEventsGenerator(GenericWorkbook workbook) throws ExcelException
{
//Activate worksheets in turn
List worksheets = workbook.getWorksheets();
for (int i = 0; i < worksheets.size(); i++)
{
Worksheet worksheet = (Worksheet) worksheets.get(i);
worksheet.activate();
}

//Create new worksheet
Worksheet worksheet = workbook.addWorksheet("Custom sheet");
worksheet.addWorksheetEventListener(new WorksheetEventListenerImpl());

//Fill in cells
for (int i = 1; i < 3; i++)
for (int j = 1; j < 3; j++)
{
Cell cell = worksheet.getCell(i, j);
cell.setValue(i * j);
}

//Clear filled cells
worksheet.getRange("A1:D3").clear();
}

public static void log(String message)
{
System.out.println(message);
}

public static class WorkbookEventListenerImpl extends WorkbookEventAdapter
{
public void activate(WorkbookEventObject eventObject)
{
log("\"" + eventObject.getWorkbook().getWorkbookName() + "\" is activated.");
}

public void deactivate(WorkbookEventObject eventObject)
{
log("\"" + eventObject.getWorkbook().getWorkbookName() + "\" is deactivated.");
}

public void newSheet(WorkbookEventObject eventObject)
{
log("\"" + eventObject.getWorksheet().getName() + "\" is added to \"" +
eventObject.getWorkbook().getWorkbookName() + "\".");
}

public void beforeClose(WorkbookEventObject eventObject)
{
log("\"" + eventObject.getWorkbook().getWorkbookName() + "\" is closed.");
}
}

public static class WorksheetEventListenerImpl extends WorksheetEventAdapter
{
public void changed(WorksheetEventObject eventObject)
{
log(eventObject.getRange().getAddress() + " is changed.");
}

public void activated(WorksheetEventObject eventObject)
{
log("\"" + eventObject.getWorksheet().getName() + "\" is activated.");
}

public void deactivated(WorksheetEventObject eventObject)
{
log("\"" + eventObject.getWorksheet().getName() + "\" is deactivated.");
}
}

}