DioDocs for Excel.NETは、PDFエクスポート時にページ境界に基づいて、ワークシートに自動的にページ番号を付けるオプションを提供します。
PrintManagerクラスのGetPaginationInfoメソッドは、水平および垂直ページ付けようのページ境界の配列を取得します。水平および垂直ページ付けには、GetPaginationInfoメソッドを個別に呼び出す必要があります。取得されたページ付け情報は、ページ設定に基づきます。ワークシートの印刷領域も定義することができ、定義しない場合は、セルA1とデータを含む最後のセル間の領域がデフォールト印刷領域として使用されます。
ページ設定に加えて、GetPaginationInfoメソッドのオーバーロードを使用することで、まとめて保持する範囲を定義し、範囲の設定を繰り返すこともできます。
次のサンプルコードは、PDFエクスポート時にページ設定に基づいてワークシートのページ付けを行う方法を示します。
C# |
コードのコピー
|
---|---|
IWorkbook workbook = new Workbook(); IWorksheet worksheet = workbook.Worksheets[0]; //行ヘッダと列ヘッダが印刷されます worksheet.PageSetup.PrintHeadings = true; //範囲"B6:N80"が印刷されます worksheet.PageSetup.PrintArea = "B6:N80"; //データを設定します worksheet.Range["B6:S8"].Value = "1"; //テーブルを追加します worksheet.Tables.Add(worksheet.Range["B6:N20"], true); PrintManager printManager = new PrintManager(); //columnIndexsは[9、13]です。これは、水平方向が10列目と14列目の後で分割されることを意味します IList<int> columnIndexs = printManager.GetPaginationInfo(worksheet, PaginationOrientation.Horizontal); Console.WriteLine("In horizontal direction, page is split after column : " + columnIndexs[0].ToString() + " & " + columnIndexs[1].ToString()); //rowIndexsは[50、79]です。これは、垂直方向が51行目と80行目の後で分割されることを意味します IList<int> rowIndexs = printManager.GetPaginationInfo(worksheet, PaginationOrientation.Vertical); Console.WriteLine("In vertical direction, page is split after row : " + rowIndexs[0].ToString() + " & " + rowIndexs[1].ToString()); worksheet.Save(@"GetPagination.pdf", SaveFileFormat.Pdf); |
次のサンプルコードは、PDFエクスポート時にページ設定、まとめて保持する範囲と繰り返し設定に基づいてワークシートのページ付けを行う方法を示します。
C# |
コードのコピー
|
---|---|
IWorkbook workbook = new Workbook(); IWorksheet worksheet = workbook.Worksheets[0]; //行ヘッダと列ヘッダが印刷されます worksheet.PageSetup.PrintHeadings = true; //範囲"B6:N80"が印刷されます worksheet.PageSetup.PrintArea = "B6:N80"; ; //データを設定します worksheet.Range["B60:N80"].Value = 1; //テーブルを追加します worksheet.Tables.Add(worksheet.Range["B6:N20"], true); //6行目は各ページの上部に印刷されます IList<RepeatSetting> repeatSettings = new List<RepeatSetting>(); RepeatSetting repeatSetting = new RepeatSetting(); repeatSetting.TitleRowStart = 5; repeatSetting.TitleRowEnd = 5; repeatSetting.Range = worksheet.Range["B6:N80"]; repeatSettings.Add(repeatSetting); //25番目から60番目までの行は1ページにページ付けます IList<IRange> keepTogetherRanges = new List<IRange>(); keepTogetherRanges.Add(worksheet.Range["$25:$60"]); PrintManager printManager = new PrintManager(); //columnIndexsは[9、13]です。これは、水平方向が10列目と14列目の後で分割されることを意味します IList<int> columnIndexs = printManager.GetPaginationInfo(worksheet, PaginationOrientation.Horizontal, keepTogetherRanges, repeatSettings); //rowIndexsは[23, 66, 79]です。これは、垂直方向が23行目、66行目と79行目の後で分割されることを意味します IList<int> rowIndexs = printManager.GetPaginationInfo(worksheet, PaginationOrientation.Vertical, keepTogetherRanges, repeatSettings); IList<PageInfo> pages = printManager.Paginate(worksheet, keepTogetherRanges, repeatSettings); printManager.SavePDF(@"GetPaginationRangesRepeatSettings.pdf", pages); |