C# PR

【超簡単】Excel不要の最新ライブラリ 「SpreadsheetLight」でエクセルに罫線を設定する方法【C#】

記事内に商品プロモーションを含む場合があります

はじめに

エクセル不要で無料のエクセルライブラリ「SpreadsheetLight」を使って、エクセルに罫線を設定する方法を解説します。種類と色と範囲の指定だけなので簡単に設定できます。

SpreadsheetLightでエクセルに罫線を設定する方法


  • 環境
  • 実行結果
  • 全体コード
  • コードのポイント

SpreadsheetLightって何?という方は、以下の記事から先に参照してください。

環境

この記事は以下の環境で作成と動作確認を行っています。

環境バージョンなど備考
VisualStudio   2019 Community 2017でも使用できます
.NET4.7.2
プロジェクトコンソールアプリケーション(.NET Framework) 
SpreadsheetLight3.5.0

実行結果

後述するコードを実行すると、以下のような罫線が設定されたエクセルファイルが出力できます。

SpreadSheetLightで罫線のついた表を作成するコード実行した際の実行結果

全体ソース

罫線が設定されたエクセルファイルを出力するコードです。上の画像で示したエクセルが、実行ファイルと同じ場所に出力されます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// SpreadsheetLight 関連で必要です
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;

namespace ConsoleAppSSheetLight_RuledLine
{
    class Program
    {
        static void Main(string[] args)
        {

            SLDocument sl = new SLDocument();

            // 項目名称を入力します
            sl.SetCellValue("A1", "氏名");
            sl.SetCellValue("B1", "スコアA");
            sl.SetCellValue("C1", "スコアB");
            sl.SetCellValue("D1", "スコアC");
            sl.SetCellValue("E1", "スコア合計");

            // 氏名の内容を入力します
            sl.SetCellValue("A2", "田中");
            sl.SetCellValue("A3", "鈴木");
            sl.SetCellValue("A4", "山田");

            // 各人のスコアを入力します
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(2, i, i * 10); }
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(3, i, i * 20); }
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(4, i, i * 30); }

            // 各人の合計のため、SUM関数を入力します。

            // ライブラリの機能を使って、行・列の番号から、A1:A5 のような「範囲の文字列」に変換します
            string range1 = SLConvert.ToCellRange(2, 2, 2, 4);
            string range2 = SLConvert.ToCellRange(3, 2, 3, 4);
            string range3 = SLConvert.ToCellRange(4, 2, 4, 4);

            // SUM関数を入力します
            sl.SetCellValue(2, 5, "=SUM(" + range1 + ")");
            sl.SetCellValue(3, 5, "=SUM(" + range2 + ")");
            sl.SetCellValue(4, 5, "=SUM(" + range3 + ")");

            // 罫線用にスタイルを作成します。
            SLStyle style1 = sl.CreateStyle();

            //
            // 注意
            // 罫線の種類を必ず選択する必要があります。
            // 色の設定のみだと罫線は表示されないので、ご注意下さい。
            //

            // 罫線の形式を(点線・太線など)を設定します
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.RightBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;


            /*
                *  罫線の種類です( 太字系の形式は省略)
                * 

            // 実線(細い)
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;

            // 一点鎖線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.DashDot;

            // 点線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Dotted;

            // 太線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Medium;

            // 二重鎖線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.DashDotDot;

            // 破線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Dashed;

            // 二本線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Double;

            // 実線(極細)
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Hair;

            // 斜破線
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.SlantDashDot;

            // 実線(太い)
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Thick;
            */

            // 罫線の色を選択します
            style1.Border.BottomBorder.Color = System.Drawing.Color.Black;
            style1.Border.TopBorder.Color    = System.Drawing.Color.Black;
            style1.Border.LeftBorder.Color   = System.Drawing.Color.Black;
            style1.Border.RightBorder.Color  = System.Drawing.Color.Black;

            // 複数セルにスタイルを適用します。
            sl.SetCellStyle(1, 1, 4, 5, style1);

            // エクセルファイルを保存します
            sl.SaveAs("SSL_TestRuledLine.xlsx");

            // 終了待ちです。
            Console.WriteLine("End of program");
            Console.ReadLine();

        }
    }
}

コードのポイント

表データの作成

コードの中盤(50行目)までは、表の項目やデータを設定するコードです。
内容については以下の記事を参照してください。

スタイルの作成・罫線の種類と色の設定

罫線など書式設定をするための「SLStyle型のオブジェクト」(スタイル)を生成し、罫線の種類や色を設定していきます。

罫線の設定には、「Top」「buttom」「Right」「Left」があります。今回の例のように、表の全てに罫線を設定するには、上記全てに設定を行ってください。

※罫線の種類は、全体コードでコメントアウトした部分を参考にしてください。
※残念ながら、「囲む」の設定はみつかりませんでした。

罫線の種類は必ず設定してください。色の設定のみだとエクセルに罫線が表示されません。

            // 罫線用にスタイルを作成します。
            SLStyle style1 = sl.CreateStyle();

            // 罫線の形式を(点線・太線など)を設定します
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.RightBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

            // 罫線の形式を(点線・太線など)を設定します
            style1.Border.TopBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.LeftBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.RightBorder.BorderStyle = BorderStyleValues.Thin;
            style1.Border.BottomBorder.BorderStyle = BorderStyleValues.Thin;

罫線の範囲の指定

罫線を引くセルの範囲と、設定済みのスタイルをエクセル(sl) にセットすれば設定は完了です。
セルの範囲は、罫線を設定する「左上セル」と「右下のセル」を指定してください。

            // 複数セルにスタイルを適用します。
            sl.SetCellStyle(1, 1, 4, 5, style1);

まとめ

エクセル不要で無料のエクセルライブラリ「SpreadsheetLight」を使って、エクセルに罫線を設定する方法を解説しました。参考になればうれしいです。

SpreadsheetLightでは、エクセルにグラフを挿入することも簡単にできます。興味がある方は以下の記事も合わせてご覧ください。

お知らせ

今月号の『Software Design』はドメイン駆動設計(DDD)。実例を交えたDDDの手法の解説が特集されています。

編集:Software Design 編集部
¥1,562 (2024/03/13 12:59時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

同じ27インチで1.8倍の情報量

Excelで大量のデータを扱うなら、高解像度のディスプレイが絶対おすすめです。WQHD対応モニターなら、同サイズのフルHDと比べて1.8倍の情報量。解像度も高いので目にもやさしいです。30%オフなので私も仕事用に買いました。

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です