Hi,
ich dachte mir, ich mache doch lieber einen neuen Thread offen - das verwirrt sonst nur. Ich möchte ein OLE-Objekt in meine View einbauen (SWT, eclipse rcp).
Das Ganze funktioniert auch, aber wie zum Teufel kann ich nun "einfach" Werte in die Tabelle schreiben? oder ein Diagramm erstellen? Ich find einfach nix vernünftiges :-(
Hier wird mir nun ein Excel OLE-Objekt angezeigt und in D8 wird eine Zelle markiert, das war´s dann aber auch - ich will doch nur ein paar Werte in die Tabelle schreiben:autsch:
gruß,
tech
ich dachte mir, ich mache doch lieber einen neuen Thread offen - das verwirrt sonst nur. Ich möchte ein OLE-Objekt in meine View einbauen (SWT, eclipse rcp).
Das Ganze funktioniert auch, aber wie zum Teufel kann ich nun "einfach" Werte in die Tabelle schreiben? oder ein Diagramm erstellen? Ich find einfach nix vernünftiges :-(
Java:
import java.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
public class ExcelView extends ViewPart {
public static final String ID = "ExcelSheet";
private OleClientSite site;
public ExcelView() {
}
@Override
public void createPartControl(Composite parent) {
try {
OleFrame frame = new OleFrame(parent, SWT.NONE);
File f = new File("d:\\test2.xls");
site = new OleClientSite(frame, SWT.NONE, f);
OleAutomation xls = new OleAutomation(site);
int[] ids = xls.getIDsOfNames(new String[] { "ActiveSheet" });
System.out.println(ids[0]);
Variant sheet = xls.getProperty(ids[0]);
// Den Range erstellen
int rangeId = sheet.getAutomation().getIDsOfNames(new String[] { "Range" })[0];
System.out.println("RANGE ID =" + rangeId);
Variant[] arguments_1 = new Variant[1];
arguments_1[0] = new Variant("D8");
Variant range = sheet.getAutomation().getProperty(rangeId,arguments_1);
int[] borderId = range.getAutomation().getIDsOfNames(new String[] { "Borders" });
System.out.println("Borders ID =" + borderId);
Variant border = range.getAutomation().getProperty(borderId[0]);
int[] weightId = border.getAutomation().getIDsOfNames(new String[] { "Weight" });
System.out.println("Weight ID =" + weightId);
Variant weight = border.getAutomation().getProperty(weightId[0]);
Variant[] arguments_2 = new Variant[1];
arguments_2[0] = new Variant(-4138);
border.getAutomation().setProperty(weightId[0], arguments_2);
range.getAutomation().setProperty(weightId[0], arguments_2);
} catch (SWTError e) {
System.out.println("Unable to open activeX control");
return;
}
}
@Override
public void setFocus() {
// Have to set the focus see
// [url]https://bugs.eclipse.org/bugs/show_bug.cgi?id=207688[/url]
site.setFocus();
}
}
Hier wird mir nun ein Excel OLE-Objekt angezeigt und in D8 wird eine Zelle markiert, das war´s dann aber auch - ich will doch nur ein paar Werte in die Tabelle schreiben:autsch:
gruß,
tech