如何将视觉foxpro 6报告转换为单词

时间:2016-02-08 05:37:07

标签: visual-foxpro foxpro

我使用以下代码来显示报告。

select mem_no,com_name,owner,owner_cate,iif(empty(photo),"c:\edrs\memphoto\void.JPG",iif(file(photo),photo,"c:\edrs\memphoto\void.JPG")) as photo from own1  into curs own

REPO FORM c:\edrs\reports\rptsearch.frx TO PRINT PREVIEW NOCONS

这里rptsearch.frx包含一些图片。以下代码将数据导出为ex​​cel,除了图像。

COPY TO "c:\documents and settings\administrator\desktop\a.xls" TYPE XLS

如果是图像,则仅显示路径名称。现在我需要知道如何在单词中转换此报告,以便我可以在单词报告中显示图像。

3 个答案:

答案 0 :(得分:0)

没有本地方法可以做到这一点。我会调查FoxyPreviewer并使用它来报告RTF,Word可以打开。

或者在Word中使用邮件合并进行相反的操作。

答案 1 :(得分:0)

除了FoxyPreviewer之外,您还可以使用OLE Office自动化以编程方式构建报表。网上有很多例子,甚至还有一本书,由Tamar E. Granor编写的一本书,Microsoft Office Automation。德拉马丁。

我没有做过很多自动化,只是基本上验证它是否有效,并发现它对我试图做的事情来说非常缓慢。

答案 2 :(得分:0)

看起来您正在创建一个包含图片的简单列表。最简单的方法之一是使用自动化。即:

Select mem_no,com_name,owner,owner_cate,;
    iif(Empty(photo) Or !File(photo),"c:\edrs\memphoto\void.JPG",photo) As photo ;
    from own1  ;
    into Curs crsData ;
    nofilter

#Define wdWord9TableBehavior 1
#Define wdAutoFitWindow 2
#Define wdStory 6
#Define wdCollapseEnd 0
#Define wdCellAlignVerticalCenter 1
#Define CR Chr(13)

Local Array laCaptions[5]
laCaptions[1] = 'Mem No'
laCaptions[2] = 'Com Name'
laCaptions[3] = 'Owner'
laCaptions[4] = 'Owner Cate'
laCaptions[5] = 'Photo'

Local nRows, nCols, ix
nRows = Reccount('crsData')+1
nCols = Fcount('crsData')+1

oWord = Createobject('Word.Application')
With m.oWord
    oDocument = .Documents.Add
    With m.oDocument.Tables.Add( m.oWord.Selection.Range, m.nRows, m.nCols)
        .BorderS.InsideLineStyle = .F.
        .BorderS.OutsideLineStyle = .F.

        For ix=1 To Alen(laCaptions)
            **** Add captions *****
            .Cell(1,m.ix).Range.InsertAfter( laCaptions[m.ix] )
        Endfor

        Select crsData
        Scan
            For ix=1 To Fcount()-1 && last one is photo path
                **** Add values to the different cells *****
                .Cell(Recno()+1,m.ix).Range.InsertAfter( Eval(Field(m.ix)) )
            Endfor
            lcPhoto = crsData.photo
            If File(m.lcPhoto) && Add photo if any
                oDocument.InlineShapes.AddPicture( m.lcPhoto, .T., .T.,;
                    .Cell(Recno()+1,Fcount()).Range)
            Endif
            .Rows(Recno()+1).Cells.VerticalAlignment = wdCellAlignVerticalCenter
        Endscan
    Endwith

    .Visible = .T.
Endwith

但是,如果您有很多行,以这种方式将数据发送到单词会受到性能的影响。您可以将此用于小型数据,例如员工表等。使用更大的数据,而不是使用自动化,您只需创建一个HTML文档,单词将打开一个HTML文档。