找回密码
 立即注册

QQ登录

只需一步,快速开始

LeeDongmei
金牌服务用户   /  发表于:2014-9-29 10:11  /   查看:13395  /  回复:22
我在Spread中设定的格式,在导出Excel和PDF时,都不同程度的发生问题。请帮忙调查原因。
代码和目标文件附上。
导出Excel时发生的问题:
1.标题栏内的格线都消失了。
2.明细栏内的格线,在打印预览时也消失了。
3.明细栏中定义的数据格式没有了(例如:定义数字类型时,有千分位及两位小数,导出后,千分位没有了,小数位也没有保持两位,我的例子中没有数据加载,可能的话,请添加一些数据测试。)
导出PDF时发生的问题:
1.列标题中合并单元格部分,在第二页开始,有多余的格线出现。
2.余白过小时,最后一列的格线设定不上。
(例子中,请将导出PDF代码中,比例改为0.75,右余白改为10,问题可再现。)

22 个回复

倒序浏览
LeeDongmei
金牌服务用户   /  发表于:2014-9-29 10:15:00
沙发
代码:
test.rar (1.82 MB, 下载次数: 145)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-9-29 12:19:00
板凳
LeeDongmei 你好,

你的问题已经收到,因为其中分为几个小问题,我们会尽快调查之后给你回复。
回复 使用道具 举报
LeeDongmei
金牌服务用户   /  发表于:2014-9-29 14:16:00
地板
谢谢!静候佳音。
回复 使用道具 举报
LeeDongmei
金牌服务用户   /  发表于:2014-9-29 14:31:00
5#
补充说明一下,我的环境是:
VS2008+SQL2008+Spread for ASP.net 4.0
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-9-29 15:08:00
6#
LeeDongmei,

导出Excel时发生的问题:
3.明细栏中定义的数据格式没有了(例如:定义数字类型时,有千分位及两位小数,导出后,千分位没有了,小数位也没有保持两位,我的例子中没有数据加载,可能的话,请添加一些数据测试。)

回答:我这边调查的结果是因为没有为该列设置CellType,比如设置【1月】列的CellType为Currency便可导出千分位,附件是我修改后的spread模板文件你可以测试。
在Page_Init事件中注释掉现在全部代码,并通过以下代码加载模板xml文件:
  1. FpSpread.Open(Server.MapPath("template1.xml"))
复制代码



template1.zip (5.49 KB, 下载次数: 124)
回复 使用道具 举报
LeeDongmei
金牌服务用户   /  发表于:2014-9-29 15:45:00
7#
谢谢版主的及时回复!
经过测试Currency的类型确实能导出千分位,但无法满足小数位的要求。
我的数据是从数据库取出的,单纯是做表,没有数据修正。
做表时要求表示成两位小数,例:
12345.2要表示成 12,345.20
12345   要表示成 12,345.00
定义成Currency后,小数位上补位的0都不见了。
另外,我原来这样定义celltype的:
        Dim ObjDoubleCell_2 As New FarPoint.Web.Spread.GeneralCellType()    '2位小数
        Dim NumForm2 As New System.Globalization.NumberFormatInfo
        NumForm2.NumberDecimalDigits = 2
        NumForm2.NumberDecimalSeparator = "."
        NumForm2.NumberGroupSeparator = ","
        ObjDoubleCell_2.NumberFormat = NumForm2

        Dim i As Integer
        For i = 4 To 18
            FpSpread.Sheets(0).Columns(i).CellType = ObjDoubleCell_2
            FpSpread.Sheets(0).Columns(i).HorizontalAlign = HorizontalAlign.Right
        Next
页面上显示正常,但导出Excel后,
12,345.20 变成 12345.2
12,345.00 变成 12345
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-9-29 16:16:00
8#
回复 7楼LeeDongmei的帖子

请再添加以下属性设置进行测试:
  1. ObjDoubleCell_2.FormatString = "c2"
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-9-29 17:28:00
9#
导出Excel时发生的问题:
1.标题栏内的格线都消失了。
2.明细栏内的格线,在打印预览时也消失了。

针对边线,目前Excel和PDF无法做到完全一致,如果以Excel位置,可以调整Border.Size为2px。
明细栏内的格线可以设置 Sheets[0].DefaultStyle.Boder.BoderSize = 2px.
回复 使用道具 举报
LeeDongmei
金牌服务用户   /  发表于:2014-9-30 08:32:00
10#
添加ObjDoubleCell_2.FormatString = "c2"
测试结果:
Spread中,数字前多出奇怪符号
C2_Spread.png (156.3 KB, 下载次数: 130)
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部