Вот как то так
X++:
public void processInExcelAfter()
{
DataMatrix.net.DmtxImageEncoder encoder;
DataMatrix.net.DmtxImageEncoderOptions options;
System.Drawing.Bitmap bitmap;
BinData bindata;
System.IO.MemoryStream memoryStream;
Binary binary;
SCMDeliverySchedId deliverySchedId;
SetEnumerator se;
;
if (!QRCodeContainerSet.empty())
{
new InteropPermission(InteropKind::ClrInterop).assert();
bindata = new BinData();
encoder = new DataMatrix.net.DmtxImageEncoder();
options = new DataMatrix.net.DmtxImageEncoderOptions();
options.set_Encoding(System.Text.Encoding::get_UTF8());
se = QRCodeContainerSet.getEnumerator();
while (se.moveNext())
{
[currentRow, deliverySchedId] = se.current();
try
{
memoryStream = new System.IO.MemoryStream();
bitmap = new System.Drawing.Bitmap(encoder.EncodeImage(deliverySchedId, options));
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat::get_Bmp());
binary = Binary::constructFromMemoryStream(memoryStream);
bindata.setBinaryData(binary);
excelDocument.insertImage(ComExcelDocument_RU::numToNameCell(2, currentRow), bindata.getData(), 5,5);
}
catch (Exception::CLRError)
{
//BP Deviation documented
error(CLRInterop::getLastException().ToString());
}
}
CodeAccessPermission::revertAssert();
}
}