标题:EXECL中,列宽,行高,与像素的比值?
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
已结贴  问题点数:20 回复次数:8 
EXECL中,列宽,行高,与像素的比值?
列宽
宽度   像素 比值
11.88    100    0.1188
18.13    150    0.120866667
24.38    200    0.1219
30.63    250    0.12252
行高

75    100    0.75
112.5    150    0.75
150    200    0.75
187.5    250    0.75
从上面看到,行高的比值是固定的,怎么列宽的比值不是固定的
我插如果图片后,想保证,宽度或者高度不超过表格,但又想最大化的现实,怎么实现

oExcel=Createobject("Excel.application")
oExcel.Visible=.T.
oExcel.Workbooks.Add
oExcel.Worksheets("sheet1").Activate

oExcel.Columns("A:A").Select
oExcel.Selection.ColumnWidth = 22
oExcel.Rows("1:1").Select
oExcel.Selection.RowHeight = 100
   
oExcel.Range("A1").Select

oExcel.ActiveSheet.Pictures.Insert("F:\工程管理\frm_img\product\a1000000001.jpg").Select

oExcel.Selection.ShapeRange.Left  = 1
oExcel.Selection.ShapeRange.Top = 1

oExcel.Selection.ShapeRange.Height = 98


[此贴子已经被作者于2023-2-26 20:29编辑过]

搜索更多相关主题的帖子: Selection 列宽 Select 像素 固定 
2023-02-26 12:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:7 
看下EXCEL帮助文件中的下列方法、属性
ShapeRange.ScaleHeight 方法
ShapeRange.ScaleWidth 方法
ShapeRange.LockAspectRatio 属性
图片的高度与宽度比例要设置相等,图片才不会变形

坚守VFP最后的阵地
2023-02-26 12:51
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
我刚才测试了,可以设置图片的高度,宽度
我的意思是,假设 原始图片是 800 * 600的,4:3的比例,是可以在表格中设置,对应的列宽,行高,但如果图片不是4:3,而是9:6等等得,就无法简单设置了
2023-02-26 13:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
用比例设置比用具体数字设置更方便,没必要纠结宽度、高度与像素的比值问题
要使图片不失真,比例设置是最合适的

坚守VFP最后的阵地
2023-02-26 14:11
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:7 
Excel 的行高和列宽单位完全不搭界,RowHeight单位是磅,比较简单;ColumnWidth就特别了,单位是工作簿默认字体的字符数
所以你的 a1, b1 应该用 Cell(row,col).Height, Cell(row,col).Width 来测量,不能用 RowHeight,ColumnWidth
注意:cell.Height / Width 是只读的, RowHeight / ColumnWidth 可读可写的
2023-02-26 14:56
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
参见微软的文档:https://learn.
2023-02-26 14:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
在“视图”--“页面布局”行列都是用cm表示(有标尺)
2023-02-26 18:12
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
大概这样
程序代码:
oExcel = NewObject('Excel.Application')
oBook = oExcel.WorkBooks.Add()
oSheet = oBook.Sheets(1)
*-- 假设图片要放在第二行第三列中(行高100,列宽22)
oRng = m.oSheet.Cells(2,3)
oRng.Rows.RowHeight = 100
oRng.Columns.ColumnWidth = 22

oSheet.Shapes.AddPicture(GetPict('','要插入的图片'), .f., .t., oRng.Left, oRng.Top, -1, -1)
With oSheet.Shapes(oSheet.Shapes.Count)
    .LockAspectRatio = .t.
    *-- 根据图片和单元格的纵横比, 自动确定以单元格的宽还是高为准
    If .Width / .Height > oRng.Width / oRng.Height
        .Width = oRng.Width
        .Top = oRng.Top + (oRng.Height - .Height) / 2    && 以宽为准, 则垂直居中
    Else
        .Height = oRng.Height
        .Left = oRng.Left + (oRng.Width - .Width) / 2    && 以高为准, 则水平居中
    EndIf
EndWith

cFile = Putfile('保存为:', 'test')
If !Empty(cFile)
    cFile = Rtrim(cFile, '.')
    oBook.SaveAs(cFile, oExcel.DefaultSaveFormat)
EndIf
oBook.Close(.f.)
oExcel.Quit()



[此贴子已经被作者于2023-2-26 19:55编辑过]

2023-02-26 19:54
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
那个单位叫:堤。
2023-02-26 21:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511393-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.087669 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved