我得到的是将Microsoft(Word,Excel等)打开到JFrame中。
有人可以告诉我一些获取此库的信息吗?Apache POI
API(http://poi.apache.org)可以帮助我吗?也许是JACOB库(http://danadler.com/jacob/)?
好的,这是我的解决方案(使用Eclipse SWT),用于将MS Word文档打开到jframe中:
import java.awt.Canvas;
import java.io.File;
import javax.swing.JFrame;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.ole.win32.OLE;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class AbrirWordJFrame {
static OleClientSite clientSite;
static OleFrame frame;
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
JFrame jframe=new JFrame("Mi jframe");
final Canvas canvas=new Canvas();
jframe.getContentPane().add(canvas);
jframe.setSize(800, 600);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
display.asyncExec(new Runnable() {
public void run() {
Shell shell = SWT_AWT.new_Shell(display, canvas);
shell.setSize(800, 600);
//abrimos un word
shell.setText("Word Example");
shell.setLayout(new FillLayout());
try {
frame = new OleFrame(shell, SWT.NONE);
//esto abre un documento existente
clientSite = new OleClientSite(frame, SWT.NULL, new File("prueba.doc"));
//esto abre un documento en blanco
// clientSite = new OleClientSite(frame, SWT.NONE, "Word.Document");
addFileMenu(frame);
} catch (SWTError e) {
System.out.println("Unable to open activeX control");
display.dispose();
return;
}
//fin abrimos un word
//abrimos un navegador
// Browser browser = new Browser(shell, SWT.NONE);
// browser.setLayoutData(new GridData(GridData.FILL_BOTH));
// browser.setSize(800, 600);
// browser.setUrl("http://www.google.com");
//fin abrimos un navegador
shell.open();
}
});
//el titulo
// shell.setText("Word Example");
// shell.setLayout(new FillLayout());
// try {
// frame = new OleFrame(shell, SWT.NONE);
// //esto abre un documento existente
// clientSite = new OleClientSite(frame, SWT.NULL, new File("prueba.doc"));
// //esto abre un documento en blanco
//// clientSite = new OleClientSite(frame, SWT.NONE, "Word.Document");
// addFileMenu(frame);
// } catch (SWTError e) {
// System.out.println("Unable to open activeX control");
// display.dispose();
// return;
// }
// shell.setSize(800, 600);
// shell.open();
//
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
static void addFileMenu(OleFrame frame) {
final Shell shell = frame.getShell();
Menu menuBar = shell.getMenuBar();
if (menuBar == null) {
menuBar = new Menu(shell, SWT.BAR);
shell.setMenuBar(menuBar);
}
MenuItem fileMenu = new MenuItem(menuBar, SWT.CASCADE);
fileMenu.setText("&File");
Menu menuFile = new Menu(fileMenu);
fileMenu.setMenu(menuFile);
frame.setFileMenus(new MenuItem[] { fileMenu });
MenuItem menuFileOpen = new MenuItem(menuFile, SWT.CASCADE);
menuFileOpen.setText("Open...");
menuFileOpen.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
fileOpen();
}
});
MenuItem menuFileExit = new MenuItem(menuFile, SWT.CASCADE);
menuFileExit.setText("Exit");
menuFileExit.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
shell.dispose();
}
});
}
static void fileOpen() {
FileDialog dialog = new FileDialog(clientSite.getShell(), SWT.OPEN);
dialog.setFilterExtensions(new String[] { "*.doc" });
String fileName = dialog.open();
if (fileName != null) {
clientSite.dispose();
clientSite = new OleClientSite(frame, SWT.NONE, "Word.Document", new File(fileName));
clientSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
}
}
}
资源:EclipseSWT:http://www.eclipse.org/swt
谢谢大家!
我正在使用Apache PDFBox(http://PDFBox.Apache.org/)从任意数量的文件(包括图像和其他PDF)中创建PDF。现在我需要将MS Office文档(Word、Excel和Outlook MSGs)添加到PDF中。这些文件几乎可以有每一个Office版本,因此不允许该文件是新的Office文件(例如docx)还是旧的Office文件(例如doc)。 有没有办法只使用免
问题内容: 我正在使用Apache PDFBox(http://pdfbox.apache.org/)从任意数量的文件(包括图像和其他PDF)中创建PDF。现在,我需要将MS Office文档(Word,Excel和Outlook MSG)添加到PDF。这些文件几乎可以具有每个Office版本,因此不能认为该文件是新的Office文件(例如docx)还是旧的办公室文件(例如doc)。 有什么办法只
我试图通过MS Word打开pdf文件,执行某些操作,例如评估计算、打印文件等,然后继续关闭文件。我收到的错误消息是“Microsoft Excel正在等待另一个应用程序完成OLE操作。” 我之前尝试过超链接跟踪和
有没有办法将文件附加到MS Word文档中?我的意思与您将MS Excel文件拖放到MS Word中的方式相同。它显示MS Excel图标和文件名,双击打开附件。 我的情况来自以前的html文件,我导入使用XHTMLImporter.convert.现在超文本标记语言引用附件下载几个地方,并希望将这些文件附加到适当的MS Word文档。
问题内容: 我试图在弹出新框架时禁用“主” 。我想要它,所以您不能在该框架上单击或拖动任何东西。我尝试将新框架设为a ,但这并没有禁用其他框架。我还查看了有关此的另一篇文章,建议将其设置为a,但仍然无法正常工作。我真的需要帮助。谢谢。这是我正在使用的代码,他们有什么问题吗? 代表“主”框架。 问题答案: 您已经设置了JDialog#setModal或JDialog#ModalityTypes,可能
问题内容: 我想从Java程序中打开excel文档。实际上,我想在程序中单击按钮时打开excel文档。我努力了 其中workbook.xls位于项目文件夹的根目录中,但不起作用。异常表示无法打开程序workbook.xls。我怎样才能做到这一点 问题答案: 我想您要使用默认程序(例如Excel)打开Excel文件吗?如果是这样,您可以使用-class: