package com.sun.jna.platform.win32.COM.util; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.COM.util.annotation.ComInterface; import com.sun.jna.platform.win32.COM.util.annotation.ComObject; import com.sun.jna.platform.win32.Ole32; import com.sun.jna.platform.win32.WinDef.LCID; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class ConfigurateLCID_Test { private Factory factory; @Before public void before() { Ole32.INSTANCE.CoInitializeEx(Pointer.NULL, Ole32.COINIT_MULTITHREADED); this.factory = new Factory(); // switch to english locale (the test is only valid if office is // installed in a non-english locale this.factory.setLCID(new LCID(0x0409)); } @After public void after() { this.factory.disposeAll(); Ole32.INSTANCE.CoUninitialize(); } @Test @Ignore("Only valid for a non-english locale - run manually") public void testDispatchBaseOnMethodName() throws InterruptedException { ComExcel_Application excel = factory.createObject(ComExcel_Application.class); ComIApplication excelApp = excel.queryInterface(ComIApplication.class); // Set visiblite of application excelApp.setProperty("Visible", false); excelApp.setProperty("DisplayAlerts", false); // Get a new workbook. IDispatch wb = excelApp.getProperty(IDispatch.class, "Workbooks").invokeMethod(IDispatch.class, "Add"); IDispatch sheet = wb.getProperty(IDispatch.class, "ActiveSheet"); sheet.getProperty(IDispatch.class, "Range", "A1").setProperty("Value", 42); sheet.getProperty(IDispatch.class, "Range", "A2").setProperty("Value", 23); // Set formula with english command sheet.getProperty(IDispatch.class, "Range", "A3").setProperty("Formula", "=SUM(A1:A2)"); Number result = sheet.getProperty(IDispatch.class, "Range", "A3").getProperty(Number.class, "Value"); // The formula should report the sum Assert.assertEquals(65, result.intValue()); excelApp.invokeMethod(Void.class, "Quit"); } @ComObject(progId = "Excel.Application") public interface ComExcel_Application extends IUnknown { } @ComInterface(iid = "{000208D5-0000-0000-C000-000000000046}") public interface ComIApplication extends IUnknown, IConnectionPoint, IDispatch { } }