Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells は、スマートマーカーを介して配列データを単一セルにレンダリングすることをサポートしています。ArrayAsSingle 属性と ExtraDelimiter 属性を併用することで、開発者は単一セル内で配列要素を区切る方法を制御でき、レポートやテンプレートの柔軟な書式設定を実現します。
Aspose.Cells のスマートマーカーは、強力なテンプレートベースの機能であり、&=DataSource.Field などのマーカー式を使用してスプレッドシートのデータを動的に入力することができます。マーカーはデザイナーワークブックに配置され、テンプレートが WorkbookDesigner によって処理されると、マーカーは指定されたデータソースからの値に置き換えられます。
デフォルトでは、スマートマーカーが配列プロパティ(例えば &=DataSource.Numbers)を参照する場合、エンジンは配列を展開し、各要素を隣接する個別のセルに配置します — 行方向に水平方向に、または列方向に垂直方向に展開されます。この動作は多くのシナリオで便利ですが、配列全体を 1 つの単一セルにレンダリングし、要素を選択した区切り文字で連結して表示したい状況もあります。
スマートマーカータグ内で一緒に使用される ArrayAsSingle 属性と ExtraDelimiter 属性は、まさにこの要件に対応します。これらの属性により、配列データソースをネイティブに操作しながら、レポートレイアウトをコンパクトかつ予測可能な状態に保つことができます。
スマートマーカーが配列プロパティを参照する場合、Aspose.Cells はデフォルトで配列を複数のセルに展開します。例えば、4 つの値を含む string[] に対する &=Product.Tags のようなマーカーは、各値を独自のセルに配置し、他のテンプレートコンテンツを押し出し、慎重に設計されたレポートレイアウトを壊す可能性があります。
デフォルトの展開動作が望ましくない実際のシナリオは多数あります。
組み込みのメカニズムがなければ、開発者は JavaScript でデータを前処理し、配列を区切り文字列に結合してから、ワークブックデザイナーにバインドせざるを得なくなります。これにより、ロジックが重複し、データモデルが複雑になり、エラーの可能性が高まります。ArrayAsSingle 属性と ExtraDelimiter 属性は、スマートマーカー自体の中で宣言的に書式設定を処理することで、この回避策を不要にします。
スマートマーカーで ArrayAsSingle 属性と ExtraDelimiter 属性を使用すると、いくつかの利点があります。
ArrayAsSingle 属性と ExtraDelimiter 属性は、標準的なスマートマーカーの括弧内にキーと値のペアとして渡されます。一般的な構文は次のとおりです。
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
マーカーは以下の部分で構成されています。
&=DataSource.ArrayProperty — バインドされたデータソースの配列プロパティを参照する標準スマートマーカー。arrayasSingle=true — 配列全体を単一セルにレンダリングするようエンジンに指示します。値 true のみが単一セル動作をトリガーします。extraDelimiter=", " — 配列要素間に配置される区切り文字を定義します。値は文字列リテラルであり、空、単一文字、または複数文字の文字列が可能です。extraDelimiter 属性は、複数文字の区切り文字、カスタムテキスト、改行で区切られた出力のための \n などのエスケープシーケンスなど、任意の文字列リテラルを受け入れます。配列が空の場合、結果のセルは空白のままになります。
次のワークフローでは、スマートマーカーを使用して配列を単一セルにレンダリングする方法について説明します。
string[]、int[]、またはその他のサポートされている配列型を返すことができます。Workbook を作成し、ヘッダー行を追加し、配列プロパティを参照する arrayasSingle および extraDelimiter 属性を持つスマートマーカーセルを配置します。WorkbookDesigner オブジェクトを作成し、デザイナーワークブックをアタッチし、setDataSource メソッドを使用してデータソースをバインドします。workbookDesigner.process() メソッドを呼び出してスマートマーカーを展開し、ワークブックに実際のデータを入力します。let product = {
Tags: ["C#", "Aspose", "SmartMarker", "Excel"]
};
let workbook = new AsposeCells.Workbook();
let worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Tags");
worksheet.getCells().get("A2").putValue('&=Product.Tags(arrayasSingle=true, extraDelimiter=", ")');
let designer = new AsposeCells.WorkbookDesigner();
designer.setWorkbook(workbook);
designer.setDataSource("Product", product);
designer.process();
workbook.save("output_arraySingle.xlsx");
class Student {
constructor() {
this.Scores = [];
}
}
const student = new Student();
student.Scores = [95, 88, 76, 100, 67];
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Scores");
worksheet.getCells().get("A2").putValue(student.Scores.join(" - "));
workbook.save("output_numericArray.xlsx");
var order = {
Items: ["Apple", "Banana", "Cherry", "Date"]
};
var workbook = new AsposeCells.Workbook();
var sheet = workbook.getWorksheets().get(0);
var cells = sheet.getCells();
// セクション 1: デフォルトのスマートマーカー - 値がセルを横方向に展開される
cells.get("A1").putValue("Default Spreading Behavior:");
cells.get("A2").putValue("&=Order.Items");
// セクション 2: arrayasSingle と extraDelimiter を使用した新しい単一セルレンダリング
cells.get("A4").putValue("Single Cell Rendering (arrayasSingle=true):");
cells.get("A5").putValue("&=Order.Items(arrayasSingle=true, extraDelimiter=\"; \")");
// データソースをバインドし、スマートマーカーを処理する
var designer = new AsposeCells.WorkbookDesigner(workbook);
designer.setDataSource("Order", order);
designer.process();
// 結果のワークブックを保存する
workbook.save("output_comparison.xlsx");
ArrayAsSingle 属性と ExtraDelimiter 属性を使用する場合は、以下の点に注意してください。
extraDelimiter 値は文字列リテラルとして扱われます。テンプレートプロセッサが解釈する可能性のある特殊文字はエスケープしてください。arrayasSingle 属性はブール値(true / false)を受け入れます。true のみが単一セル動作をトリガーします。他の値はデフォルトの展開動作にフォールバックします。DataSet および DataTable ソースでも機能します。\n または os.EOL を使用できます。Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.