Использование OpenCSV для записи в столбец вместо строки

У меня есть 1 размерный массив String[] что я хочу записать в файл CSV, а затем просмотреть в программе электронных таблиц, таких как Excel. Однако размер / длина этого массива слишком велика, чтобы вписаться в число разрешенных столбцов, но достаточно мала, чтобы вписаться в число разрешенных строк.

Итак, как мне писать по столбцам вместо строк?

Текущий код, который я использую:

import au.com.bytecode.opencsv.CSVWriter;

public class test {
    public static void main(String[] args) [
        CSVWriter writer2 = new CSVWriter(new FileWriter("testing.csv"), '\t');

        String[] string = new String[10];
        for(int i = 0; i < 10; i++) {
            string[i] = "Testing";
        }

        writer2.writeNext(string); //  !!EXPORTS AS ROW AND NOT A COLUMN!! //
        writer2.close();




    }
}

2 ответа

Написать String[] в файл, каждая строка в отдельных строках, вам не нужен CSVWriter... Обычная старая FileOutputStream Сделаю

public static class test {
  public static void main(String[] args) throws UnsupportedEncodingException, IOException {
    String[] strings = new String[10];
    for (int i = 0; i < 10; i++) {
      strings[i] = "Testing";
    }

    OutputStream output = new FileOutputStream("testing.csv");
    try {
      for (String s : strings) {
        output.write(s.getBytes("UTF-8")); // don't rely on default encoding!
      }
    }
    finally {
      output.close();
    }
  }
}

Однако, если вы действительно хотите написать, используя CSVWriter:

public static class test {
  public static void main(String[] args) throws UnsupportedEncodingException, IOException {
    CSVWriter writer2 = new CSVWriter(new FileWriter("testing.csv"), '\t');

    String[] strings = new String[10];
    for (int i = 0; i < 10; i++) {
      strings[i] = "Testing";
    }

    String[] wrap = new String[1]; //probably saving on GC

    for (String s: strings) {
      wrap[0]=s;
      writer2.writeNext(wrap);
    }
    writer2.close();

  }

}

writeNext написать 1 строку. Если вы вызовете его дважды, он напишет 2 строки, если вы вызовете его 10 раз, он напишет 10 строк, верно?:)

РЕДАКТИРОВАТЬ: Хорошо, давайте попробуем это:

public void writeLines(String[] array, CSVWriter writer) {
    for (final String oneElement : array) {
        writer.writeNext(new String[] {oneElement});
    }
}

Теперь вы можете позвонить writeLines способ написать кучу строк. Если я возьму ваш пример:

import au.com.bytecode.opencsv.CSVWriter;

public class test {
    public static void main(String[] args) {
        CSVWriter writer2 = new CSVWriter(new FileWriter("testing.csv"), '\t');

        String[] string = new String[10];
        for(int i = 0; i < 10; i++) {
            string[i] = "Testing";
        }

        writer2.writeLines(string); // This will write a column
        writer2.close();
    }
}
Другие вопросы по тегам