导出水晶报表到WORD,却导出不完整。
好歹也在CSDN上混了几年,都很少提过问(觉得有伤面子),现在碰上这个问题居然找不到解决方法。真郁闷。
代码如下:
Dim rpt As New Rpt_TS_Djb()
Me.GetRpt(rpt) ‘GetRpt 函数对表格的内容进行填充。
If File.Exists(StrFile) Then File.Delete(StrFile)
Dim ops As New ExportOptions()
Dim diskops As New DiskFileDestinationOptions()
ops = rpt.ExportOptions
ops.ExportFormatType = ExportFormatType.WordForWindows
ops.ExportDestinationType = ExportDestinationType.DiskFile
diskops.DiskFileName = “C:\bb.doc"
ops.DestinationOptions = diskops
rpt.Export()
其中GetRpt 函数如下:
Private Function GetRpt(ByRef rpt As Rpt_TS_Djb) As Integer
Dim Ar() As Object, ar_dx() As Object, Ar_Sj() As Object, Ar_Dz() As Object, Ar_Context() As Object, Ar_Nd() As Object, i As Integer, Str As String
Globaltools.getarray("tsr,nd,wht1,tsfs,wh,zmr,tsqq,lxr,lxtel,lxaddr,dcqz,clyj,ldps,cljg,bz,opercode,operdate", "ts_main", "id=" & bh, Ar)
If Ar Is Nothing Then Exit Function
Globaltools.getarray_onecode("tsdx", "ts_dx", "cid=" & bh, ar_dx)
Globaltools.getarray_onecode("(cast(year(tsdate) as nvarchar(50)) +'年'+ cast( month(tsdate) as nvarchar(50)) +'月'+ cast( day(tsdate) as nvarchar(50)))+ '日'+ tstime + '时' ", "ts_dx", "cid=" & bh, Ar_Sj)
Globaltools.getarray_onecode("tsaddr", "ts_dx", "cid=" & bh, Ar_Dz)
Globaltools.getarray_onecode("tscontext", "ts_dx", "cid=" & bh, Ar_Context)
Globaltools.getarray_onecode("ndqk", "ts_dx", "cid=" & bh, Ar_Nd)
‘Globaltools 是一个类,其中的方法用来得到各种数据库中的字段值,大家可不用理它。
RptSet(rpt, "tjsdate", Ar(16).ToString)
RptSet(rpt, "tnd", Ar(1).ToString)
RptSet(rpt, "twh1", Ar(2).ToString)
RptSet(rpt, "twh", Ar(4).ToString)
RptSet(rpt, "ttsr", Ar(0).ToString)
RptSet(rpt, "tjlr", Ar(15).ToString)
RptSet(rpt, "tzmr", Ar(5).ToString)
RptSet(rpt, "ttsqq", Ar(6).ToString)
RptSet(rpt, "tlxr", Ar(7).ToString)
RptSet(rpt, "tlxtel", Ar(8).ToString)
RptSet(rpt, "tlxaddr", Ar(9).ToString)
RptSet(rpt, "tdcqz", Ar(10).ToString)
RptSet(rpt, "tclyj", Ar(11).ToString)
RptSet(rpt, "tldps", Ar(12).ToString)
RptSet(rpt, "tcljg", Ar(13).ToString)
RptSet(rpt, "tbz", Ar(14).ToString)
End Function
RptSet 函数如下:
Private Function RptSet(ByRef Rpt As Rpt_TS_Djb, ByVal Text As String, ByVal Values As String) As Integer
Try
Dim t1 As TextObject
t1 = CType(Rpt.ReportDefinition.ReportObjects(Text), TextObject)
t1.Text = Values
Catch ex As Exception
MsgBox(Text)
End Try
End Function
问题就在GetRpt 函数上,如果我用空报表导出,没问题(导出很完整)。可我一旦用GetRpt 填充报表中的Text 时,导出的报表就少了很动内容了。
代码如下:
Dim rpt As New Rpt_TS_Djb()
Me.GetRpt(rpt) ‘GetRpt 函数对表格的内容进行填充。
If File.Exists(StrFile) Then File.Delete(StrFile)
Dim ops As New ExportOptions()
Dim diskops As New DiskFileDestinationOptions()
ops = rpt.ExportOptions
ops.ExportFormatType = ExportFormatType.WordForWindows
ops.ExportDestinationType = ExportDestinationType.DiskFile
diskops.DiskFileName = “C:\bb.doc"
ops.DestinationOptions = diskops
rpt.Export()
其中GetRpt 函数如下:
Private Function GetRpt(ByRef rpt As Rpt_TS_Djb) As Integer
Dim Ar() As Object, ar_dx() As Object, Ar_Sj() As Object, Ar_Dz() As Object, Ar_Context() As Object, Ar_Nd() As Object, i As Integer, Str As String
Globaltools.getarray("tsr,nd,wht1,tsfs,wh,zmr,tsqq,lxr,lxtel,lxaddr,dcqz,clyj,ldps,cljg,bz,opercode,operdate", "ts_main", "id=" & bh, Ar)
If Ar Is Nothing Then Exit Function
Globaltools.getarray_onecode("tsdx", "ts_dx", "cid=" & bh, ar_dx)
Globaltools.getarray_onecode("(cast(year(tsdate) as nvarchar(50)) +'年'+ cast( month(tsdate) as nvarchar(50)) +'月'+ cast( day(tsdate) as nvarchar(50)))+ '日'+ tstime + '时' ", "ts_dx", "cid=" & bh, Ar_Sj)
Globaltools.getarray_onecode("tsaddr", "ts_dx", "cid=" & bh, Ar_Dz)
Globaltools.getarray_onecode("tscontext", "ts_dx", "cid=" & bh, Ar_Context)
Globaltools.getarray_onecode("ndqk", "ts_dx", "cid=" & bh, Ar_Nd)
‘Globaltools 是一个类,其中的方法用来得到各种数据库中的字段值,大家可不用理它。
RptSet(rpt, "tjsdate", Ar(16).ToString)
RptSet(rpt, "tnd", Ar(1).ToString)
RptSet(rpt, "twh1", Ar(2).ToString)
RptSet(rpt, "twh", Ar(4).ToString)
RptSet(rpt, "ttsr", Ar(0).ToString)
RptSet(rpt, "tjlr", Ar(15).ToString)
RptSet(rpt, "tzmr", Ar(5).ToString)
RptSet(rpt, "ttsqq", Ar(6).ToString)
RptSet(rpt, "tlxr", Ar(7).ToString)
RptSet(rpt, "tlxtel", Ar(8).ToString)
RptSet(rpt, "tlxaddr", Ar(9).ToString)
RptSet(rpt, "tdcqz", Ar(10).ToString)
RptSet(rpt, "tclyj", Ar(11).ToString)
RptSet(rpt, "tldps", Ar(12).ToString)
RptSet(rpt, "tcljg", Ar(13).ToString)
RptSet(rpt, "tbz", Ar(14).ToString)
End Function
RptSet 函数如下:
Private Function RptSet(ByRef Rpt As Rpt_TS_Djb, ByVal Text As String, ByVal Values As String) As Integer
Try
Dim t1 As TextObject
t1 = CType(Rpt.ReportDefinition.ReportObjects(Text), TextObject)
t1.Text = Values
Catch ex As Exception
MsgBox(Text)
End Try
End Function
问题就在GetRpt 函数上,如果我用空报表导出,没问题(导出很完整)。可我一旦用GetRpt 填充报表中的Text 时,导出的报表就少了很动内容了。
...全文
相关推荐
水晶报表excel等格式导出
**Word (.doc, .docx)** - Word文档是文本编辑和排版的强大工具,导出到Word可以方便地对报表进行编辑和二次加工。4.
水晶报表2008.DOTNET组件.CrystalDecisions
它包括必要的库文件和组件,确保用户可以在不安装完整版本的水晶报表的情况下查看报表。3.
水晶报表组件
**导出和打印**:水晶报表支持多种导出格式,如PDF、Excel、Word等,以及直接打印功能。6. **交互性**:报表可以设置交互元素,如参数、超链接和下钻功能,使用户能够探索和分析数据。7.
Asp.Net中使用水晶报表
**多格式导出**:支持将报表导出为PDF、Word、Excel、HTML、RTF等多种格式,满足不同场景下的需求。
水晶报表插件(CRRedist2008_x64.msi,CRRedist2008_x86.msi)
**发布与分发**:报表可以导出为多种格式,如PDF、Excel、Word、HTML等,便于分享和打印。此外,还可以通过电子邮件、Web服务器或自定义应用程序进行自动分发。8.


