WritableSheet 根据单元格内容计算并设置行高 java excel根据内容行高 |
您所在的位置:网站首页 › excel行高适应内容 › WritableSheet 根据单元格内容计算并设置行高 java excel根据内容行高 |
EXCEL的行高度和列宽度单位是不一样的。 1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip): 1英寸=72磅=25.4毫米=1440缇 1磅=0.353毫米=20缇 POI中的行高=Excel的行高度*20 Excel的行高度=POI中的行高/20 这里顺便把像素的换行方法说一下: DPI = 1英寸内可显示的像素点个数。通常电脑屏幕是96DPI, IPhone4s的屏幕是326DPI, 普通激光黑白打印机是400DPI 要计算POI行高或者Excel的行高,就先把它行转换到英寸,再乘小DPI就可以得到像素 像素 = (磅/72)*DPI 像素= (Excel的行高度/72)*DPI 像素= (POI中的行高/20/72)*DPI Excel的行高度=像素/DPI*72 POI中的行高=像素/DPI*72*20 例如在电脑屏幕上, Excel默认行高度为13.5, (13.5/72)*96=18像素,而Excel中也确实显示的就是18像素。 2,EXCEL列宽度的单位是字符个数 (2014-08-18备注:关于Excel的宽度计算的详细介绍在这篇文章Excel的宽度怎么算的?) 在excel2003以上的版本中,可以建立一个空白的xls文档并将第一列宽度拉到10。然后在A1单元格中输入1234567890可以看到单元格正好可以容纳这十个字符。一个字符的宽度是通过测量1234567890这十个字符在默认字体(通常是宋体11号字,视版本可能不同)下的平均宽度得到的。 只要记住一个字符的宽度是8像素 (2013-10-29备注:一个字符的宽度取决于Excel文件中的第一个字体大小,并不一定就是8像素)就可以了。 一个单元格实际的像素宽度还要在 (字符个数 * 默认字符的宽度)的基础上前后各加2个像素的空白边。另外字符之间会叠加一个像素,在计算时也要减去: (2013-10-29备注:一个字符的边距不一定只是2像素,和字体有关系) 像素 = 2个像素空白 + (字符个数 * 默认字符的宽度) + 2个像素空白 - (字符个数 - 1) 整理一下,公式变成: 像素 = 5 + (字符个数 * (默认字符的宽度 - 1)) 代入默认字符宽度8: 像素 = 5 + (字符个数 * 7) POI中的字符宽度算法是: double 宽度 = (字符个数 * (字符宽度 - 1) + 5) / (字符宽度 - 1) * 256; 然后再四舍五入成整数。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |