数式を含むExcelファイルを解析する場合は、数式が含まれているセルと数式が何であるかを判断して定める必要があります。この記事では、Spire.XLS for .NETライブラリーを使用して、数式を含むセルを取得し、C#およびVB.NETで数式を返す方法を学習することができます。
Spire.XLS for.NETをインストールします
まず、Spire.XLS for.NETパッケージに含まれているDLLファイルを.NETプロジェクトの参照として追加する必要があります。DLLファイルは、このリンク からダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.XLS
数式を含むセルを取得し、数式を返す
数式を含むセルを取得して数式を返す手順は次のとおりです。
Workbookインスタンスを作成します。
Workbook.LoadFromFile() メソッドを使用してExcelファイルをロードします。
Workbook.Worksheets [sheetIndex] プロパティを使用して、インデックスで目的のワークシートを取得します。
StringBuilderインスタンスを作成します。
Worksheet.AllocatedRangeプロパティを使用して、ワークシートの使用範囲にアクセスします。
使用範囲内のセルをループします。
ループ内で、CellRange.HasFormulaプロパティを使用してセルに数式が含まれているかどうかを検出します。結果がtrueの場合は、CellRange.RangeAddressLocalプロパティとCellRange.Formulaプロパティを使用してセルの名前と数式を取得します。次に、StringBuilder.AppendLine() メソッドを使用してそれらをStringBuilderに追加します。
File.WriteAllText() メソッドを使用して、StringBuilderのコンテンツを.txtファイルに書き込みます。
C#
using Spire.Xls;
using System.IO;
using System.Text;
namespace ReadFormulas
{
class Program
{
static void Main(string[] args)
{
//Workbook インスタンスを作成する
Workbook workbook = new Workbook();
//Excel ドキュメントをロード
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Formulas.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.Worksheets[0];
//StringBuilderインスタンスを作成する
StringBuilder sb = new StringBuilder();
//ワークシートの使用範囲にアクセスする
CellRange usedRange = sheet.AllocatedRange;
//使用範囲内のセルをループする
foreach (CellRange cell in usedRange)
{
//現在のセルに数式があるかどうかを検出する
if (cell.HasFormula)
{
//セル名を取得する
string cellName = cell.RangeAddressLocal;
//数式を取得する
string formula = cell.Formula;
//セル名と数式をStringBuilderに追加する
sb.AppendLine(cellName + " has a formula: " + formula);
}
}
// StringBuilderのコンテンツを.txtファイルに書き込む
File.WriteAllText("formulas.txt", sb.ToString());
}
}
}
VB.NET
Imports Spire.Xls
Imports System.IO
Imports System.Text
Namespace ReadFormulas
Class Program
static void Main(string() args)
{
'Workbook インスタンスを作成する
Dim workbook As Workbook = New Workbook()
'Excel ドキュメントをロード
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Formulas.xlsx")
'最初のワークシートを取得する
Dim sheet As Worksheet = workbook.Worksheets(0)
'StringBuilderインスタンスを作成する
Dim sb As StringBuilder = New StringBuilder()
'ワークシートの使用範囲にアクセスする
Dim usedRange As CellRange = sheet.AllocatedRange
'使用範囲内のセルをループする
Dim cell As CellRange
For Each cell In usedRange
'現在のセルに数式があるかどうかを検出する
if (cell.HasFormula)
{
'セル名を取得する
Dim cellName As String = cell.RangeAddressLocal
'数式を取得する
Dim formula As String = cell.Formula
'セル名と数式をStringBuilderに追加する
sb.AppendLine(cellName + " has a formula: " + formula)
}
Next
' StringBuilderのコンテンツを.txtファイルに書き込む
File.WriteAllText("formulas.txt", sb.ToString())
}
End Class
End Namespace
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除する場合、または機能制限を取り除く場合は、30日間有効な一時ライセンスについて営業担当者にお問い合わせください。