plugins/Read_and_Write_Excel-1.1.1 (Installation instructions at bottom of this page)

Created in Eclipse IDE Neon release (4.6.0), and now requires java jre 1.8.

Release dates:

19 Nov 2015 v1.0.0

25 Nov 2015 v1.0.1

10 April 2017 v1.0.2

27 Feb 2018 v1.1.0 (This version contains many new features that have been added by Brenden Kromhout

02 July 2018 v1.1.1

Description : By default, this plugin extracts data from the Results Table and adds it to a sheet-tab "A" in an .xlsx Excel file on the user's desktop. The plugin will create a file named "Rename me after writing is done" on the desktop if none-exists already, and will update this file if it has already been created. Data is added to the latest sheet (created as "A" if the file is new) or to a user specified sheet using a passed argument (see below). Within the latest sheet, data will be added adjacent to previous data. Results Table column headers are added automatically. A row count is added by default but the user can choose to deny this with a passed argument.

This plugin can be called from a macro using: run("Read and Write Excel"); and it works very well with batching. A major change for v1.1.0, is that, if called slightly differently (see below), the plugin is now much better at handling large data sets and/or excel files that become large over time.

The title of the most recent open image will now be added as a label for exported results data by default, instead of the first open image. An argument function can also be used to overwrite this, so that the user may provide their own title for each export: run("Read and Write Excel", "dataset_label=This_is_my_new_title"); Please note, the provided title should not contain spaces between words.

OPTIONAL ARGUMENTS will be parsed from the second argument string as follows.

"no_count_column" Prevents the plugin from adding a "Count" column automatically.

"file=" The path to the excel file to use (uses the default desktop file otherwise) Example "file=[/Users/antinos/Desktop/My_file.xlsx]" will create and/or append the specified file.

"sheet=" Which sheet in the excel file to put the results in. Example "sheet=banana" will create and/or append a sheet named 'banana'.

"dataset_label=" The label to write in the cell above the data in the excel file. Example "dataset_label=My_new_results_data_label" will use the specified title. Strings and numbers can still be fed to the custom title modifier from a loop but avoid introducing spaces e.g "dataset_label=Table_" + i

Join arguments as follows: run("Read and Write Excel", "no_count_column file=[/Users/antinos/Documents/My_cool_file.xlsx] sheet=Custom_name_here dataset_label=Table_" As you can see, spaces are important to delimit arguments, hence us avoiding them within custom fields.

"file_mode=" This requires a slightly different way of calling the plugin but is very useful for expected large datasets. There are three options. "file_mode=read_and_open" Will just open an excel file (the one you specify with file=)...make sure you do write_and_close when you're done or you'll have problems. "file_mode=write_and_close" Will just write everything you've queued with queue_write, then close the excel file. "file_mode=queue_write" Will queue something to be written to the excel file you've opened previously with read_and_open

see for examples.

I am aware that another Excel_Writer plugin exists but it did not work for me very well (hence me creating this). I did not consult their source code but did find out about Apache POI(*) from them.

Since Brenden modified the plugin, the code is now a lot neater. Feel free to consult it as per your needs.

(*)This plugin uses the Apache POI api, which is distributed under the terms of the Apache Licence (available from I believe this software to be free and open source.

Version 1.0.1 changes: 1) package is not bloated by dependency .jar files. 2) now contains source-code for reference. 3) removed platform specification as I believe this plugin will work across operating systems.

Version 1.0.2 changes: 1) the legacy feature was removed that allowed data to be fed to the plugin in a single-line string to the 'arg' function 2) all data is now exported as string/text into the generated spreadsheet. This is sub-optimal, in that cells will then need to be converted back to a number format in the spreadsheet, but was required to immediately fix an issue whereby string data (when it exists within the Results table) was not being handled properly by the plugin 3) Replaced the legacy data import function of the argument line (note 1 above) with an allowance for user supplied headings for each import; the argument now accepts a string title (e.g "this is my new title") that will then be used to label the results when exported.

Version 1.1.0 changes: 1) Brenden Kromhout added the optional argument features mentioned above and described on his GitHub repo 2) Data imported into an .xlsx file is now recognised as either text or numbers automatically 3) An imageJ progress bar is now visible for each export 4) Now using the latest Apache POI releases (3.17)

Version 1.1.1 changes: 1) Fixed an error whereby the plugin would fail to export data if the 'Label' column of the results table contained empty cells. Empty cells are now replace with a "null" string/text upon export.

Author: Anthony Sinadinos and Brenden Kromhout

Platforms: Multi

Category: Input/Output. Export data to file. Batch tested.

Link: YouTube tutorial v1.0.1 ( New tutorial for v1.1.0 (

Dependencies: jars/commons-collections4, jars/xmlbeans.jar, jars/poi-ooxml.jar, jars/poi-ooxml-schemas.jar, jars/poi.jar, jars/ij.jar

Update site:


  • With ImageJ open, navigate to 'Help'
  • In the presented drop down menu, then select 'Update...'
  • Allow ImageJ to check for updates
  • If required, download updates and restart ImageJ as prompted
  • Repeat the first two steps = Help>Update...
  • This time ImageJ should let you know that there are no updates available
  • Click on 'OK' but do not close the 'ImageJ Updater' window that is also open
  • In the bottom left of the 'ImageJ Updater' window, find and click on 'Manage update sites'
  • In the newly presented 'Manage update sites' window, find and check the 'ResultsToExcel' check box
  • Then close the 'Manage update sites' window
  • The 'ImageJ Updater' window will now present you with the plugin files for installation
  • Press 'Apply changes'
  • After the update has been applied successfully, restart ImageJ