2016-02-19 6 views
-1

Я пытаюсь создать массив и вывести его в excel с правильными строками и столбцами. Но когда я запускаю код ниже, он дает мне их всего в одном столбце и 16 строках. В любом случае я могу изменить его так, чтобы он дал его мне в 4 столбцах и 4 строках?Запись массива в файл CSV

do i = 1, 4 
    do j = 1, 4 

    test(i,j) = 2 

    print *, test(i,j) 
    open(unit = 10, file = "test.csv") 
    write(10,*), test(i,j) 
    end do 
end do 
+1

Возможный дубликат http://stackoverflow.com/questions/7130384/how-to-write-fortan-output-as -csv-file –

+0

Если вы хотите открыть в Excel, табуляция с разделителями проще, чем csv. Вы можете создать вкладку, набрав char (9), куда бы вы ни выбрали вкладку. –

ответ

2

Некоторые вещи: если вы делаете файл ввода/вывода, вам нужно открыть и закрыть файл. Вам нужно сделать это только один раз.

Далее, каждый оператор write (если явно не указано иначе), продвиньте линию.

Самый простой способ получить то, что вы, кажется, хотят это:

test(:, :) = 2 
open(unit=10, file='test.csv') 
do j = 1, 4 
    write(10, *) test(1:4, j) 
end do 
close(10) 

Но это не разделяются запятой. Если предположить, что test является целым массивом, вы можете изменить write заявление выше этого:

write(10, '(3(I0, ", "), I0)') test(1:4, j) 

Обновление: Я просто подтвердил @ наценка s предложение:

write(10, '(*(I0 : ", "))') test(:, j) 

Это даже лучше, вам не нужно знать размер массива.

Или, еще лучше, и описал here, вы можете использовать модуль А CSV

+1

Отличный ответ. Вот еще один способ добиться того же формата: write (10, '(* (I0: ","))') test (1: 4, j). Разница в основном такова: в заявлении формата говорится, что все после нее только повторяет, если есть данные. Это еще один способ устранить конечную запятую. Я также использовал элемент * неограниченного формата вместо подсчета элементов. Я думаю, это довольно новая функция. –

+0

Спасибо за эту информацию, я этого не знал. Очень полезно. – chw21

+1

Звезда - довольно новая функция, но всегда можно было использовать большое целое число, например '999999'. Вам не нужно знать точный размер. Это был обычный путь до Fortran 2008 (и в компиляторах, которые его не поддерживают). –

Смежные вопросы