Foxtable(狐表)用户栏目专家坐堂 → excel行高与字体大小的对应关系


  共有7896人关注过本帖树形打印复制链接

主题:excel行高与字体大小的对应关系

帅哥哟,离线,有人找我吗?
东坡一剑
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
excel行高与字体大小的对应关系  发帖心情 Post By:2013/9/22 23:17:00 [只看该作者]

我设计了一个利用Excel报表打印标签的项目,在实际使用过程中发现一个奇怪的现象:明明我在Excel中设置的行高是9,可是用output.show方法在foxtable中显示的行高却是12,excel与foxtable显示Excel行高的对应关系如下:

          excel          foxtable

          7               9

          8               10

          9               12

         10              13

         11              14

 

列宽就更离谱了,明明Excel设置的是10,foxtable却显示为17;

但是,字号又是一致的,Excel设置为8,foxtable也显示为8 ;

 

有没有哪位狐友精通这方面的知识,指教一二!

 

以书宋为列,能不能给出行高所能容纳的最大字体与行高的函数关系? 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/22 23:22:00 [只看该作者]

 楼主你直接说你遇到什么问题吧?是生成报表的时候和原先的不一样?上个例子。

 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/9/22 23:36:00 [只看该作者]

我的问题是已经根据内容的行数动态调整了报表的行高,从而使得报表始终保持恒定的高度,我想进一步根据已经调整好的行高来动态调整字体的大小,于是需要找到行高与所能容纳的最大(或最合适)字体大小之间的表达式关系,比如 "字体大小 = 行高 - 2.5”等等。另外,我确实想知道excel中设置的行高和列宽为什么和foxtable中用output.show方法获得的值不一样。

因为我的项目太大,又用的外部表,上列子不太方便,而这个问题似乎有没有例子都无所谓,所以劳驾了!

[此贴子已经被作者于2013-9-23 6:48:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/9/23 8:13:00 [只看该作者]

Dim fl As String = ProjectPath & "Reports\标签.XLS"
Dim Book As New XLS.Book(fl)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
'output.Show("内容" & sheet(3,0).Value)
'output.Show("行高" & sheet.rows(3).Height)
'output.Show("列宽" & sheet.Cols(1).Width)
'output.Show("字号" & sheet(3,1).Style.Font.Size)


For i As Integer = 0 To sheet.Rows.count - 1
    Dim fnt As New Font("黑体",12,FontStyle.Underline)
    sheet(i,0).Style.Font = fnt
    output.Show(sheet(i,0).Style.Font.Size)
Next

 

上面这段代码,注释掉的部分可以正常运行并显示正确的结果,红字部分会报错:未将对象引用设置到对象的实例

 

不知原因何在?有没有办法实现我想要的功能?


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/23 8:50:00 [只看该作者]

上个例子看看.

 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/9/23 8:54:00 [只看该作者]

显示不一样问题我查了下,应该是foxtable以像素为单位,但excel以磅(或点)为行高的单位,以字宽为列宽的单位。我将两者的数值换算了一下,9/12时刚好为标准值3/4,其它情况下都有偏差,估计是四舍五入造成的。不知我的理解是否正确?

 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/9/23 9:15:00 [只看该作者]

例子如下,请帮忙,先谢了!
 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel例子.zip


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/23 9:26:00 [只看该作者]

循环部分错误是因为你代码错误,不可以这么赋值的.

For i As Integer = 0 To sheet.Rows.count - 1
    Dim fnt As New Font("黑体",12,FontStyle.Underline)
    Dim Style As XLS.Style = Book.NewStyle() '定义新样式
    Style.Font = fnt
    For c As Integer = 0 To sheet.Cols.count - 1
        sheet(i,c).Style=Style
        output.Show(sheet(i,c).Style.Font.Size)
    Next
Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel例子.foxdb



 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/9/23 9:37:00 [只看该作者]

原来是基本概念没吃透。

谢谢专家!


 回到顶部