找回密码
 立即注册

QQ登录

只需一步,快速开始

adolfgzb
初级会员   /  发表于:2019-7-12 14:34  /   查看:3472  /  回复:7
1金币
本帖最后由 adolfgzb 于 2019-7-16 09:25 编辑

  1. Public Class PercentCellTypeEx
  2.     Inherits FarPoint.Win.Spread.CellType.PercentCellType

  3.     Public Sub New()
  4.         'default
  5.         ShowSeparator = False
  6.         DecimalPlaces = 2
  7.         FixedPoint = True
  8.     End Sub

  9.     Public Sub New(nilstr As String)
  10.         Me.New()
  11.         NullDisplay = nilstr
  12.     End Sub

  13.     Public Sub New(nilstr As String, decimalPlaces As Integer)
  14.         Me.New(nilstr)
  15.         Me.DecimalPlaces = decimalPlaces
  16.     End Sub

  17.     Public Overrides Function Format(ByVal obj As Object) As String

  18.         If DBNull.Value.Equals(obj) Then
  19.             Return NullDisplay
  20.         End If

  21.         If Double.TryParse(CType(obj, String), 0.0) Then
  22.             Return MyBase.Format(CDbl(obj) / 100)
  23.         Else
  24.             Return MyBase.Format(obj)
  25.         End If
  26.     End Function

  27. End Class
复制代码

程序是在后台动态设置控件类型以及绑定数据。画面因为显示问题,PercentCellTypeEx中有一个除以100的操作。
现在碰到的问题是导出Excel时数据又都乘以100了。有什么办法可以解决吗?



7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-7-12 15:24:53
沙发
重写Format只是影响展示的Text,并不会影响单元格实际的Value,导出Excel的时候并不是是都乘以100了,而是从来都没变过。

不是特别清楚您数据的来源,看样子是string,可以直接在设置值的时候就转成nubmer/100设置。
回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2019-7-12 16:08:52
板凳
dexteryao 发表于 2019-7-12 15:24
重写Format只是影响展示的Text,并不会影响单元格实际的Value,导出Excel的时候并不是是都乘以100了,而是 ...

是的,Format只是修改显示效果。
数据赋值时是Decimal型的,赋值时数据源那里修改,改的地方就比较多了,而且也要调查是否对整个工程有影响。
现在客户要求是追加两个功能:导出Excle和CSV,这样修改工程量太大了,有别的方法能解决吗?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-7-12 19:08:02
地板
您PercentCellTypeEx是在什么时机设置的,一中设置PercentCellTypeEx的时候顺便把单元格值改了。
另一种,遍历所有单元格,是PercentCellTypeEx类型的话,把值改了。
回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2019-7-15 08:36:48
5#
dexteryao 发表于 2019-7-12 19:08
您PercentCellTypeEx是在什么时机设置的,一中设置PercentCellTypeEx的时候顺便把单元格值改了。
另一种, ...

是绑定数据的时候设置的单元格属性,这时候修改值要所有的画面都修改一遍。
那先考虑导出Excle的时候遍历PercentCellTypeEx,然后修改,
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-7-15 10:18:44
6#
adolfgzb 发表于 2019-7-15 08:36
是绑定数据的时候设置的单元格属性,这时候修改值要所有的画面都修改一遍。
那先考虑导出Excle的时候遍 ...

通过  fpSpread1.ActiveSheet.NonEmptyColumnCount和

            fpSpread1.ActiveSheet.NonEmptyRowCount
可以获取非空单元格范围。
这个数据遍历不会慢
回复 使用道具 举报
adolfgzb
初级会员   /  发表于:2019-7-15 16:07:14
7#
dexteryao 发表于 2019-7-15 10:18
通过  fpSpread1.ActiveSheet.NonEmptyColumnCount和

            fpSpread1.ActiveSheet.NonEmptyRo ...

好的,谢谢。目前就这么处理了,以后有问题再问。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-7-16 08:52:59
8#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部