0

Word で Aspose を差し込み印刷に使用しています。

次のような3x2テーブルがあります

<a>    <b>
<c>    <d>
<e>    <f>

ただし、特定の条件下では、1 つのフィールドが空白になることがあります。その場合は、セル全体を省略したいと思います。つまり、空のセルだけではありません。すなわち

<a>    <b>
<e>    <d>
       <f>

上記の例では c は空なので表示されませんか?

これはできますか?

私は IF と空の MERGEFIELDS も NextIf を試しました。

4

1 に答える 1

1

@ジョン、

IFieldMergingCallback インターフェイスを実装する必要がある場合があります。イベント ハンドラ 'FieldMerging' を使用して、差し込み印刷プロセスに対するカスタム コントロールを実装できます。たとえば、着信 MergeField の値で「null」または「空の文字列」を確認し、これに基づいて親セルを削除することを決定できます。サンプルコードは次のとおりです。

Document doc = new Document(@"C:\Temp\template.docx");
doc.MailMerge.FieldMergingCallback = new HandleMergeFields();
doc.MailMerge.Execute(new string[] { "a", "b", "c", "d", "e", "f" },
                        new object[] { "<a>", "<b>", "", "<d>", "<e>", "<f>" });
doc.Save(@"C:\Temp\out.doc");

private class HandleMergeFields : IFieldMergingCallback
{
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        DocumentBuilder builder = new DocumentBuilder(args.Document);
        if (string.IsNullOrEmpty(args.FieldValue.ToString()))
        {
            Field field = args.Field;
            Cell cell = field.Start.GetAncestor(NodeType.Cell) as Cell;
            // Remove the MergeField
            builder.MoveToMergeField(args.FieldName);
            //Remove the Cell
            cell.Remove();
        }
    } 
    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs e)
    {
        // Do nothing
    }
}
于 2013-02-12T12:34:30.167 に答える