如果使用64位Eclipse IDE,大多数旧的Office格式(DOC,XLS,PPT)甚至都不会打开。因此,SWT框架也无法处理它们也就不足为奇了。您可以使用已弃用的API强制these files to open,但即使这样,您也无法出于某种原因存储XLS文件。
独立测试:
final File file = // insert file here
Display display = new Display();
Shell shell = new Shell(display);
shell.setText(file.getName());
shell.setLayout(new GridLayout());
shell.setSize(800, 600);
OleFrame frame = new OleFrame(shell, SWT.NONE);
frame.setLayoutData(new GridData(GridData.FILL_BOTH));
final OleClientSite clientSite = new OleClientSite(frame, SWT.NONE, "Excel.Sheet", file);
Button button = new Button(shell, SWT.NONE);
button.setText("Save");
button.addListener(SWT.Selection, e -> clientSite.save(file, true));
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
没有例外,没有记录,没有任何记录。它只是不保存。 OleClientSite.isDirty()
也未设置为false。
如何使用SWT的OLE框架保存XLS文件?