cancel
Showing results for 
Search instead for 
Did you mean: 

Embedding Excel using OfficeIntegration Element

Former Member
0 Kudos

The only documentation I could find used multiple deprecated methods. I was hoping someone could help me with the current version API.

I have a Node named DocumentSourceNode in my View Context. In that I have an attribute named DocumentSource of type binary.

In my wdDoInit() I have the code needed to retrieve the file and it reports the correct number of bytes. I then create a node, set the DocumentSource to the byte array and then add it to the node.

I have the OfficeIntegration component set to expert with the dataSource pointing to the DocumentSource attribute.

What I get is a red x ( like a missing image or something). It repors an WDIOSEnvironmentException. Here's the code I have:

try {
		IPrivateWorkbenchView.IDocumentSourceNodeNode node = wdContext.nodeDocumentSourceNode();
		//ISimpleTypeModifiable mod = node.getNodeInfo().getAttribute("DocumentSource").getModifiableSimpleType();
		//ModifiableBinaryType bin = (ModifiableBinaryType)mod;
		//bin.setMimeType(WebResourceType.XLS);
		IPrivateWorkbenchView.IDocumentSourceNodeElement element = node.createDocumentSourceNodeElement();
		
		String path = wdControllerAPI.getComponent().getURLService().getResourcePath("MultiView.xls");
		File file = new File(path);
		FileInputStream is = new FileInputStream(file);
		int length = is.available();
		byte[] bytes = new byte[length];
		long bytesRead = is.read(bytes);
		is.close();
		if (bytesRead < length) {
		   wdComponentAPI.getMessageManager().reportException("Unable to read file.", true);
		}
		else {
			element.setDocumentSource(bytes);
			wdContext.nodeDocumentSourceNode().addElement(element);
		
			wdComponentAPI.getMessageManager().reportSuccess("Loaded file. " + length + " bytes.");
			//WDOfficeControlMethods.showDocument(this.wdThis.wdGetAPI(),"OfficeControl");
			IWDAttributeInfo info = node.getNodeInfo().getAttribute("DocumentSource");
			if (info != null) {
				IWDIOSFactory factory = WDOfficeControlMethods.getMethodHandlerInstance(info);
				if (factory != null) {
					IWDIOSDocument document = factory.getDocumentProxy();
					if (document != null) {
						wdComponentAPI.getMessageManager().reportSuccess("Status " + document.openDocument());
					}
					else {
						wdComponentAPI.getMessageManager().reportWarning("Null document.");
					}
				}
				else {
					wdComponentAPI.getMessageManager().reportWarning("Null factory.");
				}
			}
			else {
				wdComponentAPI.getMessageManager().reportWarning("Null attribute info.");
			}
		}
	}
	catch(Exception ex) {
		StringWriter sw = new StringWriter();
		PrintWriter out = new PrintWriter(sw);
		ex.printStackTrace(out);
		wdComponentAPI.getMessageManager().reportException(sw.toString(), true);
		wdComponentAPI.getMessageManager().reportException("" + ((BaseException)ex).toString(), true);
	}

Any help would be greatly greatly appreciated.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Tom,

Please set the expertMode property of OfficeControl to true and try again. Hope it resolves your problem.

Regards

Vishal Patel

Answers (3)

Answers (3)

Former Member
0 Kudos

2004s SP 9.

Former Member
0 Kudos

Hi Tom, are you working with NW2004 or 2004s? And which SP?

regards

Stefanie

Former Member
0 Kudos

For those interested the full stack trace looks like this:

com.sap.tc.webdynpro.clientserver.uielib.officecomp.api.WDIOSEnvironmentException at com.sap.tc.webdynpro.clientserver.uielib.officecomp.impl.IOSFactory.getDocumentProxy(IOSFactory.java:100) at com.linxas.formulation.WorkbenchView.wdDoInit(WorkbenchView.java:135) at com.linxas.formulation.wdp.InternalWorkbenchView.wdDoInit(InternalWorkbenchView.java:125) at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.doInit(DelegatingView.java:61) at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215) at com.sap.tc.webdynpro.progmodel.view.View.initController(View.java:412) at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200) at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:690) at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:560) at com.sap.tc.webdynpro.progmodel.view.ViewManager.makeVisible(ViewManager.java:774) at com.sap.tc.webdynpro.progmodel.view.ViewManager.performNavigation(ViewManager.java:296) at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:762) at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873) at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498) at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144) at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330) at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143) at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:297) at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:706) at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:660) at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:228) at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152) at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:56) at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:47) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325) at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887) at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241) at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92) at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148) at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33) at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)