KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jinterop > dcom > test > MSExcel


1 package org.jinterop.dcom.test;
2
3 import java.net.UnknownHostException JavaDoc;
4
5 import org.jinterop.dcom.common.JIException;
6 import org.jinterop.dcom.core.IJIComObject;
7 import org.jinterop.dcom.core.JIComServer;
8 import org.jinterop.dcom.core.JIInterfacePointer;
9 import org.jinterop.dcom.core.JIProgId;
10 import org.jinterop.dcom.core.JISession;
11 import org.jinterop.dcom.core.JIString;
12 import org.jinterop.dcom.core.JIVariant;
13 import org.jinterop.dcom.win32.ComFactory;
14 import org.jinterop.dcom.win32.IJIDispatch;
15 import org.jinterop.dcom.win32.IJITypeInfo;
16
17 public class MSExcel {
18
19     private final int xlWorksheet = -4167;
20     private final int xlXYScatterLinesNoMarkers = 75;
21     private final int xlColumns = 2;
22     
23     private JIComServer comServer = null;
24     private IJIDispatch dispatch = null;
25     private IJIComObject unknown = null;
26     private IJIDispatch dispatchOfWorkSheet = null;
27     private IJIDispatch dispatchOfWorkBook = null;
28     private JISession session = null;
29     public MSExcel(String JavaDoc address,String JavaDoc[] args) throws JIException, UnknownHostException JavaDoc
30     {
31         session = JISession.createSession(args[1],args[2],args[3]);
32         comServer = new JIComServer(JIProgId.valueOf(session,"Excel.Application"),address,session);
33     }
34     
35     public void startExcel() throws JIException
36     {
37         unknown = comServer.createInstance();
38         dispatch = (IJIDispatch)ComFactory.createCOMInstance(ComFactory.IID_IDispatch,unknown);
39         IJITypeInfo typeInfo = dispatch.getTypeInfo(0);
40         typeInfo.getFuncDesc(0);
41     }
42     
43     public void showExcel() throws JIException
44     {
45         int dispId = dispatch.getIDsOfNames("Visible");
46         JIVariant variant = new JIVariant(Boolean.TRUE);
47         dispatch.put(dispId,variant);
48     }
49     
50     public void createWorkSheet() throws JIException
51     {
52         int dispId = dispatch.getIDsOfNames("Workbooks");
53         Object JavaDoc[] out = new Object JavaDoc[]{JIVariant.class};
54         JIVariant[] outVal2 = null;
55         JIVariant outVal = dispatch.get(dispId);
56         JIInterfacePointer ptr = (JIInterfacePointer)outVal.getObject();
57         dispatchOfWorkBook =(IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
58         
59         
60         int[] dispIds = dispatchOfWorkBook.getIDsOfNames(new String JavaDoc[]{"Add","Template"});
61         
62         out = new Object JavaDoc[]{JIVariant.class};
63         dispId = dispatchOfWorkBook.getIDsOfNames("Add");
64         
65         outVal2 = dispatchOfWorkBook.callMethodA(dispId,new Object JavaDoc[]{new Integer JavaDoc(xlWorksheet)});
66         ptr = (JIInterfacePointer)outVal2[0].getObject();
67         dispatchOfWorkBook =(IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
68         
69         dispId = dispatchOfWorkBook.getIDsOfNames("Worksheets");
70         JIVariant variant = new JIVariant((short)1);
71         out = new Object JavaDoc[]{JIVariant.class};
72         outVal2 = dispatchOfWorkBook.get(dispId,new Object JavaDoc[]{variant});
73         
74         ptr = (JIInterfacePointer)outVal2[0].getObject();
75         dispatchOfWorkSheet =(IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
76         
77     }
78     
79     public void pasteStringToWorkSheet() throws JIException
80     {
81         int dispId = dispatchOfWorkSheet.getIDsOfNames("Range");
82
83         JIVariant variant = new JIVariant(new JIString("A1"));
84         Object JavaDoc[] out = new Object JavaDoc[]{JIVariant.class};
85         JIVariant outVal,outVal2[] = null;
86         outVal2 = dispatchOfWorkSheet.get(dispId, new Object JavaDoc[]{variant});
87         
88         JIInterfacePointer ptr = (JIInterfacePointer)outVal2[0].getObject();
89         IJIDispatch dispRange = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
90         
91         dispId = dispRange.getIDsOfNames("Select");
92         out = new Object JavaDoc[]{JIVariant.class};
93         outVal = dispRange.get(dispId) ;
94         
95         dispId = dispatchOfWorkBook.getIDsOfNames("ActiveSheet");
96         out = new Object JavaDoc[]{JIVariant.class};
97         outVal = dispatchOfWorkBook.get(dispId);
98     
99         ptr = (JIInterfacePointer)outVal.getObject();
100         IJIDispatch dispatchActiveSheet = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
101         dispId = dispatchActiveSheet.getIDsOfNames("Paste");
102         out = new Object JavaDoc[]{JIVariant.class};
103         try{
104             outVal = dispatchActiveSheet.callMethodA(dispId);
105         }catch(JIException e)
106         {
107             throw e;
108         }
109     }
110
111     public void createXYChart() throws JIException
112     {
113         //column 2.
114
int dispId = dispatchOfWorkSheet.getIDsOfNames("Columns");
115
116         Double JavaDoc cols = new Double JavaDoc(2);
117         Object JavaDoc[] out = new Object JavaDoc[]{JIVariant.class};
118         JIVariant outVal ,outVal2[] = null;
119         outVal2 = dispatchOfWorkSheet.get(dispId,new Object JavaDoc[]{cols});
120         
121         JIInterfacePointer ptr = (JIInterfacePointer)outVal2[0].getObject();
122         IJIDispatch dispatchRange = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
123         
124         dispId = dispatchOfWorkBook.getIDsOfNames("Charts");
125         out = new Object JavaDoc[]{JIVariant.class};
126         outVal = dispatchOfWorkBook.get(dispId);
127         
128         ptr = (JIInterfacePointer)outVal.getObject();
129         IJIDispatch dispatchChart = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
130         
131         
132         
133         dispId = dispatchChart.getIDsOfNames("Add");
134         out = new Object JavaDoc[]{JIVariant.class};
135         outVal = dispatchChart.callMethodA(dispId);
136     
137         ptr = (JIInterfacePointer)outVal.getObject();
138         dispatchChart = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
139         
140         dispId = dispatchOfWorkBook.getIDsOfNames("ActiveChart");
141         out = new Object JavaDoc[]{JIVariant.class};
142         
143         outVal = dispatchOfWorkBook.get(dispId);
144         
145         ptr = (JIInterfacePointer)outVal.getObject();
146         IJIDispatch dispatchActiveChart = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr);
147         
148         dispId = dispatchActiveChart.getIDsOfNames("ChartType");
149         out = new Object JavaDoc[]{JIVariant.class};
150
151         dispatchActiveChart.put(dispId,new JIVariant(new Short JavaDoc((short)xlXYScatterLinesNoMarkers)));
152         
153         int[] dispIds = dispatchActiveChart.getIDsOfNames(new String JavaDoc[]{"SetSourceData","Source","PlotBy"});
154
155         dispId = dispatchActiveChart.getIDsOfNames("SetSourceData");
156         out = new Object JavaDoc[]{JIVariant.class};
157         outVal2 = dispatchActiveChart.callMethodA(dispId,new Object JavaDoc[]{dispatchRange,new Short JavaDoc((short)xlColumns)},new int[]{dispIds[1],dispIds[2]});//invoke(dispIds[0],IJIDispatch.DISPATCH_METHOD,new Object[]{variant,new JIArray(new Integer[]{new Integer(dispIds[1]),new Integer(dispIds[2])},true),null,null,null},null);
158

159         JISession.destroySession(session);
160     }
161     
162     public static void main(String JavaDoc[] args) {
163
164         try {
165                 if (args.length < 4)
166                 {
167                     System.out.println("Please provide address domain username password");
168                     return;
169                 }
170                 MSExcel test = new MSExcel(args[0],args);
171                 test.startExcel();
172                 test.showExcel();
173                 test.createWorkSheet();
174                 test.pasteStringToWorkSheet();
175                 test.createXYChart();
176             } catch (Exception JavaDoc e) {
177                 // TODO Auto-generated catch block
178
e.printStackTrace();
179             }
180     }
181     
182     
183     
184     
185     
186 }
187
Popular Tags