ワークシートのコピー
'1つ目のワークブック
Dim wb = New XLWorkbook
Dim ws = wb.AddWorksheet("Sheet1")
'Sheet1 の A1 にテキストを入力
ws.Cells("A1").Value = "(*^_^*)"
'ブック内でワークシートをコピーする
ws.CopyTo("Sheet1 のコピー")
'1つ目のワークブックを保存
wb.SaveAs("D:\test\wsCopyTest1.xlsx")
'2つ目のワークブック
Dim wb2 = New XLWorkbook
'1つ目のワークブックのワークシートを
'2つ目のワークブック内にコピーする
ws.CopyTo(wb2, "wsCopyTest1.xlsx からのコピー")
'2つ目のワークブックを保存
wb2.SaveAs("D:\test\wsCopyTest2.xlsx")
ワークシートの表示・非表示
Dim wb = New XLWorkbook
wb.Worksheets.Add("Visible")
wb.Worksheets.Add("Hidden").Hide
wb.Worksheets.Add("Unhidden").Hide.Unhide
wb.Worksheets.Add("VeryHidden").Visibility = XLWorksheetVisibility.VeryHidden
wb.SaveAs("D;\test\HideWorksheets.xlsx")
ワークシートの保護
下図のような2つのワークシートを作成します。
- A 列で「ロック」と表示されている場合、その行の B 列のテキストを変更することができません。
- A 列で「非表示」と表示されている場合、その行の B 列のテキストや数式が数式バーに表示されません。
Dim wb = new XLWorkbook
Dim ws = wb.Worksheets.Add("保護(パスワードなし)")
'セルの書式設定、列の挿入・削除、行の削除のみを許可
ws.Protect _
.SetFormatCells _
.SetInsertColumns _
.SetDeleteColumns _
.SetDeleteRows
ws.Cell("A1").SetValue("ロック、表示(デフォルト):").Style _
.Font.SetBold.Fill.SetBackgroundColor(XLColor.Cyan)
ws.Cell("B1").SetValue("(*^▽^*)")
ws.Cell("B1").Style.Border.SetOutsideBorder(XLBorderStyleValues.Medium)
ws.Cell("A2").SetValue("ロック、非表示:").Style.Font.SetBold _
.Fill.SetBackgroundColor(XLColor.Cyan)
ws.Cell("B2").Style.Protection.SetHidden.Border _
.SetOutsideBorder(XLBorderStyleValues.Medium)
ws.Cell("B2").SetValue("( *´艸`)")
ws.Cell("A3").SetValue("非ロック、非表示:").Style.Font _
.SetBold.Fill.SetBackgroundColor(XLColor.Cyan)
ws.Cell("B3").Style.Protection.SetLocked(False).Protection _
.SetHidden.Border.SetOutsideBorder(XLBorderStyleValues.Medium)
ws.Cell("B3").SetValue("(*^-^*)")
ws.Cell("A4").SetValue("非ロック、表示:").Style.Font.SetBold _
.Fill.SetBackgroundColor(XLColor.Cyan)
ws.Cell("B4").Style.Protection.SetLocked(False).Border _
.SetOutsideBorder(XLBorderStyleValues.Medium)
ws.Cell("B4").SetValue("(^^♪")
'ws.Style.Font.FontName = "游ゴシック";
'ws.Columns().AdjustToContents
'コンテンツが日本語の場合は日本語フォントにしておかないと AdjustToContents が正しく動作しない
ws.Column(1).Width = 37
ws.Column(2).Width = 25
'パスワードを付けてシートを保護
Dim protectedSheet = wb.Worksheets.Add("保護(パスワードは 123)")
Dim protection = protectedSheet.Protect("123")
protection.InsertRows = True
protection.InsertColumns = True
wb.SaveAs("D:\test\SheetProtection.xlsx")
ワークシートの見出しの色
ワークシートの見出しの色を下図のように変更します。
Dim wb = new XLWorkbook
Dim wsRed = wb.Worksheets.Add("Red").SetTabColor(XLColor.Red)
Dim wsAccent3 = wb.Worksheets.Add("Accent3").SetTabColor(XLColor.FromTheme(XLThemeColor.Accent3))
Dim wsIndexed = wb.Worksheets.Add("Index")
wsIndexed.TabColor = XLColor.FromIndex(24)
Dim wsArgb = wb.Worksheets.Add("Argb")
wsArgb.TabColor = XLColor.FromArgb(23, 23, 23)
wb.SaveAs("D:\test\TabColors.xlsx")
ワークシートの追加・移動・削除
Dim workbook = New XLWorkbook
'5枚のワークシートを追加する
' --> シート順は Sheet 1, Sheet 2, Sheet 3, Sheet 4, Sheet 5
For Each wsNum As Integer in Enumerable.Range(1, 5)
Dim ws = workbook.Worksheets.Add("Sheet " + wsNum.ToString)
Next
'最初のシートを最後に移動
' --> シート順は Sheet 2, Sheet 3, Sheet 4, Sheet 5, Sheet 1
workbook.Worksheet(1).Position = workbook.Worksheets.Count + 1
'4番目のワークシートを削除
' --> シート順は Sheet 2, Sheet 3, Sheet 4, Sheet 1
workbook.Worksheet(4).Delete
'1番目と2番目のシートの位置を入れ替える()
' --> シート順は Sheet 3, Sheet 2, Sheet 4, Sheet 1
workbook.Worksheet(2).Position = 1
workbook.SaveAs("D:\test\MultipleSheets.xlsx")
ウィンドウ枠の固定
Dim wb = new XLWorkbook
Dim wsFreeze = wb.Worksheets.Add("ウィンドウ枠の固定")
'行と列を同時に固定
wsFreeze.SheetView.Freeze(3, 5)
'行と列を別々に固定することもできます
'wsFreeze.SheetView.FreezeRows(3)
'wsFreeze.SheetView.FreezeColumns(5)
'固定を解除
'wsFreeze.SheetView.Freeze(0, 0)
'SplitRow / SplitColumn でもできます
'wsFreeze.SheetView.SplitRow = 3
'wsFreeze.SheetView.SplitColumn = 5
'固定を解除
'wsFreeze.SheetView.SplitRow = 0
'wsFreeze.SheetView.SplitColumn = 0
wb.SaveAs("D:\test\FreezePanes.xlsx")
アウトラインの作成
下図のようなアウトラインを作成します。
コード
Dim wb = new XLWorkbook
Dim ws = wb.Worksheets.Add("アウトライン")
ws.Outline.SummaryHLocation = XLOutlineSummaryHLocation.Right
ws.Columns(2, 6).Group '列 2-6(B-F) のアウトライン(レベル1)を作成
ws.Columns(2, 4).Group '列 2-4(B-D) のアウトライン(レベル2)を作成
ws.Column(2).Ungroup(True) '列2をすべてのアウトラインから外す
ws.Outline.SummaryVLocation = XLOutlineSummaryVLocation.Bottom
ws.Rows(1, 5).Group '行 1-5 のアウトライン(レベル1)を作成
ws.Rows(1, 4).Group '行 1-4 のアウトライン(レベル2)を作成
ws.Rows(1, 4).Collapse '行 1-4 を折りたたむ
ws.Rows(1, 2).Group '行 1-2 のアウトライン(レベル3)を作成
ws.Rows(1, 2).Ungroup '行 1-2 を最後のアウトラインから外す
'特定のアウトラインレベルを折りたたんだり展開したりすることもできます
'
' ws.CollapseRows(outlineLevel As Int32)
' ws.CollapseColumns(outlineLevel As Int32)
'
' ws.ExpandRows(outlineLevel As Int32)
' ws.ExpandColumns(outlineLevel As Int32)
'すべてのアウトラインレベルを一度に折りたたんだり展開したりすることもできます
'
' ws.CollapseRows
' ws.CollapseColumns
'
' ws.ExpandRows
' ws.ExpandColumns
wb.SaveAs("D:\test\Outline.xlsx")



