我使用以下代码来显示报告。
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包含一些图片。以下代码将数据导出为excel,除了图像。
COPY TO "c:\documents and settings\administrator\desktop\a.xls" TYPE XLS
如果是图像,则仅显示路径名称。现在我需要知道如何在单词中转换此报告,以便我可以在单词报告中显示图像。
答案 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文档。