导出水晶报表到WORD,却导出不完整。

软银云商包装 2004-11-13 03:45:18
好歹也在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 时,导出的报表就少了很动内容了。
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
haonanernet 2004-11-14
  • 打赏
  • 举报
回复
1.先创建一个DataTable,作为数据来源,也可以另将其它的数据源。

Private Function CreaTable() As DataTable

Dim dt As New DataTable()

dt.Columns.Add("列1", GetType(String))

dt.Columns.Add("列2", GetType(Integer))

dt.Columns.Add("列3", GetType(String))

dt.Columns.Add("列4", GetType(String))

Dim row, row1 As DataRow

row = dt.NewRow()

row!列1 = "行1"

row!列2 = 1

row!列3 = "d"

row!列4 = "a"

dt.Rows.Add(row)

row1 = dt.NewRow()

row1!列1 = "行2"

row1!列2 = 12

row1!列3 = "b"

row1!列4 = "c"

dt.Rows.Add(row1)

Return dt

End Function

3.将表中的内容导出到WORD

Dim wordApp As New Word.Application()

Dim myDoc As Word.Document

Dim oTable As Word.Table



Dim rowIndex, colIndex As Integer

rowIndex = 1

colIndex = 0



wordApp.Documents.Add()

myDoc = wordApp.ActiveDocument



Dim Table As New DataTable()

Table = CreaTable()



oTable = myDoc.Tables.Add(Range:=myDoc.Range(Start:=0, End:=0), NumRows:=Table.Rows.Count + 1, NumColumns:=Table.Columns.Count)



'将所得到的表的列名,赋值给单元格

Dim Col As DataColumn

Dim Row As DataRow

For Each Col In Table.Columns

colIndex = colIndex + 1

oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)

Next



'得到的表所有行,赋值给单元格

For Each Row In Table.Rows

rowIndex = rowIndex + 1

colIndex = 0

For Each Col In Table.Columns

colIndex = colIndex + 1

oTable.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))

Next

Next



oTable.Borders.InsideLineStyle = 1

oTable.Borders.OutsideLineStyle = 1



wordApp.Visible = True

软银云商包装 2004-11-13
  • 打赏
  • 举报
回复
刚才又测试了一下,就算我不用GetRpt 函数,就导出一个空报表,都会出现有的TEXT显示不完整的问题,真没想到,水晶报表导出竟然这样。

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧