请问~~~~如何在水晶报表导出为excel表时,显示边框线

mungbeans 2005-11-08 04:52:08
导出的时候,excel文件里除了字段和数据没有边线,这在中国式的表格里肯定不合适,请问各位大侠,水晶报表里有没有相应设计可以导出excel时,也显示相应边框线呢?谢过~~~~
...全文
302 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceblue2005gather 2005-11-16
  • 打赏
  • 举报
回复
Imports System.Runtime.InteropServices.Marshal
Imports Office
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 '以COM方式处理Excel
 Dim oExcel As New Excel.Application
 Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
 Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
 Dim oCells As Excel.Range
 Dim sFile As String, sTemplate As String
 '定义一个datatable
 Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable)

 sFile = Server.MapPath(Request.ApplicationPath) & "\MyExcel.xls"
 '定义模版文件
 sTemplate = Server.MapPath(Request.ApplicationPath) & "\MyTemplate.xls"
 oExcel.Visible = False
 oExcel.DisplayAlerts = False
 '定义一个新的工作簿
 oBooks = oExcel.Workbooks
 oBooks.Open(Server.MapPath(Request.ApplicationPath) & "\MyTemplate.xls") oBook = oBooks.Item(1)
 oSheets = oBook.Worksheets
 oSheet = CType(oSheets.Item(1), Excel.Worksheet)

 '命名该sheet
 oSheet.Name = "First Sheet"
 oCells = oSheet.Cells
 '调用dumpdata过程,将数据导入到Excel中去
 DumpData(dt, oCells)
 '保存
 oSheet.SaveAs(sFile)
 oBook.Close()

 '退出Excel,并且释放调用的COM资源
 oExcel.Quit()
 ReleaseComObject(oCells) : ReleaseComObject(oSheet)
 ReleaseComObject(oSheets) : ReleaseComObject(oBook)
 ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
 oExcel = Nothing : oBooks = Nothing : oBook = Nothing
 oSheets = Nothing : oSheet = Nothing : oCells = Nothing
 System.GC.Collect()
 Response.Redirect(sFile)
End Sub

'将DATATABLE的内容导出到Excel的单元格中去
Private Function DumpData(ByVal dt As DataTable, ByVal oCells As Excel.Range) As String
 Dim dr As DataRow, ary() As Object
 Dim iRow As Integer, iCol As Integer

 '输出列标题
 For iCol = 0 To dt.Columns.Count - 1
  oCells(2, iCol + 1) = dt.Columns(iCol).ToString
 Next

 '将数据导出到相应的单元格
 For iRow = 0 To dt.Rows.Count - 1
  dr = dt.Rows.Item(iRow)
  ary = dr.ItemArray
  For iCol = 0 To UBound(ary)
   oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
   Response.Write(ary(iCol).ToString & vbTab)
  Next
 Next
End Function
End Class
我用这种方法成功导出过,你要在你项目的根目录下建立一个excel的文件就好了,作为摸版,把你要的数据导入dataset的表中就好了,搂主可以试一下!!

iceblue2005gather 2005-11-11
  • 打赏
  • 举报
回复
还是直接导入EXCEL吧,这么一弄下来,也不方便,搞不好比直接导麻烦的多,还不一定能解决问题。
nnfzj 2005-11-10
  • 打赏
  • 举报
回复
水晶报表没有如此智能吧
mungbeans 2005-11-09
  • 打赏
  • 举报
回复
我正在试这种方法,真是很辛苦,因为字段特别多,又不容易对齐,一上午一张表都没有做好:(
swans 2005-11-09
  • 打赏
  • 举报
回复
正需要这方面的内容,关注。
xwdd129 2005-11-09
  • 打赏
  • 举报
回复
导出Excel是比较麻烦,目前最好的办法可能就是KevinYao(KevinYao) 所说的用字段边框线了!
KevinYao 2005-11-08
  • 打赏
  • 举报
回复
用域的border来模拟表格线,我以前很多报表都这么实现的,抛砖引玉,希望有更好的方法。

例如:
假设有3个域a,b,c 依次显示在一行中。
a域-〉Format Field -> Border -> line style,left和bottom的line style 为single。
b域的left和bottom的line style 为single。
c域的left,right和bottom的line style 为single。

注意,
1.detail中的field必须与header中的对应text object 对齐。
2.各个域的border line必须对齐。
3.b域的left line 必须压在a域的right line上

如果line没有对齐或者各个域不在同一高度,那么excel中会产生空行。



4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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