我这两天,因为客户对Excel导出格式有高要求,因为想做的灵活,不想用模板,所有样式,页面打印设置用POI代码实现所以遇到POI设置页边距的一个怪问题,于是下载了POI的源码研究了一下,结果发现肯定是POI的一个Bug。现列出来,大家讨论讨论,如何解决。
sheet.setMargin(HSSFSheet.BottomMargin, 0.5);// 页边距(下)
sheet.setMargin(HSSFSheet.LeftMargin, 0.25);// 页边距(左)
sheet.setMargin(HSSFSheet.RightMargin, 0.25);// 页边距(右)
sheet.setMargin(HSSFSheet.TopMargin, 0.5);// 页边距(上)
sheet.setMargin(HSSFSheet.HeaderMargin, 0.25);// Header 边距
sheet.setMargin(HSSFSheet.FooterMargin, 0.25);// Footer 边距
在org.apache.poi.ss.usermodel.Sheet接口里定义了如下6个常量值
public static final short LeftMargin = 0;
public static final short RightMargin = 1;
public static final short TopMargin = 2;
public static final short BottomMargin = 3;
public static final short HeaderMargin = 4;
public static final short FooterMargin = 5;
但一直跟下去,在org.apache.poi.hssf.record.aggregates.PageSettingsBlock里有这样一个方法:
public void setMargin(short margin, double size) {
Margin m = getMarginRec(margin);
if (m == null) {
switch (margin) {
case InternalSheet.LeftMargin:
_leftMargin = new LeftMarginRecord();
m = _leftMargin;
break;
case InternalSheet.RightMargin:
_rightMargin = new RightMarginRecord();
m = _rightMargin;
break;
case InternalSheet.TopMargin:
_topMargin = new TopMarginRecord();
m = _topMargin;
break;
case InternalSheet.BottomMargin:
_bottomMargin = new BottomMarginRecord();
m = _bottomMargin;
break;
default :
throw new IllegalArgumentException( "Unknown margin constant: " + margin );
}
}
m.setMargin( size );
}
这里只判断了前四种页边距,没有判断设置HeaderMargin 和FooterMargin 两种类型,所以编译期间没有错误。但在运行期间就抛出了IllegalArgumentException: Unknown margin constant: 4;
异常。
我在POI3.6, POI3.7, POI3.8beta3三个版本都试过。这个Bug都没有解决。请问是否有其他的解决办法?
分享到:
相关推荐
标题提到的问题就是这样一个情况:“easyExcel解决poi冲突更改内使用路径.rar”描述了一个解决方案,即通过调整jar包的路径来解决因版本不兼容导致的冲突问题。 首先,我们需要理解什么是jar冲突。在Java项目中,...
遇到问题时,开发者可以查阅官方文档,参与讨论论坛,或参考已有的解决方案。 总结来说,Apache POI是Java开发中处理Office文件的强大工具。它提供的API能够满足各种需求,无论是读取现有的文件,还是创建新的文件...
POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...
POI数据库是一个庞大的地理信息系统(GIS)的一部分,包含大量地点的坐标信息、类别、名称、营业时间、评分等多维度数据。这些数据通常以结构化的形式存储,便于快速检索和分析。POI数据的获取途径多样,包括网络...
解决POI3.10在添加图片的时候自身有一个BUG。纠结了很久都没解决,今天终于弄好了,文件包中附带了修改好的jar包bsj-poi-ooxml-3.10-FINAL-20140208.jar。主要问题是出在:org.apache.poi.xwpf.usermodel.XWPFRun....
POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件。标题中的"poi-3.17 poi-...
标题中的"poi全家桶ooxml-schemas/poi/poi-examples/poi-ooxml/poi-ooxml-schemas/poi-scratchpad"提及的是Apache POI项目中的多个关键组件和目录结构。Apache POI是一个开源的Java库,专门用于读写Microsoft Office...
在地理信息系统中,一个POI可以是一栋房子、 一个商铺、一个邮筒、一个公交站等。 高德POI又名高德兴趣点,来源于高德地图,高德是中国领先的数字地图内容、导航和位置服务解决方 案提供商。拥有导航电子地图...
官方的公告讲,这一版主要是追加了一些新的特性和BUG修正,不过稍微有点儿遗憾的是,还不能很好的操作Excel2007。 下载poi的jar包后,就可以导入到eclipse中。在eclipse中,需要创建一个新的Java项目并将poi的jar包...
所以你的文档如果有很多首段空白行的话,不要浪费C币下载啦.---不过我也有处理办法,在demo里面的注释写了哟,亲测有效!---开发测试demo来源于帮我对象写一个工具去处理他们的蒙古文课题内容,开发琢磨不易,希望...
#### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)和 Word(`.doc` 和 `.docx`...
### Linux下使用POI读取Word文件出现空指针异常问题解决方案 #### 问题背景 在使用Apache POI处理Word文档时,在Linux环境下遇到了`java.lang.NullPointerException`异常。异常的具体位置出现在`org.apache.poi....
6. **社区支持和资源**:作为开源项目,Apache POI拥有活跃的开发者社区和丰富的在线资源,包括官方文档、示例代码、论坛讨论等,可以帮助开发者解决使用过程中遇到的问题。 在实际应用中,Apache POI广泛应用于...
关于poi ,Apache在今年,也就是在2017年9月15日 正式发布了POI 3.17版本, Apache POI团队对于3.17版本进行了一些功能的修复。主要是几个新的功能区域和许多错误修复。 POI 3.17是支持Java 6的最后一个版本。下一个...
2010年 百度POI 上海百度POI 有全国数据 有历史全国数据 全类目poi 可带门牌号等扩展字段
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel(.xlsx、.xls)、Word(.doc、.docx)和PowerPoint(.ppt、.pptx)。这个压缩包包含了POI项目中所有必要的jar包,总计十二个,确保了...
使用poi-tl动态写入目录更新问题解决
标题中的“2019版本poi 2019高德poi 2019百度poi”提及的是关于2019年不同来源的POI(Point of Interest)数据,这些数据可能包括了高德地图和百度地图提供的兴趣点信息。POI数据是地理位置信息系统(GIS)中的一个...
在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。 高德POI又名高德兴趣点,来源于高德地图,高德是中国领先的数字地图内容、导航和位置服务解决方案提供商。拥有导航电子地图甲级...