如何在c#中使用NPOI XSSF将ISheet转换为CT_Worksheet
本文关键字:转换 ISheet CT Worksheet XSSF NPOI | 更新日期: 2023-09-27 17:54:20
我想设置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;