C#Excelセルの数式をバッチ削除し、データのみをセーブする方法

データをテーブルの形式で記録するにはExcelを使用すれば上出来だと思います。Excelレポートを作成するとき、データの計算に多くの数式を使用することがよくあります。そして、作成後、社内の機密や何らかの個人情報を含むなど他の理由のせいで、これらの数式を削除してデータのみをセーブしたい場合も時々あるんでしょうね。セルの数式をバッチ削除し、データのみをセーブする方法をよく知らないなら、この記事を読んだ後、無料のコンポーネントFree Spire.XLSでそのニーズを完全に解決できると思います。

以下のテーブルの例にしよう。このテーブルの列Dのセルにはすべて数式が含まれています、そのうちの一つを選んでスクリーンショットをしました:

f:id:uha_noki:20211025170535p:plain

コードを使用する前に、C#アプリケーションを作成する必要があります。ここでFree Spire.XLSコンポーネントをダウンロードして、インストールフォルダからプログラムの参照にSpire.XLS.dllを追加します。

具体的な手順は以下のようになります:

ステップ1 Workbookのインスタンスを作成し、Excelドキュメントをロードします。

Workbook workbook = new Workbook();

workbook.LoadFromFile("Input.xlsx");

ステップ2 ドキュメント内のすべてのワークシートをトラバースし、数式を含んでいるすべてのセルを見つけて、セル内の数式のデータを取得してから、セルの内容をクリアし、最後にデータをセルに再度割り当てます。

foreach (Worksheet sheet in workbook.Worksheets)

{

    foreach (CellRange cell in sheet.Range)

    {

        if (cell.HasFormula)

        {

            Object value = cell.FormulaValue;

            cell.Clear(ExcelClearOptions.ClearContent);

            cell.Value2 = value;

        }

    }

}

ステップ3 ドキュメントを保存します。

workbook.SaveToFile("DeleteFormula.xlsx", ExcelVersion.Version2013);

数式を削除した結果を展示します:

f:id:uha_noki:20211025170608p:plain

完全なるコード:

using System;

using Spire.Xls;

namespace Excel_Formula

{

    class Program

    {

        static void Main(string[] args)

        {

            //Workbookのインスタンスを作成する

            Workbook workbook = new Workbook();

            //Excelドキュメントをロードする

            workbook.LoadFromFile("Input.xlsx");

            //ドキュメント内のすべてのワークシートをトラバースし、数式を含んでいるすべてのセルを見つけて、セル内の数式のデータを取得してから、セルの内容をクリアし、最後にデータをセルに再度割り当てる

            foreach (Worksheet sheet in workbook.Worksheets)

            {

                foreach (CellRange cell in sheet.Range)

                {

                    if (cell.HasFormula)

                    {

                        Object value = cell.FormulaValue;

                        cell.Clear(ExcelClearOptions.ClearContent);

                        cell.Value2 = value;

                    }

                }

            }

            //ドキュメントを保存する

            workbook.SaveToFile("DeleteFormula.xlsx", ExcelVersion.Version2013);

        }

    }

}

はい、おしまい、今回の記事はここで終わりにします、最後まで読んでいただいて、誠にありがとうございます。