Java中通过poi获取excel宽度问题

183 阅读1分钟

代码

// 获取当前系统,标准字体的每个字符占的像素,xlsx默认字体是Calibri,11pt
int pixelPerChar = getCharacterWidth("Calibri", 11, 'a');
// 计算指定列的真实的pixel值
// sheet.getColumnWidth(i)返回值是指定列的字符值 * 256,即单位是字符长度的1/256
float realWidth = sheet.getColumnWidth(i) / 256.0 * pixelPerChar;
// pixel转point
...
/**
 * 获取当前系统的标准字符的像素宽度
 */
public static int getCharacterWidth(String fontName, int fontSize, char character) {
   Font font = new Font(fontName, Font.PLAIN, fontSize);
   BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
   FontMetrics fm = img.getGraphics().getFontMetrics(font);
   return fm.charWidth(character);
}