以文本方式查看主题 - 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 --
|
||||
-- 作者:有点甜 -- 发布时间: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编辑过]
|