Working with Named Ranges

This sample demonstrates how to list existing named ranges and create a new named range.


import com.jniwrapper.win32.automation.types.Variant;
import com.jniwrapper.win32.excel.Name;
import com.jniwrapper.win32.excel.Names;
import com.jniwrapper.win32.excel._Workbook;
import com.jniwrapper.win32.excel._Worksheet;
import com.jniwrapper.win32.jexcel.Application;
import com.jniwrapper.win32.jexcel.Workbook;
import com.jniwrapper.win32.jexcel.Worksheet;

import java.io.File;

public class ListNamedRanges {
    public static void main(String[] args) {
        Application application = null;
        Workbook workbook = null;
        try {
            application = new Application();
            workbook = application.openWorkbook(new File("book_with_named_ranges.xlsx"));
            final _Workbook nativePeer = workbook.getNativePeer();
            workbook.getOleMessageLoop().doInvokeAndWait(new Runnable() {
                public void run() {
                    Names names = nativePeer.getNames();
                    long namesCount = names.getCount().getValue();
                    Variant unspecifiedParameter = Variant.createUnspecifiedParameter();
                    for (int i = 1; i<=namesCount;i++){
                        Name name = names.item(new Variant(i),
                                unspecifiedParameter,
                                unspecifiedParameter);
                        System.out.println("Name: "+name.getName().getValue()
                                +", value: "+name.getValue().getValue());
                        name.setAutoDelete(false);
                        name.release();
                    }
                    names.setAutoDelete(false);
                    names.release();
                }
            });
            Worksheet worksheet = workbook.getWorksheet(2);
            final _Worksheet worksheetPeer = worksheet.getPeer();
            worksheet.getOleMessageLoop().doInvokeAndWait(new Runnable() {
                public void run() {
                    Names names = worksheetPeer.getNames();
                    Variant unspecifiedParameter = Variant.createUnspecifiedParameter();
                    names.add(new Variant("TestName"),
                            new Variant("=$B$3"),
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter,
                            unspecifiedParameter);
                }
            });
            workbook.save();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (workbook != null) {
                workbook.close(false);
            }
            if (application != null) {
                application.close(true);
            }
        }
    }
}