在csv文件中写日期,一些输出为######

时间:2014-01-31 15:22:02

标签: java excel csv

我正在编写一个应用程序,我让一些线程用随机数和随机日期写csv文件。但是,有些日期输出为######,但是当我在Excell中单击它们时,它们确实显示了正确的日期(例如,11月4日在Excell中显示为######,但是当我单击此单元格,在fx字段中显示为11/4/2014)。

以下是我写日期的方式:

    Random random = new Random();
    BufferedWriter bufferedWriter;
    GregorianCalendar cal = new GregorianCalendar();
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");


    writeLine(random, bufferedWriter, cal, df);

private void writeLine(Random random, BufferedWriter bufferedWriter, GregorianCalendar cal, DateFormat df) throws IOException {
        String randomDateString;
        bufferedWriter.write(Double.toString(random.nextDouble() * 100));
        bufferedWriter.write(",");
        randomDateString = createRandomDate(random, cal, df);
        bufferedWriter.write(randomDateString);
        bufferedWriter.newLine();
    }

 private String createRandomDate(Random random, GregorianCalendar cal, DateFormat df) {
        int randomDayOfTheYear;
        Date randomDate;
        String randomDateString;
        randomDayOfTheYear = random.nextInt(365) + 1;
        cal.set(Calendar.YEAR, 2014);
        cal.set(Calendar.DAY_OF_YEAR, randomDayOfTheYear);
        randomDate = cal.getTime();
        randomDateString = df.format(randomDate);
        return randomDateString;
    }

1 个答案:

答案 0 :(得分:2)

######是Excel用于标记不够宽的单元格以显示其中的整个数字的文本。这只发生在数字上。您正在正确编写CSV文件。您所要做的就是在Excel中展开列,以便显示整个日期。