2016-07-04 14 views
1

Excelビューをから通常のからに設定したいPageLayout。 Java(PIO)にはgetCTWorksheetメソッドがありますが、このメソッドはC#NPOI実装には存在しません。NPOI XSSFを使用してC#でISheetをCT_Worksheetに変換するにはどうすればよいですか?

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; 

答えて

2

は残念ながら、NPOIの設計者は、GetCTWorksheet()方法内部を作りました。これはPOI開発者の意図だったかもしれませんが、Javaにはpackage-privateメソッドの概念はありません。

内部クラスにアクセスする正式な方法はないようですので、反射を使用してアクセスします。

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; 
関連する問題