我正在使用NPOI库来读取现有工作簿,并创建一个新工作簿。创建HSSFSheet时。我看到有一种名为SetZoom的方法。我没有看到的是GetZoom方法或Zoom属性,以便告诉现有工作表上的缩放级别。有什么想法吗?
答案 0 :(得分:1)
这不是一个令人满意的答案,因为我不确定是否有一个。我查看了NPOI源代码(SetZoom() in line 1161)以及从中移植的原始java源代码(SetZoom() in line 1083)。如您所见,SetZoom()
方法只创建了SCLRecord
:
SCLRecord sclRecord = new SCLRecord();
sclRecord.Numerator = ((short)numerator);
sclRecord.Denominator = ((short)denominator);
Sheet.SetSCLRecord(sclRecord);
进一步挖掘(在原始java中):
public void setSCLRecord(SCLRecord sclRecord) {
int oldRecordLoc = findFirstRecordLocBySid(SCLRecord.sid);
if (oldRecordLoc == -1) {
// Insert it after the window record
int windowRecordLoc = findFirstRecordLocBySid(WindowTwoRecord.sid);
_records.add(windowRecordLoc+1, sclRecord);
} else {
_records.set(oldRecordLoc, sclRecord);
}
}
我们可以看到它将此信息保存到ISheet
(java中的InternalSheet
)的私有字段中:
private List<RecordBase> _records;
因此,此信息无法公开访问。如果未设置缩放,则默认为100%,但我不知道有任何方法可以访问现有工作表的缩放,因为在NPOI中似乎没有任何方法可以执行此操作,只需修改内部源代码自己。即便如此,这只会为您提供您设置的缩放级别,而不是工作表上已有的缩放级别。
如果您访问worksheet.View.ZoomScale
,可能在EPPlus中可能,但我目前无法对此进行测试。
答案 1 :(得分:1)
感谢C. Helling,我能够推断出Zoom已存储在Window2中。然而,它存储为整数(例如,65%为65%,150%为150%)。根据旧工作表的缩放设置新工作表的缩放非常简单:
destWS.SetZoom(sourceWS.Sheet.WindowTwo.NormalZoom, 100)