ワークシートのコピー
'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")