作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。成都创新互联公司提供从前期的网站品牌分析策划、网站设计、网站设计制作、成都网站建设、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。
很多朋友都想知道poi导出excel设置列宽的方法,那么,该怎么做呢,下面让学习啦小编为你带来poi导出excel设置列宽的简单方法。poi导出excel设置列宽步骤: 接下来说说sheet.setcolumnwidth((short) 0, (short) 250); 第一个参数表示要为第几列设置,第二个参数表示列的宽度,看看上面的代码按说第一行第一列的单元格形状应该是个正方形,因为宽和高都是250,但是打开导出后的excel发现宽度没有高度大,是个长方形,查看该列的宽度仅为7个像素,看来行高和列宽的单位是不一样的,同样换一算sheet.setcolumnwidth((short) 0, (short) (35.7));表示高度为一个像素,同样设置列宽的像素为sheet.setcolumnwidth((short) 0, (short) (35.7*n));//n为列高的像素数。
sheet.SetColumnWidth(0, 35 * 100);100是像素,是35倍
很多朋友都想知道poi导出excel设置列宽的方法,那么,该怎么做呢,下面让学习啦小编为你带来poi导出excel设置列宽的简单方法。 poi导出excel设置列宽步骤: 接下来说说sheet.setColumnWidth((short) 0, (short) 250); 第一个参数表示要为第几列设置,第二个参数表示列的宽度,看看上面的代码按说第一行第一列的单元格形状应该是个正方形,因为宽和高都是250,但是打开导出后的Excel发现宽度没有高度大,是个长方形,查看该列的宽度仅为7个像素,看来行高和列宽的单位是不一样的,同样换一算sheet.setColumnWidth((short) 0, (short) (35.7));表示高度为一个像素,同样设置列宽的像素为sheet.setColumnWidth((short) 0, (short) (35.7*n));//n为列高的像素数。
// 设置表格默认列宽度为15个字节 sheet.setDefaultColumnWidth((short) 15);
EXCEL的行高度和列宽度单位是不一样的。
1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip):1英寸=72磅=25.4毫米=1440缇1磅=0.353毫米=20缇POI中的行高=Excel的行高度*20Excel的行高度=POI中的行高/20这里顺便把像素的换行方法说一下:DPI = 1英寸内可显示的像素点个数。通常电脑屏幕是96DPI, IPhone4s的屏幕是326DPI, 普通激光黑白打印机是400DPI要计算POI行高或者Excel的行高,就先把它行转换到英寸,再乘小DPI就可以得到像素像素 = (磅/72)*DPI像素= (Excel的行高度/72)*DPI像素= (POI中的行高/20/72)*DPIExcel的行高度=像素/DPI*72POI中的行高=像素/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;然后再四舍五入成整数。最后把我写的一个工具类贴上来,方便使用。public class HSSFUtil private static final short TWIPS_PER_PIEXL = 15; //1 Pixel = 1440 TPI / 96 DPI = 15 Twips public static short pixel2PoiHeight(int pixel) return (short) (pixel * TWIPS_PER_PIEXL); } public static int poiHeight2Pixel(short height) return height / TWIPS_PER_PIEXL; } //像素转poi宽度 public static int pixel2PoiWidth(FontInfo fontInfo, int pixel) double numChars = pixel2Character(fontInfo, pixel); numChars *= fontInfo.charWidth; numChars += fontInfo.spacing; numChars /= fontInfo.charWidth; numChars *= 256; return (int)numChars; } //poi宽度转像素 public static int poiWidth2Pixel(FontInfo fontInfo, int poiWidth) double numChars = poiWidth2Character(fontInfo, poiWidth); return character2Piexl(fontInfo, numChars); } public static double poiWidth2Character(FontInfo fontInfo, int poiWidth) double numChars = poiWidth / 256.0 - (fontInfo.spacing * 1.0 / fontInfo.charWidth); //2位小数 return new BigDecimal(numChars).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static int character2PoiWidth(FontInfo fontInfo, double numChars) double w = (numChars + (fontInfo.spacing * 1.0 / fontInfo.charWidth)) * 256; return (int) w; } //excel字符转像素 public static int character2Piexl(FontInfo fontInfo, double numChars) double pixel = fontInfo.charWidth * numChars + fontInfo.spacing; return (int)pixel; } //excel像素转字符 public static double pixel2Character(FontInfo fontInfo, int pixel) double numChars = (pixel - fontInfo.spacing) * 1.0 / fontInfo.charWidth; return new BigDecimal(numChars).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } //获得工作簿默认字符宽度 public static FontInfo getDefaultCharWidth(Workbook book) //博客没人气,我已删除此段代码,请自行研究或者留邮箱 } //获得不同字体的字符边距 private static int getSpacing(int fontHeightInPoints, int charWidth) //博客没人气,我已删除此段代码,请自行研究或者留邮箱 } }
你好,去看一下官方的api文档,或许你就会了https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/sheet.html
当前题目:poi设置列宽,poi导出excel可以调整列宽吗
标题来源:https://www.cdcxhl.com/article36/icpssg.html
成都网站建设公司_创新互联,为您提供网站收录、关键词优化、静态网站、手机网站建设、Google、网站设计公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联