我正在创建一个应用程序,我需要将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的位置。
答案 0 :(得分:1)
我在网上找到了一个将html表转换为csv的脚本。 TableToCSV
但是,它有一个限制,它在同一文件夹中生成输出文件.csv
根据我所知道的Roedy Green(编写该代码的人),我希望源代码旨在教你如何做某事。那'某事'是'创造一个CSV'。这个想法是你可以自由地把它改成它适用于你的用例的程度。事实上,许可证在顶部说明:
此软件可以自由复制和使用,以用于 任何目的,但只有军事用途。
我建议更改方法签名以接受 2个文件,其中一个是现有输入文件,第二个是目标输出文件(并且不在你的ICBM中使用它。)