将生成的文件输入程序

时间:2014-03-09 02:06:45

标签: java database swing csv file-io

我正在创建一个应用程序,我需要将html表中的值插入数据库。我认为首先将html表转换为.csv然后从csv导入数据库是很简单的。

我在网上找到了一个将html表转换为csv的脚本。 TableToCSV

但是,它有一个限制,它在与用户选择.html文件相同的文件夹中生成输出文件.csv。因此我不知道如何将这个新生成的csv文件提供给我的BufferedReader。

 final JFileChooser  fileDialog = new JFileChooser();
JButton btnInputFile = new JButton("Input File");
btnInputFile.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

        int returnVal = fileDialog.showOpenDialog(rootPane);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
           java.io.File file = fileDialog.getSelectedFile();

           String name = file.getName();
           name = name.substring(0, name.lastIndexOf("."));
           name += ".html";
           File newFile = new File(file.getParentFile(), name);
           if (file.renameTo(newFile)) {
               try {
                TableToCSV tableToCSV = new TableToCSV(newFile, ',', '\"', '#', CSV.UTF8Charset );
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           }

           try
           {
            BufferedReader br=new BufferedReader(new FileReader(newFile));
            String line;

            while((line=br.readLine())!=null)
            {
                String[]value = line.split(",");
                String sql = "INSERT into main ( , Ticket #, Status, Priority, Department, Account Name) "
                 + "values ('"+value[0]+"','"+value[1]+"','"+value[2]+"','"+value[3]+"','"+value[4]+"','"+value[5]+"')";

                 PreparedStatement pst = DatabaseConnection.ConnectDB().prepareStatement(sql);
                 pst.executeUpdate();

            }
            br.close();

           }

           catch(Exception e)
           {
            JOptionPane.showMessageDialog(null, e);
           }

        }

    }
});
btnInputFile.setFont(new Font("Segoe UI Symbol", Font.BOLD, 15));
btnInputFile.setBounds(34, 31, 122, 51);
getContentPane().add(btnInputFile);

如您所见,在BufferedReader中输入newFile是不正确的。请建议一种方法来编辑TableToCSV文件,这样我就无法将输出文件带到我可以进一步将其放入BufferedReader的位置。

1 个答案:

答案 0 :(得分:1)

  

我在网上找到了一个将html表转换为csv的脚本。 TableToCSV

     

但是,它有一个限制,它在同一文件夹中生成输出文件.csv

根据我所知道的Roedy Green(编写该代码的人),我希望源代码旨在教你如何做某事。那'某事'是'创造一个CSV'。这个想法是你可以自由地把它改成它适用于你的用例的程度。事实上,许可证在顶部说明:

  

此软件可以自由复制和使用,以用于 任何目的,但只有军事用途。

我建议更改方法签名以接受 2个文件,其中一个是现有输入文件,第二个是目标输出文件(并且不在你的ICBM中使用它。)