如何使用 NPOI XSSF 在 c# 中将 ISheet 转换为 CT_Worksheet?

How to convert ISheet to CT_Worksheet in c# using NPOI XSSF?

我想将 Excel 视图从 Normal 设置为 PageLayout。在 Java (PIO) 中有一个 getCTWorksheet 方法,但是这个方法在 C# NPOI 实现中似乎不存在。

请建议一种从 ISheet 对象获取 CT_WorkSheet 并在 Excel 工作表上设置适当视图的方法。

这是我目前如何在我直接创建的 CT_Worksheet 对象上设置正确的视图。

CT_Worksheet ct = new CT_Worksheet();
ct = (CT_Worksheet)sheet;
CT_Workbook wrkb = wbb.GetCTWorkbook();
CT_SheetView view = ct.sheetViews.GetSheetViewArray(0);
view.view = ST_SheetViewType.pageLayout;

不幸的是,NPOI 设计者将 GetCTWorksheet() 方法设为 内部 ,因此您不能从库外使用它。这可能也是 POI 开发人员的意图,但 Java 没有包私有方法的概念。

由于似乎没有访问内部 类 的官方方法,我们将只使用 反射 来访问它们。

var workbook = new XSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet 1");
var row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("This is a test");

// Use reflection go call internal method GetCTWorksheet()
MethodInfo methodInfo = sheet.GetType().GetMethod("GetCTWorksheet", BindingFlags.NonPublic | BindingFlags.Instance);
var ct = (CT_Worksheet) methodInfo.Invoke(sheet, new object[] {});

CT_SheetView view = ct.sheetViews.GetSheetViewArray(0);
view.view = ST_SheetViewType.pageLayout;