在apache poi中,我们可以使用sheet.setZoom(120)设置缩放值。但是,当我们复制/克隆相同的工作表时,我们将如何获得缩放值。我无法找到方法srcSheet.getZoom();.这种方法的替代方法是什么?。
答案 0 :(得分:1)
如果apache poi
缺少方法,我们该怎么办?我们可以看看它是如何编码类似的方法。例如,XSSFSheet..setZoom除了设置默认CTSheetView的zoomScale
之外别无其他。因此,如果我们获得默认工作表视图,我们可以执行相反的操作并获取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();
}
}