找回密码
 立即注册

QQ登录

只需一步,快速开始

sakeryu

初级会员

34

主题

122

帖子

322

积分

初级会员

积分
322

活字格认证

sakeryu
初级会员   /  发表于:2013-2-22 09:41  /   查看:6369  /  回复:5
我们用的是spread 6,好像默认的报表设置是,如果数字如果大于列宽了默认给隐藏了,比如输入了1234567,如果列很窄,就只显示4567,根本不知道原来前面还有123。能不能像excel那样用###号显示,这样一看就知道哪个单元格数字比较大,需要拉宽列宽。。
如果可以,需要使用什么参数?谢谢

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-22 14:54:00
沙发
回复 1楼sakeryu的帖子

一个很实际的需求,请参考以下代码:
  1.     private void Form2_Load(object sender, EventArgs e)
  2.     {
  3.         fpSpread1.ActiveSheet.DefaultStyle.CellType = new CCellType();
  4.     }

  5.     public class CCellType : FarPoint.Win.Spread.CellType.TextCellType
  6.     {
  7.         public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  8.         {
  9.             // 判断单元格内容是否为空,如果不为空就判断单元格内容是否超过了单元格的宽带
  10.             if (value != null && g.MeasureString(value.ToString(),appearance.Font).Width > r.Width)
  11.             {
  12.                 // 计算应该填充的 # 的数量
  13.                 StringBuilder sb = new StringBuilder("");
  14.                 while (g.MeasureString(sb.ToString(),appearance.Font).Width < r.Width)
  15.                 {
  16.                     sb.Append("#");
  17.                 }
  18.                 value = sb.ToString();
  19.             }

  20.             base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  21.         }
  22.     }
复制代码
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2013-2-22 15:27:00
板凳
噢。意思是控件单元格没有这种现成的属性可以选择,必须通过代码实现吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-2-22 15:55:00
地板
没有直接提供类似的属性。
回复 使用道具 举报
别慌我有细节
注册会员   /  发表于:2022-8-12 17:18:18
5#
ZenosZeng 发表于 2013-2-22 15:55
没有直接提供类似的属性。

请问现在v15,如何让数值超出列宽不显示####,换行显示类似wordwrap=true的属性设置
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-12 17:36:57
6#
  1. fpSpread1.AsWorkbook().ActiveSheet.ActiveCell.Style.WrapText = true;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部