2012-09-21 121 views
1

我想打开新的MS Word文档打开按钮点击java 你能建议我的代码,我这样做是通过下面的代码,但我认为它打开现有的文件不是创建新文档从java创建新的word文档

class OpenWordFile { 

    public static void main(String args[]) { 

     try { 
      Runtime rt = Runtime.getRuntime(); 
      rt.exec("cmd.exe /C start Employee.doc"); 
     } catch (Exception ex) { 
      JOptionPane.showMessageDialog(null, "Exception occured" + ex); 
     } 

    } 
} 
+1

这一切都在这里:http://support.microsoft.com/kb/210565 – assylias

回答

1

你不能这样做使用Java就凭这一点,至少如果你需要生成你需要例如第三工具库Aspose DOC文件。看看this thread,否则你可以使用运行时打开现有的文件。

1

只有用任何词语

Runtime run = Runtime.getRuntime(); 
String lcOSName = System.getProperty("os.name").toLowerCase(); 
boolean MAC_OS_X = lcOSName.startsWith("mac os x"); 
if (MAC_OS_X) { 
    run.exec("open " + file); 
} else { 
    //run.exec("cmd.exe /c start " + file); //win NT, win2000 
    run.exec("rundll32 url.dll, FileProtocolHandler " + path); 
} 
+1

该解决方案如果你想支持多种操作系统,可能会变得麻烦。 – David

+0

在您获得AD或Novell管理员访问的情况下,权利可能会变得混乱:-) – mKorbel

1

在最近发布(Java 6.0)评论,Java提供了桌面级。该类的目的是在系统中打开与给定文件关联的应用程序。因此,如果您使用Word文档(.doc)调用open()方法,那么它会自动调用MS Word,因为这是与.doc文件关联的应用程序。

我已经开发了一个小的Swing程序(尽管你可以开发它作为控制台应用程序)从用户获取文档编号并将文档调用到MSWord。这个假设是;文件与filename一起存储,由<document number>>.doc组成。

下面给出的是您可以编译并按原样运行的Java程序。确保将DIR变量更改为存储.doc文件的文件夹。

这里是在Java中打开Word文档的代码...它的提取物净....

import java.io.File; 
import java.awt.event.*; 
import javax.swing.*; 
import java.awt.*; 

public class WordDocument extends JFrame { 
    private JButton btnOpen; 
    private JLabel jLabel1; 
    private JTextField txtDocNumber; 

    private static String DIR ="c:\\worddocuments\\"; // folder where word documents are present. 

    public WordDocument() { 
     super("Open Word Document"); 
     initComponents(); 
    } 

    private void initComponents() { 
     jLabel1 = new JLabel(); 
     txtDocNumber = new JTextField(); 
     btnOpen = new JButton(); 

     Container c = getContentPane(); 
     c.setLayout(new java.awt.FlowLayout()); 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jLabel1.setText("Enter Document Number : "); 
     c.add(jLabel1); 

     txtDocNumber.setColumns(5); 
     c.add(txtDocNumber); 

     btnOpen.setText("Open Document"); 
     btnOpen.addActionListener(new ActionListener() {  // anonymous inner class 
      public void actionPerformed(ActionEvent evt) { 
        Desktop desktop = Desktop.getDesktop(); 
       try { 
       File f = new File(DIR + txtDocNumber.getText() + ".doc"); 
       desktop.open(f); // opens application (MSWord) associated with .doc file 
       } 
       catch(Exception ex) { 
       // WordDocument.this is to refer to outer class's instance from inner class 
       JOptionPane.showMessageDialog(WordDocument.this,ex.getMessage(),"Error", JOptionPane.ERROR_MESSAGE); 
       } 
      } 
     }); 

     c.add(btnOpen); 

    } // initCompnents() 

    public static void main(String args[]) { 
      WordDocument wd = new WordDocument(); 
      wd.setSize(300,100); 
      wd.setVisible(true); 
    } 
} 
1

也许使用的java.awt.Desktop能帮忙吗?

File f = new File("<some temp path>\\file.docx"); 
    f.createNewFile(); 

    Desktop.getDesktop().open(f); 

创建一个新的空白文档并使用扩展的systsem specifik程序打开它。这个解决方案的优势在于它适用于所有操作系统......只要操作系统有一个程序来查看文件即可。

虽然我怀疑你正在寻找更多的升技在创建该文件的控制semthing ...

+2

您尝试过吗?我没有,但我想Word将不会打开该文件,因为它只是空的。我可能错了。 – home

+0

好评!实际上它取决于处理文件的软件...... Word实际上接受空文件作为新文件...另一方面的一些文件格式会崩溃(PDF格式)。 – David