【问题标题】:create new word document from java从java创建新的word文档
【发布时间】:2012-09-21 11:22:28
【问题描述】:

我想打开新的 MS Word 文档以在 java 中单击按钮时打开 你能建议我的代码吗,我是通过以下代码来做的,但我认为它是打开现有文档而不是创建新文档

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);
        }

    }
}

【问题讨论】:

标签: java swing event-handling ms-word


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    只有没有任何文字的评论

    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);
    }
    

    【讨论】:

    • 如果你想支持多个操作系统,这个解决方案可能会变得混乱。
    • 如果您获得了 AD 或 Novell 管理员访问权限,则权限可能会很混乱 :-)
    【解决方案3】:

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

    我开发了一个小型 Swing 程序(尽管您可以将其开发为控制台应用程序)来从用户那里获取文档编号并将文档调用到 MSWord。假设是;文档以filename 存储,由<document number>>.doc 组成。

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

    这里是用 Java 打开 Word Doc 的代码……它是从网络上摘录的……

    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);
        }
    }
    

    【讨论】:

      【解决方案4】:

      也许使用 java.awt.Desktop 会有所帮助?

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

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

      虽然我怀疑您正在寻找对文件的创建有更多控制权的东西......

      【讨论】:

      • 你试过了吗?我没有,但我想 Word 不会打开该文档,因为它只是空的。我可能错了。
      • 好评!实际上它取决于处理文件的软件...... Word实际上接受空文件作为新文件......另一方面,某些文件格式会崩溃(一个是PDF)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多