从fortran转换成excel文件fortran(ftn95)

我正在使用fortran f95。 我的操作系统是Windows 7,64位。

我想获得输出到Excel文件,以便我可以绘制数据。 有人知道怎么做这个吗? 您的反应非常感谢。 PS:我想输出文件包含x,f(i),fprime1,fprime2,fprime3,diff1,diff2和diff3。 代码如下所述:

**

! This program calculates the first derivative of ! a function, where f(x)= sin x. It makes use of the ! centred-difference formula using 3 values of the step size: h1, h2, h3. ! It also calculates the ! analytical first derivative of the function. Program centred_difference_first_derivative implicit none real :: x, h1, h2, h3, fprime1, fprime2, fprime3, diff1, diff2, diff3, pi, stepa real,dimension(:), allocatable :: f integer :: i ! Assignment of variables x=0.0 pi=4*atan2(1.0,1.0) allocate(f(41)) stepa=pi/20.0 h1=0.1 h2=0.01 h3=0.001 ! Calculate analytical derivative of sin x ! for the domain x:[0,2pi] do i=1,41 f(i)=cos(x) x=x+stepa end do ! Approximates first derivative of sin x ! step size h1, for the domain x:[0,2pi] x=0.0 do i=1,41 fprime1=(sin(x+h1)-sin(x-h1))/(2*h1) diff1=f(i)-fprime1 print 37, x,f(i),fprime1,diff1 x=x+stepa end do 37 format(e15.8,3x,e15.8,3x,e15.8,3x,'ERROR1= ',e15.8) ! Approximates first derivative of sin x ! step size h2, for the domain x:[0,2pi] x=0.0 do i=1,41 fprime2=(sin(x+h2)-sin(x-h2))/(2*h2) diff2=f(i)-fprime2 print 49,x,f(i),fprime2,diff2 x=x+stepa end do 49 format(e15.8,3x,e15.8,3x,e15.8,3x,'ERROR2= ',e15.8) ! Approximates first derivative of sin x ! step size h3, for the domain x:[0,2pi] x=0.0 do i=1,41 fprime3=(sin(x+h3)-sin(x-h3))/(2*h3) diff3=f(i)-fprime3 print 61,x,f(i),fprime3,diff3 x=x+stepa end do 61 format(e15.8,3x,e15.8,3x,e15.8,3x,'ERROR3= ',e15.8) end program 

**

将数据输出到文件,用空格或逗号分隔。 Excel具有文本导入function来正确处理和显示这些文件。

ASCII tecplot文件就是一个例子,您可以使用Fortran简单地编写这些文件, 这里提供了源代码和示例- TECPLOT_WRITE 。 接下来是一小段代码。

 ! ! Write the zone header. ! write ( iunit, '(a)' ) ' ' write ( iunit, '(a,i6,a,i6,a,i6,a)' ) 'Zone I=', nr, ', J=', nz, 'K=', & nt, ', F=POINT' ! ! Write the zone data, one node at a time. ! do k = 1, nt do j = 1, nz do i = 1, nr x = r(i) * cos ( t(k) ) y = r(i) * sin ( t(k) ) vx = vr(i,j) * cos ( t(k) ) - vt(i,j) * sin ( t(k) ) vy = vr(i,j) * sin ( t(k) ) + vt(i,j) * cos ( t(k) ) write ( iunit, '(3f10.3,3g15.6)' ) x, y, z(j), vx, vy, vz(i,j) end do end do end do