无法在apache poi中获取工作表缩放值

时间:2017-10-31 08:52:55

标签: apache-poi

在apache poi中,我们可以使用sheet.setZoom(120)设置缩放值。但是,当我们复制/克隆相同的工作表时,我们将如何获得缩放值。我无法找到方法srcSheet.getZoom();.这种方法的替代方法是什么?。

1 个答案:

答案 0 :(得分:1)

如果apache poi缺少方法,我们该怎么办?我们可以看看它是如何编码类似的方法。例如,XSSFSheet..setZoom除了设置默认CTSheetViewzoomScale之外别无其他。因此,如果我们获得默认工作表视图,我们可以执行相反的操作并获取zoomScale

示例:

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView;

import java.lang.reflect.Method;

public class ExcelXSSFSheetZoom {

 static long getZoom(XSSFSheet sheet) throws Exception {
  Method getDefaultSheetView = XSSFSheet.class.getDeclaredMethod("getDefaultSheetView"); 
  getDefaultSheetView.setAccessible(true); 
  CTSheetView sheetview = (CTSheetView)getDefaultSheetView.invoke(sheet);
  return sheetview.getZoomScale();
 }

 public static void main(String[] args) throws Exception {

  Workbook wb = new XSSFWorkbook();
  Sheet sheet = wb.createSheet();
  sheet.setZoom(120);

  System.out.println(getZoom((XSSFSheet)sheet));

  wb.write(new FileOutputStream("ExcelXSSFSheetZoom.xlsx"));
  wb.close();

 }

}