采用Word更好地输出VFP报表 下载本文

FOR I=1 TO nOutColumn DO CASE

CASE aFieldName[I,2]==\

cString=STR(&aFieldName[I,1],aFieldName[I,3], aFieldName[I,4])

CASE aFieldName[I,2]==\

cString=ALLT(STR(&aFieldName[I,1],10,0]))

CASE aFieldName[I,2]==\cString=TRIM(&aFieldName[I,1]) IF LEN(cString)>aFieldName[I,6] aFieldName[I,6]=LEN(cString) ENDIF OTHERWISE

cString=\暂不处理类型\ENDCASE

oleWord.NextCell()

oleWord.Insert((cString)) &&字符型变量必须外加() ENDFOR SKIP ENDDO

*--表格内容填写完毕

*下面根据填写的具体内容重新调整表格某些列的宽度 *(在下面的计算过程中单位为TWIP)

j=nWidth*1440 &&nWidth为版心宽度是一全局变量,单位为英寸 &&1英寸=1440TWIP k=0

FOR I=1 TO nOutColumn

IF aFieldName[I,2]#\j=j-aFieldName[I,5] &&剩余可用宽度 ELSE

k=k+aFieldName[I,6] &&需要调整宽度的最大 字符数之和 ENDIF

ENDFOR &&减去禁止调列的宽度 FOR I=1 TO nOutColumn

IF aFieldName[I,2]=\*如果要调整的宽度小于或等于最小宽度,则将其列入非调整之列 IF j/k*aFieldName[I,6] <= aFieldName[I,5] aFieldName[I,2]=\j=j-aFieldName[I,5] k=k-aFieldName[I,6] I=1 &&从头循环 LOOP ENDIF

ENDIF ENDFOR

FOR I=1 TO nOutColumn

IF aFieldName[I,2]=\oleWord.EditGoto((aFieldName[I,1])) oleWord.TableSelectColumn

oleWord.TableColumnWidth(j/k*aFieldName[I,6]/20,2, 0,0,0,0)

*1磅=20TWIP,TableColumn()的缺省单位为磅 ENDIF ENDFOR *宽度调整完毕

oleWord.FileSaveAs(\*oleWord.FilePrint(0,0,0,\oleWord.AppClose(\WAIT \卸载Word Basic\WAIT CLEAR RETURN

在将数据库内容生成Word文档的最终结果一种方法是以文档的形 式保存下来,另一方法是不仅要把文档保存下来,还要进行打印,此时

需要注意的一点是:不能采用后台打印,将上述程序*olwWord.FilePrint(0,0,0,\前面的星号\去掉即可。\\

中的