标题:VFP调用EXCEL打印,如何将EXCEL的每列宽度按字段值的大小设置?
只看楼主
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
结帖率:97.14%
 问题点数:0 回复次数:8 
VFP调用EXCEL打印,如何将EXCEL的每列宽度按字段值的大小设置?
VFP调用EXCEL打印,如何将EXCEL的每列宽度按字段值的大小设置?

我做了一个调用EXCEL的程序,但每列是固定的宽度,有的列无法显示字段的全部内容。请教:如何编写程序,让系统自动测试一下所需显示、打印的字段值的长度,来确定对应的列的宽度。

注明一下:需要显示和打印的字段是由用户自主选择的。我要让EXCEL的后台操作,不显示。不要让用户来调整列宽。


[ 本帖最后由 YZCZWCB 于 2010-1-15 08:13 编辑 ]
搜索更多相关主题的帖子: 字段 打印 宽度 EXCEL VFP 
2010-01-15 08:10
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:0 
下面的代码是自动设置列宽的例子,供参考。

FILENAME = GETFILE('XLS','EXCEL文件名')
TMPSHEET = GETOBJECT('','excel.sheet')
XLAPP = TMPSHEET.APPLICATION
XLAPP.WORKBOOKS.OPEN(FILENAME)
BCSHEET = XLAPP.ACTIVESHEET
BCSHEET.COLUMNS("A:IV").ENTIRECOLUMN.AUTOFIT      &&最适合的列宽
XLAPP.VISIBLE = .T.
2010-01-15 09:46
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
得分:0 
谢谢。再问一下,如何设置每页的行数,我想打印每页20条记录。并且要打印标题,如:政府采购项目审批查询记录

[ 本帖最后由 YZCZWCB 于 2010-1-15 10:44 编辑 ]
2010-01-15 10:43
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:0 
请参考下列代码,红字部分应该是你所需要的。

cFILENAME=GETFILE('XLS','EXCEL文件名')
eole=CREATEOBJECT('Excel.application')                   && 创建Excel对象
eole.Workbooks.add                                       && 添加新工作簿
eole.Workbooks.Open(cFILENAME)                           && 打开指定工作簿
eOle.WorkSheets(1).Activate                              && 激活第1个工作表
eole.visible=.T.                                         && 显示Excel窗口
WITH eole.Worksheets(1)   && 单元格设置
nROWS=.UsedRange.Rows.Count                              && 行数
nCOLS=.UsedRange.Columns.Count                           && 列数
.Columns("A:IV").Font.Name="隶书"                        && 所有列设为"隶书"
.ROWS(1).Font.Name="黑体"                                && 第1行设为"黑体"
.ROWS(1).Font.Size=12                                    && 第1行设为12号字
.RANGE("A2:IV100").Font.Size=10                          && 第2-100行设为10号字
.Columns("A:IV").FONT.BOLD = .T.                         && 所有列设为粗体字
.Columns("A:IV").FONT.Italic = .T.                       && 所有列设为斜字体
.RANGE("A2:IV100").FONT.BOLD = .F.                       && 第2-100行取消粗体字
.RANGE("A1:IV2").FONT.Italic = .F.                       && 第1-2行取消斜字体
.Columns("J:K").Delete                                   && 删除第10-11列
.Rows(1).RowHeight=20                                    && 设置第1行的高度
.Rows("A2:IV4").RowHeight=30                             && 设置第2-4行的高度
.Columns("A:IV").AutoFit                                 && 最适合的列宽
FOR n=21 TO nROWS STEP 20            && 如果固定了第一行,则把20改为19
.Rows(n).PageBreak=1                                     && 在第 n 行之前插入分页符
NEXT

WITH .PageSetup   && 打印页面的设置
.PaperSize=13     && 设置页面纸张大小(8-"A3" 9-"A4" 11-"A5" 12-"B4" 13-"B5")
.Orientation=2                                           && 1-纵向(默认) 2-横向
.PrintTitleRows="$1:$1"                                  && 定义每页重复打印第1行)
BTMC="政府采购项目审批查询记录"
.CenterHeader= "&20&BTMC"                                && 设置页眉20号字
ENDWITH
IF eole.visible
.PrintPreview                                            && 打印预览工作表
ENDIF
ENDWITH
eole.Workbooks.close                                     && 关闭工作簿
eole.quit                                                && 退出Excel


[ 本帖最后由 sywzs 于 2010-1-17 06:02 编辑 ]
2010-01-17 06:00
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
得分:0 
多谢啦。非常感谢.
不过有个小问题,就是第一页要少于其他页两行。其他行都是20行,第一页是18行。怎么解决?

[ 本帖最后由 YZCZWCB 于 2010-1-17 09:23 编辑 ]
2010-01-17 08:40
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
得分:0 
FOR n=19 TO nROWS STEP 20

相互学习,互相交流,共同提高。
2010-01-17 09:56
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
得分:0 
回复 6楼 qjbzjp
不对呀,反过来了,第二页之后打了21行,第一页打了17行

实际上,我是固定了两行,一是标题行、二是字段行

还有一个问题:只打印第一行,第二行之后不打印了

[ 本帖最后由 YZCZWCB 于 2010-1-17 10:55 编辑 ]
2010-01-17 10:53
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
得分:0 
FOR n=21 TO nROWS STEP 18
因为固定两行,所以步长改为18
我测试的结果每页都是20行。
2010-01-17 11:48
YZCZWCB
Rank: 1
等 级:新手上路
帖 子:191
专家分:5
注 册:2010-1-9
得分:0 
非常感谢,通过
2010-01-17 13:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-295776-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027934 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved