当前位置: 首页 > 知识库问答 >
问题:

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

司马建柏
2023-03-14

共有1个答案

金健
2023-03-14

在sheet.setColumnWidth中,这里的度量单位是字符宽度的1/256。还会告诉您Excel是如何精确计算的。

因此,如果希望Excel将列宽显示为10,使用默认字体Calibri 11,那么Width256必须计算为(int)Math.round((10*units.default_character_width+5f)/units.default_character_width*256f)

如果需要以英寸为单位设置列宽,那么首先应该将英寸转换为像素,然后必须将width256计算为(int)Math.round(widthpx/units.default_character_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);
  }

 }
}
 类似资料:
  • 问题内容: 简单方案: 我需要为设置一个固定宽度。我试过了: 也 对于 乃至 但是的宽度仍然相同。 问题答案: 对于Bootstrap 4.0: 在Bootstrap4.0.0中,您不能可靠地使用这些类(在Firefox中有效,但在Chrome中不适用)。您需要使用OhadR的答案: 对于Bootstrap 3.0: 在twitter bootstrap 3中使用:其中*是宽度的列数。 对于Boo

  • 我使用的是Apace POI 3.12操作系统:Mac操作系统

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 我在Apache Poi < code > XSLFFreeformShape 中有一条多段线。 默认情况下,拐角连接样式显示为圆形。 如何设置为斜面或斜面? 我在超类<code>XSLFSimpleShape</code>支持的笔划样式方法中找不到连接样式。 编辑 这是我对其他行属性所做的:

  • 我正在玩ApacheCamel,在从“琐碎的示例”阶段过渡到“但有这些恼人的细节”阶段时遇到了一些问题。至关重要的是,如何进入并显式修改endpoint。 在这种情况下,我需要为超文本传输协议客户端设置一个auth cookie。我有一个cookie存储对象,但不知道如何强制客户端使用它。我试过使用,但没有公开cookie存储,而且它似乎也没有被调用。 我现在的代码: 并由以下人员调用: 知道我如

  • 我正在使用Flink从Apache Pulsar读取数据。我在pulsar中有一个分区主题,有8个分区。在本主题中,我生成了1000条消息,分布在8个分区中。我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主