如何将 visual foxpro 6 报告转换为 word
How to convert visual foxpro 6 report to word
我使用了以下代码来显示报告。
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 除了 image.
COPY TO "c:\documents and settings\administrator\desktop\a.xls" TYPE XLS
如果是图片,它只显示路径名。现在我需要知道如何在word中转换这个报告,这样我就可以在word报告中得到图像。
没有本地方法可以做到这一点。我会调查 FoxyPreviewer 并用它来报告给 Word 可以打开的 RTF。
或者反过来,在 Word 中使用邮件合并。
除了 FoxyPreviewer 之外,您还可以使用 OLE Office 自动化以编程方式构建报表。网上有很多例子,甚至还有一本书,Microsoft Office Automation,作者是 Tamar E. Granor 和 Della Martin。
我在自动化方面做的不多,只够让它基本上验证它是否有效,并发现它对于我尝试做的事情来说非常慢。
您似乎正在创建一个简单的图片列表。最简单的方法之一是使用自动化。即:
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
但是,如果您有很多行,以这种方式将数据发送到 word 会影响性能。您可以将其用于小数据,例如员工 table 左右。对于更大的数据,您可以简单地创建一个 HTML 文档,而不是使用自动化,Word 将打开一个 HTML 文档。
我使用了以下代码来显示报告。
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 除了 image.
COPY TO "c:\documents and settings\administrator\desktop\a.xls" TYPE XLS
如果是图片,它只显示路径名。现在我需要知道如何在word中转换这个报告,这样我就可以在word报告中得到图像。
没有本地方法可以做到这一点。我会调查 FoxyPreviewer 并用它来报告给 Word 可以打开的 RTF。
或者反过来,在 Word 中使用邮件合并。
除了 FoxyPreviewer 之外,您还可以使用 OLE Office 自动化以编程方式构建报表。网上有很多例子,甚至还有一本书,Microsoft Office Automation,作者是 Tamar E. Granor 和 Della Martin。
我在自动化方面做的不多,只够让它基本上验证它是否有效,并发现它对于我尝试做的事情来说非常慢。
您似乎正在创建一个简单的图片列表。最简单的方法之一是使用自动化。即:
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
但是,如果您有很多行,以这种方式将数据发送到 word 会影响性能。您可以将其用于小数据,例如员工 table 左右。对于更大的数据,您可以简单地创建一个 HTML 文档,而不是使用自动化,Word 将打开一个 HTML 文档。