0

.NET に Excel と同様のものを作成する方法またはライブラリはありますか?

Invoice例:次のメンバーを 持つオブジェクトがありますint Year int Number string Customer

および文字列内の「式」-たとえば"right(string(Year), 2) + \"/\" + string(Number, \"000000\""

そして、オブジェクトと「数式」文字列から動的に文字列を生成したいと思います(Excelに似ていますが、もちろんExcelはありません)

NCalc と同様に、主に数式用ですが、文字列式に特化しています...

4

3 に答える 3

0

私は少し前にこのようなことをしました。式ランタイムをコンパイルするだけです。チュートリアルについては、ここを参照してください: A Walkthrough of Dynamically Compiling C# code

于 2013-09-19T20:10:19.187 に答える
0

この種の非常に単純なインタープリターを作成することは、特に式をFunctionName(Parameter, Parameter2 ...). 私はかつて一日のうちに似たようなことをしました。+ 演算子の代わりに CONCATENATE (Excel 風) と呼ばれる関数を使用して、単純にすることもできます。

1 つのアプローチは、サポートする各関数のクラスを含む単純な言語オブジェクト モデルを作成することです。次に例を示します。

public abstract class ScriptFunction
{
     public abstract string Name { get; }
     public abstract int ParameterCount { get; }
     public abstract object Execute(params object[] parameters);
}

...次に、提供されたスクリプト文字列を調べ、括弧を区切り記号として使用して関数の名前とパラメーターを抽出し、呼び出す ScriptFunction を検索して、それに対して Execute を呼び出す再帰的な Eval 関数を記述します。

動的コンパイルに対するこのアプローチの利点は、コードが実行するようにプログラムしたことしか実行できないことを知っていることです。一方、式を C# コードにコンパイルしたものでは、ユーザーがアプリケーションの残りの部分に壊滅的なものを入力しませんでした。

より高度なアプローチについては、関数のマッチングとその引数のキャプチャに関する正規表現を参照してください。

于 2013-09-19T20:48:30.403 に答える
-1

これはおそらく、基本的に実行時のコード実行を許可するPost Sharpなどのアスペクト指向プラグインを使用して行うことができます。

于 2013-09-19T20:06:18.217 に答える