NPOIライブラリを使用して既存のブックを読み込み、新しいブックを作成しています。 HSSFSheetを作成するとき。 SetZoomというメソッドがあることがわかります。私が見ていないのは、ズームレベルが既存のワークシートにあるかどうかを知るために、GetZoomメソッドまたはZoomプロパティです。何か案は?ワークシートのNPOI GetZoom
答えて
私はそこに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);
}
}
(JavaでInternalSheet
)ISheet
の:
private List<RecordBase> _records;
したがって、この情報は公にアクセスすることはできません。ズームが設定されていない場合、デフォルトは100%ですが、既存のシートのズームにアクセスする方法は認識されていません。NPOIでこれを行う方法はないと思われます内部ソースコードそれでも、ワークシート上の既存のズームレベルとは対照的に、これは設定したズームレベルのみを提供します。
worksheet.View.ZoomScale
にアクセスするとEPPlusで可能かもしれませんが、現時点では現在テストできません。
NPOIでズームを設定して取得するオーバーライドクラスメソッドを作成することは可能でしょうか? EPPlusはXLSXには最適ですが、XLSは処理しません。 –
@DavidP問題は、どのように最初にズームを得ることができないのか、私はあなたがそのような方法を書く方法を知らないということです。私は、ズームはWindowsの設定や何かのようにExcelシートの外に保存されていると思う。申し訳ありませんが、私はもっと助けになることはできませんでした。 –
レジストリキーまたはWindowsの設定に格納されていると誤っていると思われました。 Excelのワークシートにカスタムズームを設定してファイルを閉じ、ファイルを新しい名前付きドキュメントにコピーして、新しく名前を付けたドキュメントを開くと、カスタムズームがまだ記憶されているためです。しかし、あなたの意見に基づいて、私は解決策を見つけました。下記参照。 –
C.ヘリングのおかげで、ズームがウィンドウ2に保存されていると推測できました。ただし、整数として格納されます(65%は65、150%は150など)。
destWS.SetZoom(sourceWS.Sheet.WindowTwo.NormalZoom, 100)
ニース!私はあなたがそれを理解してうれしいです。 –
- 1. NPOI
- 2. fitBoundsとgetZoomがいい
- 3. はNPOI
- 4. NPOI NuGetコードのデバッグ
- 5. C#NPOI rowStyle
- 6. Npoiラウンド式
- 7. NPOI実世界ピボットの例
- 8. NPOI自動サイズ変更カラム
- 9. HSSFCellStyleからNPOIのXSSFCellStyleにコピー
- 10. VlookupのワークシートAからワークシートへのエラー
- 11. ワークシート
- 12. ワークシート
- 13. Fabric.jsの位置は、getZoom()とgetWidth()/ getHeight()との相対位置です。
- 14. 空のワークシート - Microsoft.Office.Interop.Excel
- 15. Googleのワークシートから別のGoogleワークシートにセルの内容をコピー
- 16. NPOI - 日時形式の数値エクセル細胞(C#の)
- 17. 特定のワークシートを開く97-2003のワークシート
- 18. ワークシートの行を4つの異なるワークシートにコピー
- 19. 可変長ワークシートから別の可変長ワークシートへのコピー
- 20. 外部のワークシートから別のワークシートにデータをコピーする
- 21. あるワークシートのデータを別のワークシートにコピーする方法
- 22. Googleシートのワークシート1以外のワークシートにアクセスするapi v4
- 23. NPOI/POI Excel Lib ISheet.ShiftRowsインデックス範囲外の例外
- 24. Excel with NPOI:セルのスタイル(背景色)を取得
- 25. NPOIを使用してExcelのセル値を編集するプログラム。
- 26. NPOI、XSSFComment c#:コメントの背景色を設定できません
- 27. NPOI 1.2.4はIComment.Visibleの値を無視します
- 28. NPOIは未解決の問題を抱えています
- 29. ワークシート名とワークシートの定義を定義します
- 30. ワークシートを複数のワークシートに分割するコード
既定以外のズーム(たとえば75%)があることがわかっている既存のワークシートを読み込む場合は、変更を加えて、新しいワークシートのズームを設定してください。保存するか、結果のファイルに同じズームが適用されるか、または100%にリセットされますか? –
私はこのコードで試したことはありませんが、MS Excelを開いて、ズームを非標準に設定し、ドキュメントを保存して閉じます - 次に - はい - 次回開くときは、ズームはまだ覚えていますあなたの非標準設定。 –