Foxtable(狐表)用户栏目专家坐堂 → [求助]打印列宽的设置


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

主题:[求助]打印列宽的设置

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]打印列宽的设置  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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


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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/14 22:18:00 [显示全部帖子]

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


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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/14 23:40:00 [显示全部帖子]


ws.range("D:D").ColumnWidth = 6
Output.Show(ws.range("D:D").Columns.width)------这个结果显示是39.75,是不是很怪异?

设置了宽度,实际再读出来,数值=6*设置的值+3.75,百思不得其解。
[此贴子已经被作者于2018/3/14 23:41:14编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/14 23:45:00 [显示全部帖子]

试了好久才发现这个问题,帮助文件要修正一下了。要不然还真是用起来痛苦不已

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/3/15 11:21:00 [显示全部帖子]

另外,通过代码设置的页眉,无法顶着页边距输出,不好看,如何改进?
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("C:\Users\Toone\Documents\Foxtable项目\列宽设置\reports\CS.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.PageSetup
    '设置打印区域
    '.PrintArea = "A1:H10"   '打印工作表的指定区域
    .PrintArea = Ws.UsedRange.Address   '打印工作表的使用区域
    .PrintTitleColumns = Ws.Columns("A:C").Address   '打印列标题(在每一页的左边重复出现)
    .PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)
    '设置页面
    .PaperSize = MSExcel.XlPaperSize.xlPaperA4   '纸张大小
    .LeftMargin = 60 '页面左边距
    .RightMargin = 60'页面右边距
    .TopMargin = 50  '页面顶部边距
    .BottomMargin = 50   '页面底部边距
    .HeaderMargin = 40   '页面顶端到页眉的距离
    .FooterMargin = 40   '页脚到页面底端的距离
    '.CenterHorizontally = False   '页面水平居中
    '.CenterVertically = True '页面垂直居中
    '设置页眉
    .LeftHeader = "打印日期: &D" '左页眉,&D表示日期
    .CenterHeader = "&""隶书,常规""&20 数据分析表"   '中页眉,并将字体设置为隶书和20号字大小
    .RightHeader = "打印者: 张三" ' & App.UserName '右页眉
    '设置页脚
    .LeftFooter = "文件: &F  &A" '左页脚,&F表示文件名,&A表示工作表名
    .CenterFooter = ""   '中页脚为空
    .RightFooter = "第 &P 页  共 &N 页"  '右页脚
    '打印模式
    '.Orientation = MSExcel.xlPageOrientation.xlPortrait  '纵向打印
    .Orientation = MSExcel.xlPageOrientation.xlLandscape '横向打印
    '.PrintHeadings = True'打印行号和列标
    '.PrintGridlines = True   '打印网格线
    '缩放打印
    '.Zoom = False'以下设置将缩印在一页内
    '.FitToPagesWide = 1  '按照1页的宽度打印
    '.FitToPagesTall = 1  '按照1页的高度打印
End With
App.Visible = True
Ws.PrintPreview
App.Quit
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:cs.xls

图片点击可在新窗口打开查看此主题相关图片如下:页眉页脚设置问题.png
图片点击可在新窗口打开查看



 回到顶部