Spire.XLS is a professional Excel API that enables developers to create, manage, manipulate, convert and print Excel worksheets. Get free and professional technical support for Spire.XLS for .NET, Java, Android, C++, Python.

Mon Jan 25, 2021 7:37 pm

Hello,

Is it possible to create programmatically image merge field like this:

Code: Select all
{IF {INCLUDEPICTURE {IF TRUE "{MERGEFIELD Picture}"} \d} {INCLUDEPICTURE {IF TRUE "{MERGEFIELD Picture}"} \d}}


Regards

profiler007
 
Posts: 72
Joined: Wed Nov 13, 2019 11:32 am

Tue Jan 26, 2021 10:31 am

Hello,

Thanks for your inquiry!

Our Spire.Doc supports to create the nested image merge field you provided programmatically. But I found something wrong when I make the demo for you and I have posted it to our Dev team for further investigation. I will offer you a demo ASAP.

Thanks for your patience and cooperation.

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Wed Jan 27, 2021 6:32 am

Hello,

Thanks for your patience!

Please refer to the following code to create the nested image merge field you provided programmatically.
Code: Select all
            Document newDoc = new Document();
            Section section = newDoc.AddSection();
            Paragraph paragraph = section.AddParagraph();

            //The first IF field
            IfField ifField = new IfField(newDoc);
            ifField.Type = FieldType.FieldIf;
            ifField.Code = "IF ";
            paragraph.ChildObjects.Add(ifField);
           
            //Picture Field
            Field PicField = new Field(newDoc);
            PicField.Type = FieldType.FieldIncludePicture;
            PicField.Code = "INCLUDEPICTURE";
            paragraph.ChildObjects.Add(PicField);

            //The embedded IF field
            IfField ifField2 = new IfField(newDoc);
            ifField2.Type = FieldType.FieldIf;
            ifField2.Code = "IF TRUE \"";
            paragraph.ChildObjects.Add(ifField2);

            //the merge field
            MergeField mergeField = new MergeField(newDoc);
            mergeField.Type = FieldType.FieldMergeField;
            mergeField.Code = "MERGEFIELD Picture";
            mergeField.FieldText = "Picture";
            paragraph.ChildObjects.Add(mergeField);

            TextRange textRange2 = new TextRange(newDoc);
            textRange2.Text = "\" ";
            paragraph.ChildObjects.Add(textRange2);

            FieldMark ifField2Mark = new FieldMark(newDoc, FieldMarkType.FieldEnd);
            ifField2.End = ifField2Mark;
            paragraph.ChildObjects.Add(ifField2Mark);

            TextRange textRange = new TextRange(newDoc);
            textRange.Text = " \\d ";
            paragraph.ChildObjects.Add(textRange);

            FieldMark picFieldMark = new FieldMark(newDoc, FieldMarkType.FieldEnd);
            PicField.End = picFieldMark;
            paragraph.ChildObjects.Add(picFieldMark);

            //Picture Field2
            Field PicField2 = new Field(newDoc);
            PicField2.Type = FieldType.FieldIncludePicture;
            PicField2.Code = "INCLUDEPICTURE";
            paragraph.ChildObjects.Add(PicField2);

            //The embedded IF field
            IfField ifField3 = new IfField(newDoc);
            ifField3.Type = FieldType.FieldIf;
            ifField3.Code = "IF TRUE \"";
            paragraph.ChildObjects.Add(ifField3);

            //the merge field
            MergeField mergeField2 = new MergeField(newDoc);
            mergeField2.Type = FieldType.FieldMergeField;
            mergeField2.Code = "MERGEFIELD Picture";
            mergeField2.FieldText = "Picture";
            paragraph.ChildObjects.Add(mergeField2);

            TextRange textRange3 = new TextRange(newDoc);
            textRange3.Text = "\" ";
            paragraph.ChildObjects.Add(textRange3);

            FieldMark ifField3Mark = new FieldMark(newDoc, FieldMarkType.FieldEnd);
            ifField3.End = ifField3Mark;
            paragraph.ChildObjects.Add(ifField3Mark);

            TextRange textRange4 = new TextRange(newDoc);
            textRange4.Text = " \\d ";
            paragraph.ChildObjects.Add(textRange4);

            FieldMark picField2Mark = new FieldMark(newDoc, FieldMarkType.FieldEnd);
            PicField2.End = picField2Mark;
            paragraph.ChildObjects.Add(picField2Mark);

            FieldMark ifFieldMark = new FieldMark(newDoc, FieldMarkType.FieldEnd);
            ifField.End = ifFieldMark;
            paragraph.ChildObjects.Add(ifFieldMark);


            string result = "output.docx";
            newDoc.SaveToFile(result, FileFormat.Docx2013);


If you encounter any issues related to our product in the future, just feel free to contact us.

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Wed Jan 27, 2021 11:36 am

Thanks for the quick reply! Will try it soon.

profiler007
 
Posts: 72
Joined: Wed Nov 13, 2019 11:32 am

Thu Jan 28, 2021 1:08 am

Hello,

You are welcome!

If you encounter any issues related to our product in the future, just feel free to contact us.

Have a nice day!

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Sun Feb 07, 2021 10:06 am

Hello,

Hope you are doing well!

Has the issue been solved now? Could you please give us some feedback at your convenience?

Thanks in advance.

Sincerely,
Marcia
E-iceblue support team
User avatar

Marcia.Zhou
 
Posts: 858
Joined: Wed Nov 04, 2020 2:29 am

Return to Spire.XLS