2011-06-01 299 views
0

我需要根据管理提供的给定模式从我的应用程序生成MS Excel 2007+文件。大部分工作已经完成,但我必须将列宽设置为11.34厘米。我尝试使用setColumnWidth(int columnIndex, int width)方法,但不管我提供的值如何都不起作用。 JavaDoc的说:是否可以使用Apache POI API设置XSSF工作表的列宽?

设置宽度(在1/256一个字符宽度的单位)

用于单个细胞的最大列宽为255个字符。此值表示可以使用标准字体格式化的单元格中显示的字符数。

如何做到这一点?

+0

您是否检查过以确保列未被设置为自动自动调整大小?确保你没有在你的代码中执行这个调用,'sheet.autoSizeColumn(columnIndex);' – 2011-06-01 13:07:31

+0

嗨,我还没有在我的代码中发现任何类似的调用。我想知道是否有一种方法可以将厘米转换为“字符宽度”而不是?或者这没有意义,无论如何? – gtludwig 2011-06-01 16:55:21

回答

0

其实,我从错误的开始就误会了!我的(糟糕!)不好!宽度列已被设置,但不认为!所有这一切都是作为一个简单的“三条规则”,而我确定了。

+0

@maple_shaft感谢您的时间和帮助 – gtludwig 2011-06-03 11:57:59

1

好的,我想我现在明白你的问题了,你的业务需求状态是你必须根据标准的Excel字体字符宽度来设置列的宽度。

我会这样做的方式是在Excel中的示例中使用Print Screen键,然后粘贴到Paint或类似程序中并计算像素宽度。然后,我将使用标尺工具来测量像素/ cm,并将结果数字用作固定列宽。

这可能会涉及到一点点的试验和错误,以得到正确的答案。

现在,我将分享我的个人意见,我觉得这是一个懒惰和衰弱的业务需求。什么是“标准字体”?哪个版本的Excel?这个要求对开发人员的解释是完全可以接受的。

+0

我用来构建工作表布局的方法是[链接] http://pastebin.com/iaqWhHg6 [/ link]。但是,我的要求是制作输出,因此我的经理可以将生成的格式化的一组列复制粘贴到董事会的报告中。目前的标准是这样的一个colums更大(代码没有反映这一点),但我需要以编程方式设置列的宽度。 – gtludwig 2011-06-01 17:29:23