Использование 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();
}
}