Excel のテキストボックス内のテキストでタグを置換する

導入

この記事では、Aspose.Cells を使用して Excel シートのテキスト ボックス内のタグをテキストに置き換えるという特定のタスクについて詳しく説明します。プロセス全体をステップごとにガイドし、すべての詳細を理解できるようにします。このチュートリアルの最後には、Aspose.Cells の理解が深まるだけでなく、Excel 関連のタスクが効率化されます。

前提条件

始める前に、いくつかのものを準備する必要があります:

  1. Visual Studio: Visual Studio がインストールされていることを確認してください。これは、C# でのコーディングを簡単にする柔軟な IDE です。
  2. Aspose.Cellsライブラリ: まだダウンロードしていない場合は、.NET用のAspose.Cellsライブラリを以下のサイトからダウンロードしてください。ページ無料試用版を入手して機能を確認することもできます。
  3. C# の基本知識: C# プログラミングの基本的な理解は、このガイドを簡単に理解するのに大いに役立ちます。 準備が整ったので、楽しい部分、つまりコードの記述に進みましょう。

パッケージのインポート

まず最初に、必要なパッケージをインポートしましょう。適切なインポートがないと、使用するクラスとメソッドがコードで認識されないため、これは非常に重要です。

C#プロジェクトを開始する

Visual Studio を開き、新しい C# プロジェクト (できればコンソール アプリケーション) を作成します。これにより、出力を簡単に確認できるようになります。

Aspose.Cells 参照を追加する

  • ソリューション エクスプローラーでプロジェクトを右クリックします。
  • 「追加」>「参照」を選択します。
  • Aspose.Cells ライブラリをダウンロードした場所を参照し、プロジェクトに含めます。

必要な名前空間をインポートする

参照を追加したら、次のコードを追加します。usingメインファイルの先頭にディレクティブを追加します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aspose.Cells.Drawing;

これにより、Aspose.Cells 名前空間内のクラスにアクセスできるようになります。 環境の設定が完了したので、いよいよコーディングという重要な部分に取り掛かります。目標は、Excel ファイル内のテキスト ボックスで特定のタグを見つけて、指定されたテキストに置き換えることです。

ステップ1: ソースと出力ディレクトリを定義する

まず、ソース Excel ファイルの場所と、変更したバージョンを保存する場所を指定する必要があります。

//ソースと出力ディレクトリ
string sourceDir = "Your Document Directory"; //ディレクトリを変更する
string outputDir = "Your Document Directory"; //ディレクトリを変更する

ステップ2: ワークブックを読み込む

ここで Excel ブックを読み込みます。ファイルが存在しない場合はエラーが発生します。そのため、ファイル パスが正しいことを確認してください。

Workbook wb = new Workbook(sourceDir + "sampleReplaceTagWithText.xlsx");

ここでは、既存のExcelファイルを読み込みます。sampleReplaceTagWithText.xlsx.

ステップ3: タグと置換テキストを定義する

次に、探しているタグと、それを何に置き換えるかを定義する必要があります。

string tag = "TAG_2$TAG_1";
string replace = "1$ys";

この例では、タグは次のように分割されています。$これを任意の区切り文字に置き換えることができます。

ステップ4: タグをループして置換する

置き換えたいタグごとにループを作成します。ここで魔法が起こります!

for (int i = 0; i < tag.Split('$').Length; i++)
{
    sheetReplace(wb, "<" + tag.Split('$')[i] + ">", replace.Split('$')[i]);
}

ステップ5: ワークブックを保存する

置換が完了したら、変更したワークブックを希望の形式で保存します。PDF に変換する方法は次のとおりです。

PdfSaveOptions opts = new PdfSaveOptions();
wb.Save(outputDir + "outputReplaceTagWithText.pdf", opts);

XLSX を含むさまざまな形式で保存することもできます。

ステップ6: 置換ロジックを実装する

ここが私たちの機能の核心です。sheetReplaceメソッドは、Excel ワークシート内の実際の置換を処理します。

public static void sheetReplace(Workbook workbook, string sFind, string sReplace)
{
    string finding = sFind;
    foreach (Worksheet sheet in workbook.Worksheets)
    {
        sheet.Replace(finding, sReplace);
        for (int j = 0; j < 3; j++)
        {
            if (sheet.PageSetup.GetHeader(j) != null)
                sheet.PageSetup.SetHeader(j, sheet.PageSetup.GetHeader(j).Replace(finding, sReplace));
                
            if (sheet.PageSetup.GetFooter(j) != null)
                sheet.PageSetup.SetFooter(j, sheet.PageSetup.GetFooter(j).Replace(finding, sReplace));
        }
    }
    foreach (Worksheet sheet in workbook.Worksheets)
    {
        sFind = sFind.Replace("<", "&lt;");
        sFind = sFind.Replace(">", "&gt;");
        foreach (Aspose.Cells.Drawing.TextBox mytextbox in sheet.TextBoxes)
        {
            if (mytextbox.HtmlText != null)
            {
                if (mytextbox.HtmlText.IndexOf(sFind) >= 0)
                {
                    mytextbox.HtmlText = mytextbox.HtmlText.Replace(sFind, sReplace);
                }
            }
        }
    }
}
  • まず、ワークブック内の各ワークシートをループします。
  • セルの内容だけでなく、ヘッダーとフッター(存在する場合)のメインタグも置き換えます。
  • 最後に、シート内の各テキスト ボックスをチェックし、探しているタグに基づいてボックス内のテキストを置き換えます。

結論

できました! Aspose.Cells for .NET を使用して、Excel ドキュメント全体のテキスト ボックス内のタグをテキストに置き換える方法を学習しました。これは、特にスプレッドシートで繰り返しのタスクを処理する場合に、時間を大幅に節約できます。

よくある質問

複数の Excel ファイル間でタグを一度に置き換えることはできますか?

はい、ファイルのリストをループすることで、同じロジックを複数の Excel ファイルに適用できます。

Aspose.Cells を使用するには有料ライセンスが必要ですか?

無料トライアルから始めることもできますが、フル機能を使用するにはライセンスを購入する必要があります。Aspose の購入オプション.

Aspose.Cells を使用してテキスト ボックス内の画像を置き換えることはできますか?

Aspose.Cells は主にテキストを扱います。ただし、必要に応じて画像を個別に操作することもできます。

変更した Excel ファイルをどのような形式で保存できますか?

XLSX、PDF、CSV などさまざまな形式で保存できます。

Aspose.Cells のサポートはどこで見つかりますか?

サポートを見つけたり質問したりできますAspose フォーラム.