2014-01-07 213 views
6

用apache POI可以为Excel工作表设置左右打印边距吗?Apache POI - 在Excel中设置左/右打印边距

默认边距相当大。我看不到既不setLeftMargin也不setRightMargin在XSSFPrintSetup,但只有页眉和页脚:

XSSFPrintSetup printSetup = (XSSFPrintSetup) sheet.getPrintSetup(); 
    printSetup.setHeaderMargin(0.5D); 
    printSetup.setFooterMargin(0.5D); 

有什么样的朋友,可以帮助我一下?

回答

17

工作表边距不包含在XSSFPrintSetup对象中,而是包含在XSSFSheet本身中。使用SheetgetMarginsetMargin方法,为顶部/左侧/底部/右侧/页眉/页脚页边距传递适当的Sheet常数。以英寸为单位设置并获取边距。

double leftMarginInches = sheet.getMargin(Sheet.LeftMargin); 
sheet.setMargin(Sheet.RightMargin, 0.5 /* inches */); 
+0

任何想法为什么这不适用于图表工作表? – Max

-2

现在的枚举MarginType.LeftMargin,-RightMargin

double leftMargin = sheet.GetMargin(MarginType.LeftMargin); 
double rightMargin = sheet.GetMargin(MarginType.RightMargin); 

更新:

这段代码之前的代码是:

  var workbook = new XSSFWorkbook(); 
      var sheet = workbook.CreateSheet(sheetname); 
      double leftMargin = sheet.GetMargin(MarginType.LeftMargin); 
      double rightMargin = sheet.GetMargin(MarginType.RightMargin); 

这的确是NPOI。

+0

你确定你在说这里的软件吗?只有[Apache POI方法是Sheet.getMargin不是Sheet.GetMargin](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#getMargin%28short%29),以及没有在POI – Gagravarr

+0

中定义的'MarginType'枚举是的,我已经从我的工作示例中添加了一些代码来演示原点。 –

+0

OP已经标记了他们的问题[标签:java],所以大概问起有关Apache POI而不是NPOI。因此,您的答案看起来似乎是最令人困惑的,或者最糟糕的情况是错误的:/ – Gagravarr