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

无法准确设置Excel列宽Apache POI

蒋英博
2023-03-14
sheet.setColumnWidth(0, 100 * 256);

我希望生成的excel第1列的宽度为100。但是excel中的实际宽度是99.22。搜索引擎没有提供合理的解释,谁能帮忙。

共有1个答案

奚光霁
2023-03-14

在Excel中,列宽100表示单元格中使用的默认字体和默认字体大小的100个默认字符。因此,宽度100的确切值随默认字体和默认字体大小而变化。默认字体和默认字体大小由开始选项卡中样式组中给出的单元格样式正常值给出。

在存储中,Excel存储具有附加填充的宽度。所以coulmn Widt100并不完全存储为100,而是存储为100+填充。而且,对于不同的默认字体和使用的默认字体大小,填充也不同。

使用xssf(Office Open XML format)的Apache POI将字体Calibri和字体大小11作为默认值。这些也是Excel使用的默认值。所以Apache POI的units.default_character_width是默认字体的默认字符宽度,大小为11。

...
   int widthExcel = 100;
   int width256 = (int)Math.round((widthExcel*Units.DEFAULT_CHARACTER_WIDTH+5f)/Units.DEFAULT_CHARACTER_WIDTH*256f);
   sheet.setColumnWidth(0, width256);
...
 类似资料:
  • 我有一个具有动态高度单元格的集合视图(基于可能的多行标签和内部的textview),当我跨越多行时,它在高度上完全适应。但是,当文本只有一个单词或者它没有覆盖整个屏幕宽度时,单元格的宽度正好是所需的宽度,从而导致单元格彼此相邻,而不是在彼此下方。 查看文本视图中具有不同文本长度的结果。 然而,我希望细胞在彼此之下,想想Instagram或Twitter那种视图。显然,我需要为单元格设置一个宽度约束

  • 我正在用Java编写一个工具,使用Apache POI API将XML转换为MS Excel。在我的XML输入中,我接收以点为单位的列宽。但是Apache POI API在根据字体大小等设置列宽方面有一个有点奇怪的逻辑(请参考API文档) 是否有公式将点转换为Excel所期望的宽度?以前有人这么做过吗? 但是有一个方法:(但对于column. 附注:输入的XML是ExcelML格式,我必须将其转换

  • 本文向大家介绍C#设置WinForm中DataGrid列的方法(列宽/列标题等),包括了C#设置WinForm中DataGrid列的方法(列宽/列标题等)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#设置WinForm中DataGrid列的方法。分享给大家供大家参考。具体如下: 写winForm的程序,难免要用DataGrid,自然也就需要设置列格式啊,标题之类的!但是经常列标题设置

  • 问题内容: 我试图用Apache poi创建一个包含30列和100万条记录的大型Excel 2010。我正在按照此链接http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java中的描述进行创建 。但我希望列宽与列标题文本大小相同。

  • 我正在使用Jaspersoft Studio开发一个报告。在报告中,有些列只需要3个数字(Unicode),有些列需要8个数字(Unicode)。 我试图使列的宽度更大,这需要长数字,以便它适合一行和另一个宽度较小的行,需要短数字(只有3个数字)。 在Studio中,我尝试使用鼠标拖动,但它会自动调整所有其他列的大小,这使得固定特定列的大小变得更加困难。 有更简单的方法吗?