Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java程序中打开、编辑和保存.CSV_Java_Windows_Netbeans_Jfilechooser - Fatal编程技术网

在Java程序中打开、编辑和保存.CSV

在Java程序中打开、编辑和保存.CSV,java,windows,netbeans,jfilechooser,Java,Windows,Netbeans,Jfilechooser,我应该创建一个程序,以电子表格格式显示一个可编辑的CSV,然后从LDAP源提取信息并将其附加到所述电子表格中并保存它。因为一开始就要处理的事情很多,所以我一次就把它分成小块 我甚至还不想为LDAP位操心,我只想让加载>编辑>保存位暂时工作 我想,如果我先打开、显示和保存.TXT文件,我可以很容易地将我学到的东西传输到以后实现.CSV部分时。然而,我很难使Save部分正常工作(阅读:在所有),并且我从这里的其他帖子中得到了一些帮助,所以我想我应该问一下 注意:OracleJavaTuteforJF

我应该创建一个程序,以电子表格格式显示一个可编辑的CSV,然后从LDAP源提取信息并将其附加到所述电子表格中并保存它。因为一开始就要处理的事情很多,所以我一次就把它分成小块

我甚至还不想为LDAP位操心,我只想让加载>编辑>保存位暂时工作

我想,如果我先打开、显示和保存.TXT文件,我可以很容易地将我学到的东西传输到以后实现.CSV部分时。然而,我很难使Save部分正常工作(阅读:在所有),并且我从这里的其他帖子中得到了一些帮助,所以我想我应该问一下

注意:OracleJavaTuteforJFileChooser不涉及保存,只涉及如何开始实现它,而不是它实际如何工作

指向我的代码的链接:

我目前最需要帮助的代码是:

private void SaveActionPerformed(java.awt.event.ActionEvent evt) {                                    
//TODO
}
我现在没有任何东西在那里,因为当我构建、运行或调试项目时,我从来没有真正得到任何工作,而我确实有代码在那里


我想我想说的是,我在写入文件时遇到了问题。

好的,这将是您需要执行的一个示例实现。 请注意,虽然这适用于基本情况,但还不够。使用已建立的CSV库会做得更好,这只是出于教育目的

JTable myTable; 
public void actionPerformed(ActionEvent e) {
    try {
        TableModel model = myTable.getModel(); // the table model contains all the data. Read its JavaDoc API it is enlightend when you work with JTables and you can do lots of neat stuff with it.
        JFileChooser fc = new JFileChooser();
        if(fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { // no save when the user canceled.
            File target = fc.getSelectedFile();
            FileWriter fWri = new FileWriter(target); // this will create the file, but not any parent directories that might not exist. If there are parent directories that don't exist, this line will throw a FileNotFoundException.
            for(int ii = 0; ii < model.getRowCount(); ii++) {
                StringBuilder lineValue = new StringBuilder();
                for(int jj = 0; ii < model.getColumnCount(); jj++) {
                    lineValue.append(model.getValueAt(ii, jj));
                    lineValue.append(",");
                }
                lineValue.substring(0, lineValue.length() -1); // cut away the last ,
                fWri.write(lineValue + "\r\n"); // the RFC suggests CRLF, but don't be surprised when you get a CSV from somewhere that has only LF or something. Its because of lines like this that you want a library handle it for you.
            }
            fWri.flush();// in fact, this and the next line should go to a 'finally' block. Read about correct and clean file writing to learn more.
            fWri.close();
        }
    } catch (IOException ioex) {
         // file not found, cant be written to, etc. You handle it here.
    }
}
JTable-myTable;
已执行的公共无效操作(操作事件e){
试一试{
TableModel model=myTable.getModel();//表模型包含所有数据。阅读它的JavaDoc API,当您使用JTables时,它会给您带来启发,您可以用它做很多整洁的事情。
JFileChooser fc=新的JFileChooser();
如果(fc.showsavediog(this)=JFileChooser.APPROVE\u选项){//用户取消时不保存。
File target=fc.getSelectedFile();
FileWriter fWri=new FileWriter(target);//这将创建文件,但不会创建任何可能不存在的父目录。如果存在不存在的父目录,此行将抛出FileNotFoundException。
对于(int ii=0;ii
JFileChooser
并不是真正用来保存文件的,而是用来选择一个文件,即告诉您用户选择的文件路径。这取决于您使用常规Java IO打开它并将内容写入其中。您查看过Apache POI吗?您的问题有点模糊,您可能应该首先找出需要执行的具体步骤,并询问.CSV文件并不像看起来那么简单,请使用完善的库来操作它们,自己编写一个CSV解析器将浪费时间和资源,而这些东西只有一半是有效的;至少在项目完成之前我还在这里实习!使用CSV文件系统的原因是(据我的老板说),这样客户端就可以在MSExcel中查看和管理输出文件。如果有更简单的解决办法,我洗耳恭听!除非您绝对确定Excel格式不需要引用或支持,否则您确实应该使用CSV库进行格式设置。@millimoose是的,但为了了解工作原理,最好自己实现一次(至少以简单的形式)。由于OP是一名实习生,所以我认为有必要了解一些情况:)@ccreason,这是一个非常简单的例子。读它,理解它,删除它,再为自己写一次。然后,在您理解了这里所做的事情之后,请阅读规范的第一章并理解它们(由@millimoose引用)。(我认为走到这一步大约需要4-8个小时,还不错)然后去寻找一个像样的CSV库并使用它。@millimoose这取决于实习生的观点,从实习生的角度来看,学习比生产力更重要。但是我在上面包括了你的建议,所以任何读到这篇文章的人都应该意识到使用图书馆毕竟是更好的方法。这并不是说我反对为了学习经验而做一些事情。我反对这样做,但我没有意识到,在实践中,手动操作某些东西(除非你知道自己在做什么)是一个坏主意,如果你与其他软件交互,这会加倍。毕竟,通过查看Wireshark的输出,您不会编写HTTP库。