java生成excel设置列宽,汉字问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java生成excel设置列宽,汉字问题相关的知识,希望对你有一定的参考价值。

如下代码

XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("test");
XSSFRow row = sheet.createRow(0);
for (int i = 0; i < map.size(); i++)
row.createCell(i).setCellValue(map.get(i) + "\r\n" + "qweqwe");
sheet.setColumnWidth((short) i,(short) (map.get(i).length() *256));

里面sheet.setColumnWidth((short) i,(short) (map.get(i).length() *256));为设置excel列宽随map.get(i) + "\r\n" + "qweqwe"的长度而改变,但是他是依据map.get(i).length()给出的长度,我的map.get(i)里面含有汉字,所以sheet.setColumnWidth((short) i,(short) (map.get(i).length() *256))就比实际的长度短一些,有没有办法才能让他正好是map.get(i) + "\r\n" + "qweqwe"长度呢

参考技术A 貌似只能大概猜测。因为英文的字符不是等宽的,另外也和font-size, font-family有关。

如果是12号字体,一个汉字的宽度应该是12像素,一个字母应该大致是6像素。
你还需要将1像素转化为1excel单元格的宽度单位。本回答被提问者采纳

用poi导出excel设置列宽的方法

参考技术A

  很多朋友都想知道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为列高的像素数。

关于poi导出excel的相关 文章 推荐:

1. java简历模板

2. java简历填写范文3篇

以上是关于java生成excel设置列宽,汉字问题的主要内容,如果未能解决你的问题,请参考以下文章

java生成excel内容超出列宽自动换行

Java 设置Excel自适应行高列宽

如何用poi导出excel设置列宽

将数据从 Excel 导入 Outlook 时如何设置固定列宽?

用poi导出excel设置列宽的方法

POI生成excel如何实现自动调整行高