Nuget

ClosedXMLをインストール

ファイルを開いてシート名をすべて表示

using ClosedXML.Excel;

try
{
    var filePath = @"c:\temp\Sample.xlsx";
    using (var workbook = new XLWorkbook(filePath))
    {
        Console.WriteLine($"シート数: {workbook.Worksheets.Count}");

        foreach (var sheet in workbook.Worksheets)
        {
            Console.WriteLine($"シート名: {sheet.Name}");
        }
    }
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}

Excelを開いていると、ファイルオープン時にエラーになるので・・・

読み取り専用で開く場合は、ClosedXML自体には機能がないので

FileStreamで読み取り専用で開いてそれを使って開くとよい

using ClosedXML.Excel;

try
{
    var filePath = @"c:\temp\Sample.xlsx";

    // 読み取りで開き、他ファイルは読み書きOKとする
    using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        using (var workbook = new XLWorkbook(fileStream))
        {
            Console.WriteLine($"シート数: {workbook.Worksheets.Count}");

            foreach (var sheet in workbook.Worksheets)
            {
                Console.WriteLine($"シート名: {sheet.Name}");
            }
        }
    }

}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}

Excelで開いている間にClosedXMLで開くとエラーになるが、
CLosedXMLで開いている間にExcelは開くことが可能なので、処理して保存する際にエラーとなる可能性はある。
そういうケースを気にするのであれば、FileStreamで排他制御する必要あり。

using ClosedXML.Excel;

try
{
    var filePath = @"c:\temp\Sample.xlsx";

    // 読み書き開き、他ファイルは読み書き禁止とする
    using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
    {
        using (var workbook = new XLWorkbook(fileStream))
        {
            Console.WriteLine($"シート数: {workbook.Worksheets.Count}");

            foreach (var sheet in workbook.Worksheets)
            {
                Console.WriteLine($"シート名: {sheet.Name}");
            }
        }
    }

}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}

セルの操作

A1形式でアクセス

worksheet.Cell(2, "C").value

行列でアクセス

worksheet.Cell(2, 3).value
投稿日時: 2025-04-24 13:23:24
更新日時: 2025-04-24 13:43:24

最近の投稿

最近のコメント

タグ

アーカイブ

その他