簡體   English   中英

如何使用Java swing將excel文件與應用程序軟件鏈接

[英]How to link an excel file with the application software using Java swing

我必須鏈接一個excel文件和我正在開發的應用軟件.excel文件將包含進行調查的問卷。我有這個代碼只能打開一個Jpanel來選擇文件。我選擇文件后什么也沒有發生。我希望能夠根據excel文件中的問題生成模板(比如從excel文件中提取問題並從中創建模板),然后我必須在網上上傳。請在這件事上給予我幫助?

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


public class SelectFile extends JFrame{


    public static void main(String[]args){
                    JFrame frame = new JFrame();
                    frame.setLayout(null);

                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setTitle("Select File for Linking");
                    frame.setSize(400, 100);
                    Container container = frame.getContentPane();
                    container.setLayout(new GridBagLayout());

                    final JTextField text=new JTextField(20);

                    JButton b=new JButton("Select File");
                    text.setBounds(20,20,120,20);
                    b.setBounds(150,20,80,20);

                   // b.setText("<html><font color='blue'><u>Select File</u></font></html>");
                    b.setHorizontalAlignment(SwingConstants.LEFT);
                    //b.setBorderPainted(false);
                    //b.setOpaque(false);
                   // b.setBackground(Color.lightGray);
                    b.addActionListener(new ActionListener() {
                      public void actionPerformed(ActionEvent e){
                                JFileChooser fc = new JFileChooser();
                                fc.addChoosableFileFilter(new OnlyExt());

                                int returnval = fc.showOpenDialog(null);
                                if (returnval == JFileChooser.APPROVE_OPTION) {
                                File file = fc.getSelectedFile();
                                text.setText(file.getPath());
                                } 
                            }
                    });
                    container.add(text);
                    container.add(b);
                    frame.setVisible(true);
            }
    }
        class OnlyExt extends javax.swing.filechooser.FileFilter{
            public boolean accept(File file) {
        if (file.isDirectory()) return false;
        String name = file.getName().toLowerCase();
        return (name.endsWith(".xls"));
        }
        public String getDescription() { return "Excel ( *.xls)"; }
        }

Apache POI http://poi.apache.org/提供了用於讀取/寫入Excel文件的API。

查看此來源以獲取一些提示。

import java.io.File;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.border.EmptyBorder;

public class SelectFile {

    public static void main(String[]args) {

        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JFrame frame = new JFrame("Select File for Linking");
                // don't use null layouts.
                //frame.setLayout(null);

                // create a panel so we can add a border
                JPanel container = new JPanel(new FlowLayout(3));
                container.setBorder(new EmptyBorder(10,10,10,10));
                frame.setContentPane(container);

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // instead call pack() after components are added
                //frame.setSize(400, 100);

                final JTextField text=new JTextField(20);

                JButton b=new JButton("Select File");

                // irrelevant unless button stretched by layout
                //b.setHorizontalAlignment(SwingConstants.LEFT);
                b.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        JFileChooser fc = new JFileChooser();
                        String desc = "Excel ( *.xls)";
                        String[] types = {".xls"};
                        fc.addChoosableFileFilter(
                            new FileNameExtensionFilter(desc, types));

                        int returnval = fc.showOpenDialog(null);
                        if (returnval == JFileChooser.APPROVE_OPTION) {
                            File file = fc.getSelectedFile();
                            text.setText(file.getPath());
                            try {
                                // 1.6+
                                Desktop.getDesktop().edit(file);
                            } catch(Exception ex) {
                                ex.printStackTrace();
                            }
                        }
                    }
                });
                container.add(text);
                container.add(b);

                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

BTW - 這里的JFrame可能會更好地轉換為JDialogJOptionPane

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM