如何使用Java swing将excel文件与应用程序软件链接

时间:2011-07-28 10:35:52

标签: excel java

我必须将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)"; }
        }

2 个答案:

答案 0 :(得分:1)

Apache POI http://poi.apache.org/提供用于读取/写入Excel文件的API。

答案 1 :(得分:1)

查看此来源以获取一些提示。

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

顺便说一句 - 这里的JFrame可能会更好地转换为JDialogJOptionPane