发信人: goodfrd(HAL9000)
整理人: hunter__fox(2003-05-18 20:24:33), 站内信件
|
☆☆☆VFP/EXCEL打印报表演示程序V1.0和V1.1
VFP通过OLEA调用EXCEL打印报表演示程序V1.0:
.EXE 及 .DBF 等用 WINRAR 3 压缩,因本论坛不能上传>100K的文件,所以分成3个文件:
.rar 第1部分(88KB):
点击浏览该文件
.rar 第2部分(88KB):
点击浏览该文件
.rar 第3部分(26KB):
点击浏览该文件
注意:需要 VFP 5.0 运行库和 EXCEL 97 或以上版本(我用EXCEL 97做的测试)
VFP通过OLEA调用EXCEL打印报表演示程序V1.1:
.EXE 及 .DBF 等用 WINRAR 3 压缩,因本论坛不能上传>100K的文件,所以分成2个文件:
.rar 第1部分(98KB):
点击浏览该文件
.rar 第2部分(33KB):
点击浏览该文件
不分卷的一个 .RAR 的文件请到小好的FTP取(V1.1:):ftp://fox:fox@61.133.63.168/MLYUpload/PRT_dm11.rar
注意:需要 VFP 5.0 运行库和 EXCEL 97 或以上版本(我用EXCEL 97做的测试)
注: V1.1 比 V1.0 增加了一个“自由选择字段打印报表”菜单,使用步骤是:
1、选择打印字段和修改打印字段属性(栏目名、栏宽等)
2、重新生成模板(样表)
3、查看、修改样表
4、送往EXCEL打印
演示程序部分代码如下:
* P_TXL2.PRG 任意选择字段打印同学录
......
c_OpgArr1[1] = '\<1 选择打印字段,设置字段打印属性'
c_OpgArr1[2] = '\<2 按字段设置/选择重新生成EXCEL模板(样表)'
c_OpgArr1[3] = '\<3 查看/修改EXCEL模板(样表)'
c_OpgArr1[4] = '\<4 按姓名查询并按前面设置打印同学录'
c_OpgArr1[5] = '\<0 退出'
DO FORM I_OPT WITH '任意选择字段打印同学录:', '请选择:', c_OpgArr1, 5, 5
......
c_Flds = ;
[ TAB_NAME :10 :R :H='表名',]+;
[ FIELD_NO :8 :H='字段序号',]+;
[ FIELD_NAME :30 :R :H='字段名',]+;
[ FIELD_TYPE :8 :R :H='字段类型',]+;
[ FIELD_LEN :8 :R :H='字段长度',]+;
[ FIELD_DEC :8 :R :H='小数位数',]+;
[ COL_NAME :30 :H='打印栏目名',]+;
[ COL_LEN :12 :H='打印栏目宽度']
......
BROWSE FIELDS &c_FLDS FOR TAB_NAME=[T_TXL] ;
NOAPPEND ;
TITLE [选择和设置打印字段属性,字段序号为0者不打印]+;
[(若全部删除,再进入时可以自动生成), 按Esc退出]
* 字段序号决定打印的栏目顺序,例如:编号为1,姓名为2,性别为3,出生日期为4,...
* 则在EXCEL中打印的栏目顺序就是:编号、姓名、性别、出生日期、...
* 如果你把编号的字段序号改为10,则在EXCEL中打印的栏目顺序就是:
* 姓名、性别、出生日期、......编号
* 如果你不想打印某些字段,则把它的字段序号改为0或负数就可以了
......
DO FORM I_1STR WITH [按字段设置/选择重新生成EXCEL模板(样表)], ;
[请输入报表标题:], [我 的 同 学 录], 60, .F.
IF glSEL_CANCEL
RETURN
ENDIF
gcSTRING1 = TRIM(gcSTRING1)
WAIT WINDOW NOWAIT "正在按字段设置/选择重新生成EXCEL模板(样表) ..."
......
DO FORM I_1STR WITH [按姓名查询并按前面设置打印同学录], ;
[请输入查询姓名(%表示任意字符):], [], 8, .T.
IF glSEL_CANCEL
RETURN
ENDIF
gcSTRING1 = TRIM(gcSTRING1)
IF EMPTY(gcSTRING1) OR RIGHT(gcSTRING1, 1) != [%]
gcSTRING1 = gcSTRING1 + [%]
ENDIF
SELECT * FROM T_TXL.DBF INTO DBF TMP1.DBF ;
WHERE 同学姓名 LIKE gcSTRING1 ;
ORDER BY 出生日期,同学姓名
IF _TALLY = 0
=MSG_INF([找不到符合条件的记录!], [???])
CLOSE TABLES ALL
RETURN
ENDIF
......
BROWSE NOMODIFY NODELETE NOAPPEND NOMENU ;
TITLE [查看符合条件的同学录, 按Esc退出]
IF !MSG_NY([是否启动 Excel 进行打印?], [查询打印])
RETURN
ENDIF
DIMENSION c_OpgArr1[10]
c_OpgArr1[1] = '\<1 自由操作'
c_OpgArr1[2] = '\<2 打印预览'
c_OpgArr1[3] = '\<3 直接打印'
c_OpgArr1[4] = '\<0 退出'
DO FORM I_OPT WITH 'Excel 操作选择:', '请选择:', c_OpgArr1, 4, 3
...... |
|