使用JFileChooser打开excel文件并读取数据时有异常

时间:2013-05-08 08:56:58

标签: java swing jfilechooser

我正在尝试从jMenu打开一个excel文件,并在jFrame中显示整个表格。我在JFileChooser JTable中的ImportExcelclass部分,JFrame部分位于HomeinitUI()ImportExcel class调用方法的方法。我还有另一个名为DataReceiver的类,它正在读取所选的excel文件并获取必要的列并将此数据用于特定方法。因此,来自ImportExcel的方法在Home类和DataReceiver类中调用。

现在关于我面临的问题:

  1. 当程序启动时,主jframe会打开,但我收到NullPointerException。我知道问题是filePath开头是null,但ImportExcelDataReceiver calsses并没有“等待”选择文件。
  2. 即使我打开菜单并选择NullPointerException项并取消Open窗口,我也会得到同样的FileChooser
  3. 我对结构性事​​物感到困惑。我希望我能解释一下我的问题。如果有人需要代码片段,我也会添加它们。

    这是来自ImportExcel class:

    的部分
        public void Import() throws BiffException, IOException {
    
        int option = chooser.showOpenDialog(frame);
        if (option == JFileChooser.APPROVE_OPTION) {
    
            File file = new File(getPath());
            Workbook workbook = Workbook.getWorkbook(file);
            Sheet sheet = workbook.getSheet(0);
    
            headers.clear();
            for (int i = 0; i < sheet.getColumns(); i++) {
                Cell cell1 = sheet.getCell(i, 0);
                headers.add(cell1.getContents());
            }
            data.clear();
            for (int j = 0; j < sheet.getRows(); j++) {
                Vector d = new Vector();
                for (int i = 0; i < sheet.getColumns(); i++) {
                    Cell cell = sheet.getCell(i, j);
                    d.add(cell.getContents());
                }
                d.add("\n");
                data.add(d);
            }
    
        }
        Display();
    }
    
    public String getPath(){
        File selectedFile = chooser.getSelectedFile();
        String path = selectedFile.getAbsolutePath();
        return path;
    
    }
    

    DataReceiver上课:

    public void Read() throws IOException {
        // Getting the necessary columns from excel file
        try {
            if(ex.getPath() != null){
            File inputWorkbook = new File(new ImportExcel().getPath());
                }
        } catch (BiffException e) {
        }
    

    Home上课:

    public final void initUI(){
    
        open.addActionListener(new ActionListener() {
    
            @Override
            public void actionPerformed(ActionEvent arg0) {
                try {
                    new ImportExcel().Import();
                    new ImportExcel().getPath();
                    new DataReceiver().Read();
    
                } catch (BiffException | IOException | SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
            }
        });
                }
    

0 个答案:

没有答案