【发布时间】:2018-01-06 01:33:29
【问题描述】:
我正在编写一个程序,我可以在其中将人员的详细信息添加到 Excel 工作表中。我还必须能够编辑这些详细信息,因此我想做的是删除旧的详细信息,然后将新的详细信息写入文件。每个人的所有详细信息都存储在一行中。我希望能够通过使用正在更改的人的电子邮件来定位每一行。我怎样才能做到这一点?我已经尝试过我发现的其他人的解决方案,但它们不适用于我的程序。 Belo 是我的程序的一个基本版本,可以帮助你理解:
以下代码是我将人员的详细信息写入文件的位置。这一切都很好。
JButton addClientButton = new JButton("Add");
addClientButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
PrintWriter pw = null;
Client newClient = new Client(firstNameTextField.getText(), lastNameTextField.getText(), emailTextField.getText(), phoneTextField.getText(), weightTextField.getText(), heightTextField.getText(), ageSpinner.getValue(), activityLevelComboBox.getSelectedItem());
try {
pw = new PrintWriter(new FileOutputStream(new File("Clients.csv"), true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
StringBuilder sb = new StringBuilder();
sb.append(newClient.getFirst());
sb.append(",");
sb.append(newClient.getLast());
sb.append(",");
sb.append(newClient.getEmail());
sb.append(",");
sb.append(newClient.getPhone());
sb.append(",");
sb.append(newClient.getWeight());
sb.append(",");
sb.append(newClient.getHeight());
sb.append(",");
sb.append(newClient.getClientAge());
sb.append(",");
sb.append(newClient.getClientActivity());
sb.append("\n");
pw.write(sb.toString());
pw.close();
}
});
下面是代码的开头,我必须能够使用存储在“editClient”对象中的新编辑的详细信息来替换旧的详细信息。
JButton btnSave1 = new JButton("Save");
btnSave1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Client editClient = new Client(firstNameField1.getText(), lastNameField1.getText(), emailField1.getText(), phoneField1.getText(), weightField1.getText(), heightField1.getText(), ageSpinner1.getValue(), activityComboBox1.getSelectedItem());
}
});
【问题讨论】:
-
为什么这些解决方案不起作用?也许你可以分享一些代码?是 Excel 还是 CSV?
-
solution not working不是编程的合适术语。正确的术语是I have an exception/unexpected behaviour when I'm executing the following code
标签: java excel eclipse file csv