能否用程序把分页符加上去?
现在可以用程序把DBF文件转化为电子表格,能否根据不同单位分别加 上分页符分页打印?单位少可用手工,但单位有几百个无法用手工,能否用程序给它加上去?oExcel=NewObject('excel.application')
oExcel.Visible=.T.
oExcel.WorkBooks.Add
oExcel.WorkBooks(1).WorkSheets(1).HPageBreaks.Add(oExcel.WorkBooks(1).WorkSheets(1).Range('a10'))
其他的,你自己写代码 多谢,最好每句后有注介,便于理介,好事做到底吧。 *!* 能否用程序把分页符加上去?
*!* 现在可以用程序把DBF文件转化为电子表格,能否根据不同单位分别加上分页符分页打印?
*!* 单位少可用手工,但单位有几百个无法用手工,能否用程序给它加上去?
*!* 现在对DBF转为电子表格研探不少主要是各种格式的讨论,现有一个棘手的问题:
*!* 转化后我要根据按单位不同进行分页打印,在VFP中顺利地可以办到,可采用数据分组方法。
*!* 但转为电子表格后如果单位少那手工搞一下插入分页符,但单位多有上百个以上那无法用手工的方法。
*!* 我查了张洪举先生编的书中(常用EXCEL对象的OLE控制语句)提到插入分页符那只有在“第xx行以前插入分页符”。
*!* 也没有根据单位不同来插入分页符的语句,每单位数量是不同的无法确定第几行前插入分页符。
*!* 如何不解决这个具体问题那转成电子表格也没多大作用。不知行家有否新的好办法?
CREATE CURSOR Temp (dw c(20),xm c(8),xb c(2))
INSERT INTO Temp VALUES ('CCTV','NP','女')
INSERT INTO Temp VALUES ('CCTV','YL','女')
INSERT INTO Temp VALUES ('CCTV','JYD','女')
INSERT INTO Temp VALUES ('CCTV','LYM','女')
INSERT INTO Temp VALUES ('MS','BILL','男')
INSERT INTO Temp VALUES ('BU','ZS','女')
INSERT INTO Temp VALUES ('QU','LS','女')
INSERT INTO Temp VALUES ('CCTV','NP','女')
INSERT INTO Temp VALUES ('CCTV','NP','女')
SELECT * FROM Temp ORDER BY DW INTO CURSOR Temp2
o=NEWOBJECT('excel.application')
o.VISIBLE=.T.
o.workbooks.ADD
WITH o.workbooks(1).worksheets(1)
SELECT Temp2
GO TOP
lnDw=Temp2.dw
FOR lnCnt=1 TO RECCOUNT('Temp2')
SELECT Temp2
GO lnCnt
.RANGE('A'+TRANSFORM(lnCnt)).VALUE=Temp2.dw
.RANGE('B'+TRANSFORM(lnCnt)).VALUE=Temp2.xm
.RANGE('C'+TRANSFORM(lnCnt)).VALUE=Temp2.xb
IF lnDW!=Temp2.dw
lcRange='A'+TRANSFORM(lnCnt)
.hpagebreaks.ADD(.RANGE(lcRange))
lnDw=Temp2.dw
ENDIF
ENDFOR
ENDWITH
*!* o.displayalerts=.f.
*!* o.quit
RETURN 我试了下,太好了,但是看不太懂。最好注释一下。多谢了。[em14] 找张洪举的那本书看看,他提供了一个查看所有命令的文件 我把它放入我的程序中去后,死掉了,不知如何插入这块模块。请明示。多谢了。
filename=GETFILE("dbf") &&随便别一个数据库
IF EMPTY(filename)
RETURN
ENDIF
USE &filename
filename=SUBSTR(filename,RAT("\",filename,1)+1)
filename=LEFT(filename,RAT(".",filename,1)-1)
pp=CREATEOBJECT("excel.application")
pp.workbooks.ADD
pp.worksheets("sheet1").ACTIVATE &&这里就是增加一个工作表,你可以打开多个数据表,然后增加多个工作表
hx=FCOUNT() &&表的横向变量,即字段个数
*hx=3 &&&确定3个字段
sx=RECC() &&表的坚向变量,即记录长度
sx1=1
GO TOP
FOR hx1=1 TO hx &&这个循环打印字段名称
bl=FIELD(hx1)
pp.cells(3,hx1).VALUE=bl &&字段名称显示在第三行。
ENDFOR
pp.cells.SELECT &&选择所有单元格
pp.Selection.NumberFormatLocal = "@" &&将所有单元格设置成“文本”格式
DO WHILE sx1<sx+1 &&每条记录来一个循环,向excel中填充数据
FOR hx1=1 TO hx &&从第四条开始填充数据
bl=FIELD(hx1)
pp.cells(sx1+3,hx1).VALUE=&bl && &bl的意思就是把相应字段值赋值给单元格
ENDFOR
SKIP+1 &&dbf表的数据指针指向下一条记录
sx1=sx1+1
ENDDO
*以下的一块内容引用了您的有关内容:
WITH pp.workbooks(1).worksheets(1)
GO TOP
lnDw=lqk.lqyxdm
FOR lnCnt=1 TO RECCOUNT('lqk')
GO lnCnt
.RANGE('A'+TRANSFORM(lnCnt)).VALUE=lqk.bmxh
.RANGE('B'+TRANSFORM(lnCnt)).VALUE=lqk.xm
.RANGE('C'+TRANSFORM(lnCnt)).VALUE=lqk.yxmc
.RANGE('D'+TRANSFORM(lnCnt)).VALUE=lqk.lqyxdm
IF lnDW!=lqk.lqyxdm
lcRange='A'+TRANSFORM(lnCnt)
.hpagebreaks.ADD(.RANGE(lcRange))
lnDw=lqk.lqyxdm
ENDIF
ENDFOR
ENDWITH
*!* o.displayalerts=.f.
*!* o.quit
RETURN
pp.cells(2,1)="日期:"+ALLT(DTOC(DATE()))
pp.cells.SELECT &&选择所有单元格
pp.SELECTION.FONT.SIZE=9 &&字体设置为9号字体
pp.cells(1,3).VALUE=(filename+"文件导出表") &&设置表头标题
pp.cells(1,3).FONT.NAME="黑体"
pp.cells(1,3).FONT.SIZE=24
pp.CAPTION="EXCEL表单名"
pp.COLUMNS(1).COLUMNWIDTH=12
pp.COLUMNS("B:U").SELECT
pp.SELECTION.COLUMNWIDTH=7
pp.cells(1,1).SELECT
pp.APPLICATION.VISIBLE=.T.
*set talk on 是张洪举的那本书?他的书太多了。
请教:Tiger5392
“.RANGE('A'+TRANSFORM(lnCnt)).VALUE=Temp2.dwlcRange='A'+TRANSFORM(lnCnt)
.hpagebreaks.ADD(.RANGE(lcRange))”
请教:
.range('A'+TRANSFORM(lncnt))此句是什么意思?
lcRange='A'+TRANSFORM(lnCnt)此句是什么意思?
.hpagebreaks.ADD(.RANGE(lcRange))此句是什么意思?
我不懂excel vba语言,请指教,多谢了。 在你的电脑里找 vbaxl9.chm 这个文件,有详细的解释
页:
[1]
