以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]打印列宽的设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115549)

--  作者:chnfo
--  发布时间:2018/3/8 22:38:00
--  [求助]打印列宽的设置
交叉统计表导出到EXCEL后,有固定的标题列(比如为A1:A2),动态列为各月的数量、单价、金额。

我想在打印页面上设置横向打印
每月打印5个月的数量、单价、金额。
然后这15列的列宽=math.floor((页面的宽度-标题列的宽度)/15),这样,页面看起来美观一些

标题列的宽度容易获取=ws.range("A1:A2").width
问题:怎么样获取页面的打印宽度?我是说默认的打印宽度
[此贴子已经被作者于2018/3/8 22:39:58编辑过]

--  作者:有点甜
--  发布时间:2018/3/8 22:58:00
--  

页面的宽度,设置不同的打印纸张,不同的打印边距,都会导致宽度、高度发生变化的,不是固定的。

 

具体打印属性,参考这里 http://www.foxtable.com/webhelp/scr/2121.htm

 


--  作者:chnfo
--  发布时间:2018/3/14 20:59:00
--  
页面设置的单位问题:
Dim f As String = ProjectPath & "Reports\\报表01.xls"
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(f)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Range("A:G")   \'可指定任意单元格或单元格区域
Rg.RowHeight = 40 \'行高40磅
Rg.ColumnWidth = 20   \'列宽20磅      
 \'---这里说是磅是不是有问题呀。我设置了以后,列宽确实是20,但实际量了一下,列宽差不多是4.34cm。正常情况下,20磅的宽度应当是20*0.35mm=0.7cm,这也差得太多了点儿,到底rg.ColumnWidth = 20是什么单位?
app.visible = true


--  作者:有点甜
--  发布时间:2018/3/14 21:06:00
--  

行高、列宽不是同一个单位

 

https://www.baidu.com/baidu?wd=excel+%E8%A1%8C%E9%AB%98+%E5%88%97%E5%AE%BD+%E5%8D%95%E4%BD%8D

 


--  作者:chnfo
--  发布时间:2018/3/14 21:10:00
--  
意思是列宽是指的一个单位,一个单位的宽度是2.2862毫米,那么设置Rg.ColumnWidth = 20,实际上设置的宽度就是20*2.2862=45.7mm?
那帮助里所说的设置20,是磅就错了哟。

不过我实际量了一下,设宽度20,实际宽度只有4.34cm左右,不是4.57cm

另外,所说的左右页边距 ,看了一下,好象设为60的话,确实就是指60磅,大约2.1cm,这个都要设晕了
[此贴子已经被作者于2018/3/14 21:35:35编辑过]

--  作者:有点甜
--  发布时间:2018/3/14 22:01:00
--  

测量的时候,你是打印出来测量的吗?如果在电脑上测量,你还要考虑像素、dpi的问题。

 

有可能有少量误差。excel的单位比较特殊。


--  作者:chnfo
--  发布时间:2018/3/14 22:17:00
--  
1、我是在EXCEL中画了一个方框,然后在“格式”中查看它的尺寸,上面的数值应当是比较准确的。
2、上传的文件,ABC三列的宽度分别是20,30,10,但通过自定义函数得到的是23.75、33.75、10.75
很奇怪,这个3.75是从哪里来的?

比如我设的A4纸横打,那么宽的总宽度是29.7cm
然后左右边距分别设为60(单位应当是磅),约4.2cm,那么页面区域=29.7-4.2=25.5cm
现在ABC三列分别占用了20、30、10的宽度,合计60的宽度,实际测量的结果是每个单位的宽度=0.217厘米,占用宽度=13厘米
余下来的宽度=25.5-13=12.5厘米
它的单位数=12.5/0.217 =57.6个单位
如果余下来的9列平分这些列宽,每列占用宽度=6.4,那t以就应当设置Rg.ColumnWidth = 6.4

--  作者:chnfo
--  发布时间:2018/3/14 22:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列宽设置.zip


--  作者:有点甜
--  发布时间:2018/3/14 22:37:00
--  

具体的单位,你画一个框,然后除以行高或者列宽,不就得到具体的值了?

 

比如 4.34 / 20 得到一个单位是多少。

 

你可以先把页边距都设置成0,然后测试看效果咯。


--  作者:chnfo
--  发布时间:2018/3/14 23:22:00
--  
试验结果:
Rg.ColumnWidth = math.Floor(( 25.5 - ws.range(标题列).Columns.width * 0.036 + ws.range(标题列).Columns.count * 3.75 * 0.036 ) / 0.217 / 平分余下列的列数 )
这样得到的结果才相对合理。
帮助里的Rg.ColumnWidth =20 ,说这个单位是磅,应当是有问题的。

如果设为20,那就表示一列都有20*0.217=4.34cm宽。
显然20磅不会有这么宽的
[此贴子已经被作者于2018/3/14 23:24:58编辑过]