【VB.NET】ClosedXML:印刷設定

MEMO
  • この記事は GitHub - ClosedXML - Wiki を参考に書かせていただいたものですが、C# から VB.NET への書き換えをし、英語から日本語へ翻訳しただけでなく、元記事の構成・コード・コメント等を変更している場合もありますのでご了承ください。
  • 現在 ClosedXML のメンテナンスをご担当されている Francois Botha 様からの掲載許可もいただいてます。
  • この記事のコードサンプルについては、Imports ClosedXML.Excel が宣言されていることを前提としています。
  • ClosedXML の作成者について:Francois Botha, Aleksei Pankratev, Manuel de Leon, Amir Ghezelbash
  • ClosedXML のライセンスについて:GitHub - ClosedXML - MIT License

ぺージ設定

ページ設定ダイアログは Excel 上部の[ページレイアウト]メニューを選択し、右下にある赤丸部分をクリックすると表示されます。

ページタブ

ページタブ設定例(1)

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("ページ設定1")
'印刷の向き
ws.PageSetup.PageOrientation = XLPageOrientation.Landscape
'拡大/縮小
ws.PageSetup.AdjustTo(80)
'用紙サイズ
ws.PageSetup.PaperSize = XLPaperSize.A4Paper
'印刷品質
'ws.PageSetup.VerticalDpi = 600
'ws.PageSetup.HorizontalDpi = 600

wb.SaveAs("D:\test\PageSetup1.xlsx")

用紙サイズの一覧についてはこちらを参照してください:GitHub - ClosedXML - Paper Size Lookup Table

ページタブ設定例(2)

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("ページ設定2")
'印刷の向き
ws.PageSetup.PageOrientation = XLPageOrientation.Portrait
'次のページ数に合わせて印刷
ws.PageSetup.FitToPages(2, 2)
'ws.PageSetup.PagesTall = 3
'ws.PageSetup.PagesWide = 3

'用紙サイズ
ws.PageSetup.PaperSize = XLPaperSize.B4Paper
'印刷品質
'ws.PageSetup.VerticalDpi = 600
'ws.PageSetup.HorizontalDpi = 600
'先頭ページ番号
ws.PageSetup.FirstPageNumber = 5

wb.SaveAs("D:\test\PageSetup2.xlsx")

用紙サイズの一覧についてはこちらを参照してください:GitHub - ClosedXML - Paper Size Lookup Table

余白タブ

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("余白")

ws.PageSetup.Margins.Top = cm2inch(1)
ws.PageSetup.Margins.Bottom = cm2inch(1.5)
ws.PageSetup.Margins.Left = cm2inch(0.5)
ws.PageSetup.Margins.Right = cm2inch(0.5)
ws.PageSetup.Margins.Footer = cm2inch(1)
ws.PageSetup.Margins.Header = cm2inch(1)

ws.PageSetup.CenterHorizontally = True
ws.PageSetup.CenterVertically = True

wb.SaveAs("D:\test\Margins.xlsx")

余白をコードで設定する場合、単位はインチで設定する必要があるため、下記の cm2inch 関数を使用しています。

Private Function cm2inch(cm As Single) As Single

    Return cm / 2.54

End Function

MEMO

日本語版の Excel の場合、余白タブで使用されている数値の単位は(デフォルトでは)cm です。

この単位は OS の設定が反映されたものです。従って単位を(変えたいと思う場合は)(OS の設定を変えることで)変更することも可能だそうです。

ヘッダー/フッタータブ

テキストの追加

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("ヘッダー・フッター1")

'すべてのページに表示されるテキスト(左側のヘッダー)
ws.PageSetup.Header.Left.AddText("ClosedXML で設定")

'複数の種類の装飾を異なる方法で設定(右側のヘッダー、先頭ページのみ)

'テキストの追加と同時に単一の装飾を行う
ws.PageSetup.Header.Right.AddText("最初", XLHFOccurrence.FirstPage).SetBold
ws.PageSetup.Header.Right.AddText("の", XLHFOccurrence.FirstPage).SetFontColor(XLColor.Red)

'AddText(...) メソッドで返される IXLRichText を使用して、後から装飾を行う
Dim richText = ws.PageSetup.Header.Right.AddText("カラフルな", XLHFOccurrence.FirstPage)
richText.FontColor = XLColor.Blue
richText.Underline = XLFontUnderlineValues.Double

'複数の装飾を一度に行う
ws.PageSetup.Header.Right.AddText("右ヘッダー", XLHFOccurrence.FirstPage) _
  .SetBold _
  .SetItalic _
  .SetFontName("HG行書体")

'[先頭ページのみ別指定]
ws.PageSetup.SetDifferentFirstPageOnHF(True)
'ws.PageSetup.DifferentFirstPageOnHF = True

wb.SaveAs("D:\test\HeadersFooters1.xlsx")

定義済みヘッダー/フッターテキストの追加

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("ヘッダー・フッター2")

'現在のページ番号と合計ページ数をすべてのページのフッターに挿入
ws.PageSetup.Footer.Center.AddText(XLHFPredefinedText.PageNumber, XLHFOccurrence.AllPages)
ws.PageSetup.Footer.Center.AddText(" / ", XLHFOccurrence.AllPages)
ws.PageSetup.Footer.Center.AddText(XLHFPredefinedText.NumberOfPages, XLHFOccurrence.AllPages)

'奇数ページの右側のフッターにファイルのフルパスを挿入
ws.PageSetup.Footer.Right.AddText(XLHFPredefinedText.FullPath, XLHFOccurrence.OddPages)

'[奇数/偶数ページ別指定]
ws.PageSetup.SetDifferentOddEvenPagesOnHF(True)
'ws.PageSetup.DifferentOddEvenPagesOnHF = True

wb.SaveAs("D:\test\HeadersFooters2.xlsx")

ヘッダー/フッタータブのチェックボックスのオン/オフ

'[奇数/偶数ページ別指定]
ws.PageSetup.SetDifferentOddEvenPagesOnHF(True)
'ws.PageSetup.DifferentOddEvenPagesOnHF = True

'[先頭ページのみ別指定]
ws.PageSetup.SetDifferentFirstPageOnHF(True)
'ws.PageSetup.DifferentFirstPageOnHF = True

'[ドキュメントに合わせて拡大/縮小]
ws.PageSetup.ScaleHFWithDocument = False
'ws.PageSetup.SetScaleHFWithDocument(False)

'[ページ余白に合わせて配置]
ws.PageSetup.AlignHFWithMargins = False
'ws.PageSetup.SetAlignHFWithMargins(False)

シートタブ

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("シートタブ")

'印刷範囲
ws.PageSetup.PrintAreas.Add("A1:B2")
ws.PageSetup.PrintAreas.Add("D3:D5")

'タイトル行
ws.PageSetup.SetRowsToRepeatAtTop(1, 2)

'タイトル列
ws.PageSetup.SetColumnsToRepeatAtLeft(1, 2)

'枠線
ws.PageSetup.ShowGridlines = True

'白黒印刷
ws.PageSetup.BlackAndWhite = True

'簡易印刷
ws.PageSetup.DraftQuality = True

'行列番号
ws.PageSetup.ShowRowAndColumnHeadings = True

'コメントをシートの末尾に表示
ws.PageSetup.ShowComments = XLShowCommentsValues.AtEnd

'セルのエラーを #N/A に設定
ws.PageSetup.PrintErrorValue = XLPrintErrorValues.NA

'[ページの方向]を[上から下へ]に設定
ws.PageSetup.PageOrder = XLPageOrderValues.OverThenDown

wb.SaveAs("D:\test\SheetTab.xlsx")

印刷範囲と改ページ

離れた印刷範囲

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("離れた印刷範囲")

ws.PageSetup.PrintAreas.Add("A1:C3")
ws.PageSetup.PrintAreas.Add("E3:G10")

wb.SaveAs("D:\test\PrintAreas.xlsx")

Excel 上部メニューの[表示]>[改ページプレビュー]で下図の画面を確認できます。

改ページ

Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add("改ページ")

'印刷範囲を設定
ws.PageSetup.PrintAreas.Add("A1:G7")

'改ページを設定
ws.PageSetup.AddHorizontalPageBreak(3)
ws.PageSetup.AddVerticalPageBreak(4)

wb.SaveAs("D:\test\PageBreaks.xlsx")

Excel 上部メニューの[表示]>[改ページプレビュー]で下図の画面を確認できます。

 

「【VB.NET】ClosedXML の使い方」の一覧を表示

購読する
通知を受け取る対象
guest
0 Comments
Inline Feedbacks
View all comments