以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- excel行高与字体大小的对应关系 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=40539) |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/22 23:17:00 -- excel行高与字体大小的对应关系 我设计了一个利用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 ;
有没有哪位狐友精通这方面的知识,指教一二!
以书宋为列,能不能给出行高所能容纳的最大字体与行高的函数关系?
|
||||
-- 作者:有点甜 -- 发布时间:2013/9/22 23:22:00 -- 楼主你直接说你遇到什么问题吧?是生成报表的时候和原先的不一样?上个例子。 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/22 23:36:00 -- 我的问题是已经根据内容的行数动态调整了报表的行高,从而使得报表始终保持恒定的高度,我想进一步根据已经调整好的行高来动态调整字体的大小,于是需要找到行高与所能容纳的最大(或最合适)字体大小之间的表达式关系,比如 "字体大小 = 行高 - 2.5”等等。另外,我确实想知道excel中设置的行高和列宽为什么和foxtable中用output.show方法获得的值不一样。 因为我的项目太大,又用的外部表,上列子不太方便,而这个问题似乎有没有例子都无所谓,所以劳驾了! [此贴子已经被作者于2013-9-23 6:48:02编辑过]
|
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/23 8:13:00 -- Dim fl As String = ProjectPath & "Reports\\标签.XLS"
上面这段代码,注释掉的部分可以正常运行并显示正确的结果,红字部分会报错:未将对象引用设置到对象的实例
不知原因何在?有没有办法实现我想要的功能? |
||||
-- 作者:Bin -- 发布时间:2013/9/23 8:50:00 -- 上个例子看看. |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/23 8:54:00 -- 显示不一样问题我查了下,应该是foxtable以像素为单位,但excel以磅(或点)为行高的单位,以字宽为列宽的单位。我将两者的数值换算了一下,9/12时刚好为标准值3/4,其它情况下都有偏差,估计是四舍五入造成的。不知我的理解是否正确? |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/23 9:15:00 -- 例子如下,请帮忙,先谢了!
|
||||
-- 作者:Bin -- 发布时间: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 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/23 9:37:00 -- 原来是基本概念没吃透。 谢谢专家! |