Excel的宽度怎么算的?
1,什么是默认字体?
新建工作簿时的字体就是默认字体。
2003(XP系统)默认字体设置:
2010(Win7系统)默认字体设置:
2,宽度相同时,像素值相同吗?
在excel2003以上的版本中,可以建立一个空白的xls文档并将第一列宽度拉到10。然后在A1单元格中输入1234567890可以看到单元格正好可以容纳这十个字符。一个字符的宽度是通过测量1234567890这十个字符在默认字体(通常是宋体11号字,视版本可能不同)下的平均宽度得到的。
宋体11号字:
宋体18号字:
这两张图片中的宽度都为10,且正好容纳下1~0十数字,但是它们的宽度像素值却不相同。
3,宽度的像素值是如何计算的?
上图是我做的一张表格,里面包含一些常见的字体和它们在Excel中的实测宽度(2003和2010测试结果相同)
这张图说明了几个问题:
一、字符像素宽度 = 字体宽度 * 字符个数 + 边距
例如宋体11号字,字体宽度8,边距5,计算10个字符的实际像素值: 8 * 10 + 5 = 85;
二、不同的字体,字体宽度和边距是不同的
三、网上到处流传的拿字体宽度8边距5 进行像素计算的,就是因为EXCEL2003的默认字体为宋体12,EXCEL2010默认字体为11,而它们的参数正好相同。一旦客户某天改了默认字体,新建了个Excel文件,你的程序就可能不对了。
四、Arial 10字体很重要,因为它是Apache POI中所有关于像素计算的默认字体。用POI创建出来的EXCEL就是这个字体。有时你可能要精确设置列宽度,或者用POI往EXCEL里面插入一张图片还要进行精确定位,你就必须要知道这个默认字体的问题。
如果你用POI新建Excel文件,那么参数就是7和5
如果你用预先画的EXCEL文件打印报表之类的操作,你就要看它的默认字体是什么了。
5,怎么看EXCEL文件中的默认字体是什么?
我用的POI代码查看的,其他方法暂时不知道,有知道的朋友请指导。
注:第0个字体就是默认字体
public static void main(String[] args) throws IOException {File xlsFile = new File("d:\\1.xls");HSSFWorkbook book = new HSSFWorkbook(new FileInputStream(xlsFile));HSSFFont font = book.getFontAt((short)0);System.out.println(font.getFontName() + font.getFontHeightInPoints());}
6,怎么使用POI修改Excel文件的默认字体?
这个暂时不知道,有知道的朋友请指导。
7,解决方案呢?
解决方案1:使用POI创建的EXCEL文件,请使用参数7和5,用第3条中的公式计算宽度即可。
解决方案2:把常用的EXCEL文件用代码扫描一下看看默认字体是什么
import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class ReadFont {public static void main(String[] args) {//扫描目录下的所有XLS文件File rootDir = new File("D:\\test");List<File> files = collectionFiles(rootDir);System.out.println("共有EXCEL文件:" + files.size() + "个");Map<String, Integer> counts = new HashMap<String, Integer>();for (File xlsFile : files) {String font = readFont(xlsFile);Integer c = counts.get(font);if(c == null){c = 0;}counts.put(font, c + 1);}for (Entry<String, Integer> entry : counts.entrySet()) {System.out.println(entry.getKey() + " = " + entry.getValue());}}private static String readFont(File xlsFile) {HSSFWorkbook book = null;try {book = new HSSFWorkbook(new FileInputStream(xlsFile));} catch (Exception e) {throw new RuntimeException(e);}HSSFFont font = book.getFontAt((short)0);return font.getFontName() + font.getFontHeightInPoints();}private static List<File> collectionFiles(File rootDir) {List<File> result = new LinkedList<File>();collectionFiles(rootDir, result);return result;}private static void collectionFiles(File rootDir, List<File> result) {for (File f : rootDir.listFiles()) {if(f.isDirectory()){collectionFiles(f, result);}else if(f.getName().endsWith(".xls")){result.add(f);}}}}
个人测试结果如下:
共有EXCEL文件:213个
宋体12 = 112
宋体11 = 54
Arial10 = 31
宋体10 = 14
仿宋_GB231212 = 1
宋体8 = 1
可以人看出常用字体大概在3、4种左右,只需根据第2条,用EXCEL实际测量一下就可以算出参数。然后究竟是写配置文件,还是定义个常量,请随意。
8,有没有办法直接从字体、字号算出字符宽度、边距这两个参数呢?
激动人心的时刻到来了,但我还是留个坑吧,如有需要请留言。
Excel的宽度怎么算的?相关推荐
- 计算机函数sumif求平均值,『如何用sumif求平均年龄』excel表中如何算平均数及标准差...
怎样在Excel中计算所有人的平均年龄??! 在旁边插入一列G,写=DATEDIF(F2,NOW(),"y"),F2是出生年月日.然后下拉. 在旁边的单元格写=average(G: ...
- oracle算加权平均的函数,怎样在Excel表中用函数算加权平均数?《电子表格加权平均函数》...
怎样在Excel表中用函数算加权平均数? 例子:学校末成绩,考30%,期末考试占50 %,假如期中考试得了84,期末92,作业分91,在A列输入考试成绩依次为84.92.91:在B列依次输入0.3.0 ...
- 在EXCEL中将地址解算为经纬度、地图标绘、并导出ShapeFile
在EXCEL中使用小O地图EXCEL版的地图任务功能,实现将文字地址解算为经纬度坐标: 使用地图绘图功能,将经纬度标注地图之上,并将表格记录行信息作为图形属性: 使用地图绘图管理器,保存绘图,并可将图 ...
- 办公软件excel表格_钢筋算量Excel表格,现场算钢筋,效率可与大型软件相比
提起钢筋算量,工作很久造价和施工恐怕都要挠头,对于刚入行的造价和施工都可以说是灾难.不过不用担心,我今天就是来给大家送解决方法--钢筋算量Excel表格. 钢筋算量Excel表格基本包含了钢筋算量的全 ...
- excel变异系数CV怎么算
变异系数(Coefficient of Variation):当需要比较两组数据离散程度大小的时候,如果两组数据的测量尺度相差太大,或者数据量纲的不同,直接使用标准差来进行比较不合适,此时就应当消除测 ...
- python输入随机的口算算式_小学生家长的福利来啦--利用EXCEL随机生成口算题目...
原标题:小学生家长的福利来啦--利用EXCEL随机生成口算题目 刚上一年级或者二年级的家长都会有这样的一个纠结:数学老师布置作业,要求家长给小孩出口算题目,并批阅.辛辛苦苦想了好久,总算把题目出完了, ...
- excel使用教程_造价老师傅整理:广联达安装算量教程+Excel表,造价算量不再难...
造价老师傅整理:广联达安装算量教程+Excel表,造价算量不再难 这份资料分为两部分:一部分是广联达安装算量教程,另一部分是Excel自动计算表.两部分相结合使用,造价算量更容易. 广联达安装算量教程 ...
- 计算机表格最高分,excel表格里怎样算最高分 excel各个班的最高分
在Excel中录入好数据以后进行数据统计,再统计过后多数需要算出最高值得,有些朋友可能不太会求最高值,接下来是小编为大家带来的excel如何求最高值的方法,欢迎大家来到学习. excel表格算最高分的 ...
- 计算机表格最高分,excel表格里怎样算最高分
在Excel中录入好数据以后进行数据统计,再统计过后多数需要算出最高值得,有些朋友可能不太会求最高值,接下来是学习啦小编为大家带来的excel如何求最高值的方法,欢迎大家来到学习啦学习. excel表 ...
最新文章
- 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金
- php7.1 集成php fpm,LNMP建站教程(2):安装 PHP 7.1 与 PHP7.1-FPM以及与Nginx集成
- 编程修养 阅读笔记一
- 数分笔记整理22 - 数据处理项目 - 中国姓氏排行研究 房价影响因素挖掘
- CC1310F128RGZR 无线收发器 微控制器
- 第九届蓝桥杯,赛后感!!含泪写完。
- 解除网页无法选择文字_无法复制
- 创建反向词典,为你打开神经网络的大门
- 如何抠图图片?这个方法值得点赞收藏
- 什么是 5G CPE
- Docker学习(四):Dockerfile
- python获取当天日期
- 当逻辑表达式或者算法的计算过程冗长的时候该如何做的简单可读
- 计算机绪论知识点,第一章 绪论
- COI实验室技能:MATLAB控制PCO相机
- 记录一次拯救jenkins的历程
- git branch 删除
- [论文笔记] the book of why 0.引言
- 21款22款23款奔驰E300升级23P智能驾驶辅助系统全速自适应巡航
- 怎么让备忘录以及便签里的内容显示在手机桌面上