在Java中的csv文件的列中写入字符串数组 [英] writing an array of strings down a column of a csv file in java

查看:391
本文介绍了在Java中的csv文件的列中写入字符串数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我要完成的工作是在列的每个单元格中写入一个数据数组,以容纳我拥有的许多数组元素。我希望我在excel中也是如此:

so what i am trying to accomplish is to write an array of data down each cell of the column for as many array elements that i have. i want i too look like this in excel:

buyer | parts |  price| quantity  | comments
tom   | blah  | 546   | 5         |   blah
      |  blah | 56    |  67       |

我的文件中的列比这多得多,但我想举一个简单的例子。也造成我问题的是,一旦完成数组数据集,我就不想在编写器所在的最后一行上打印后的下一列,所以我希望它位于该行的最前面。我已经研究过其他图书馆来实现这一目标,但是我找不到满足我需要的东西。我确实了解CSV文件的性质,如果不手动添加空白单元格,可能不允许这种情况发生,但是还有其他方法可以做到这一点吗?

my file has manyyyyy more columns than this but i wanted to give a brief example. what also creates my problem is that i dont want to print the next column after it on the last row that the writer is on once its done my array data set, so i want it to be on that forst line. i have looked into other libraries for accomplishing this, but there is nothing that i can find that seems to meet my needs. i do understand the nature of CSV file may not allow this to happen, without manually adding in blank cells, but is there any other way to do this?

Enumeration <String> paramNames = request.getParameterNames();
        while(paramNames.hasMoreElements()) 
        {
            String paramName = (String)paramNames.nextElement();
                            writer.append(paramName);
            writer.append(',');
            String[] paramValues = request.getParameterValues(paramName);
            if (paramValues.length == 1)
            {
                String paramValue = paramValues[0];
                if (paramValue.length() == 0)
                {
                    writer.append("No Value");
                    writer.append('\n');
                }
                else
                {
                    writer.append(paramValue);
                    writer.append('\n');
                }
            }
            else
            {
                for(int i = 0; i<paramValues.length; i++)
                {
                    writer.append(paramValues[i]);
                    writer.append(',');
                }
                writer.append('\n');
            }
            previousname = paramName;

        }
        writer.flush();
        writer.close();
    }

还要弄清楚该数据来自何处,表格的中间,所以我正在读取表中的值数组。

also to clarify where this data is coming from, a JSP table thats in the middle of the form, so i am reading in arrays of values that are in the table.

推荐答案

来自: http://javacodeonline.blogspot.ca/2009/09/java-code-to-write-to-csv-file.html

/** The below Java Code writes 
 * some data to a file in CSV
 * (Comma Separated Value) File
 */

package developer;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class MakeCSVFile {

    public static void main(String[] args) throws IOException {

        //Note the "\\" used in the path of the file 
        //instead of "\", this is required to read 
        //the path in the String format.
        FileWriter fw = new FileWriter("D:\\JavaCodeFile\\WriteTest.csv");
        PrintWriter pw = new PrintWriter(fw);

        //Write to file for the first row
        pw.print("Hello guys");
        pw.print(",");
        pw.print("Java Code Online is maing");
        pw.print(",");
        pw.println("a csv file and now a new line is going to come");

        //Write to file for the second row
        pw.print("Hey");
        pw.print(",");
        pw.print("It's a");
        pw.print(",");
        pw.print("New Line");

        //Flush the output to the file
        pw.flush();

        //Close the Print Writer
        pw.close();

        //Close the File Writer
        fw.close();        
    }
}

可能不做硬印刷,而是做一个循环

Probably instead of doing hard print do a loop of the array and print each value separated by a comma.

类似的东西:

Array array;

    Iterator<String> iter = array.iterator();
    while (iter.hasNext())
    {
        object = iter.next();
        pw.print(object.getBuyer());
        pw.print(",");
        pw.print(object.getTitle());
        ..          
    }

这篇关于在Java中的csv文件的列中写入字符串数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆