Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置以英寸为单位的固定列宽值。阿帕奇POI_Java_Apache Poi_Column Width - Fatal编程技术网

Java 如何设置以英寸为单位的固定列宽值。阿帕奇POI

Java 如何设置以英寸为单位的固定列宽值。阿帕奇POI,java,apache-poi,column-width,Java,Apache Poi,Column Width,Im为使用Apache POI创建的excel Im设置固定的列宽度。我有以英寸为单位的固定值。所以我想知道Apcahe POI作为参数的测量值是什么。我怎么能用英寸来表示呢 单张; 表。设置柱宽(0,100)在中被告知,此处的测量单位为字符宽度的1/256。它还被告知Excel是如何精确计算的 因此,如果希望Excel使用默认字体Calibri 11将列宽显示为10,则宽度256必须计算为(int)Math.round((10*Units.default\u CHARACTER\u width

Im为使用Apache POI创建的excel Im设置固定的列宽度。我有以英寸为单位的固定值。所以我想知道Apcahe POI作为参数的测量值是什么。我怎么能用英寸来表示呢

单张;
表。设置柱宽(0,100)

在中被告知,此处的测量单位为字符宽度的1/256。它还被告知
Excel
是如何精确计算的

因此,如果希望
Excel
使用默认字体Calibri 11将列宽显示为10,则
宽度256
必须计算为
(int)Math.round((10*Units.default\u CHARACTER\u width+5f)/Units.default\u CHARACTER\u width*256f)

如果需要设置以英寸为单位的列宽,则首先应将英寸转换为像素,然后必须将
宽度256
计算为
(int)Math.round(widthPx/单位。默认\u CHARACTER\u width*256f)

有一个用于单元管理的帮助器类

例如:

import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.util.Units;

class ExcelSetColumnWidth {

 public static void main(String[] args) throws Exception {

  try (Workbook workbook = new XSSFWorkbook(); 
       FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {
   Sheet sheet = workbook.createSheet();
   int widthExcel = 10;
   int width256 = (int)Math.round((widthExcel*Units.DEFAULT_CHARACTER_WIDTH+5f)/Units.DEFAULT_CHARACTER_WIDTH*256f);
   System.out.println(width256);
   sheet.setColumnWidth(0, width256);
   sheet.createRow(0).createCell(0).setCellValue("1234567890"); // Excel shows column width as 10 using default font Calibri 11

   float widthInch = 1f;
   float widthPx = widthInch * Units.PIXEL_DPI;
   width256 = (int)Math.round(widthPx/Units.DEFAULT_CHARACTER_WIDTH*256f);
   System.out.println(width256);
   sheet.setColumnWidth(1, width256);
   System.out.println(sheet.getColumnWidthInPixels(1)); // should be round 96 pixels for an inch
   sheet.createRow(1).createCell(1).setCellValue("1 inch width"); // column is 1 inch width

   workbook.write(fileout);
  }

 }
}

谢谢你的回答。我似乎无法从Units helper解析默认字符宽度class@dineshalwis:您使用的是什么版本的ApachePOI?请参见此处:。