26.07.2016, 16:27 | #1 |
Программатор
|
QRCode в Excel их Ax12
Коллеги, доброго дня!
Подскажите как то можно выгружать "по человечески" QRCode в Эксель? Или нужно генерировать его картинку, сохранять на диск, вставлять картинку в Эксель, потом удалять картинку с диска? QRCode, по сути, это код номенклатуры в отчёте. Заранее спасибо! |
|
26.07.2016, 17:25 | #2 |
Участник
|
Добрый день, можно попробовать воспользоваться буфером обмена.
Не знаю кто писал, у нас есть такой метод в классе ComExcelDocument_RU Не знаю как под 12ку, но думаю что-то подобное можно адаптировать. вызывается так X++: excel.insertImage('companyLogo', companyImage.Image, false, 230); X++: public void insertImage( MSOfficeBookMark_RU _bookMark, Bitmap _bitmap, boolean _transparent = false, int _incrementLeft = 0, int _incrementTop = 0, int _workSheet = 1) { COM XLSWorkSheet, XLSrange; Image image; COM comApplication, shape, pf; ; if (!_bitmap) return; XLSWorkSheet = this.getWorkSheet(_workSheet); if (!XLSWorkSheet) throw error("@DIS6043"); XLSrange = this.findRange(_bookMark); if (!XLSrange) throw error("@SYS27391"); XLSrange.select(); image = new Image(); image.setData(_bitmap); image.clipboardCopy(); XLSWorkSheet.pasteSpecial(0); comApplication = m_comDocument.application(); shape = comApplication.Selection(); shape = shape.ShapeRange(); if (_incrementLeft) shape.IncrementLeft(_incrementLeft); if (_incrementTop) shape.IncrementTop(_incrementTop); if (_transparent) { pf = shape.PictureFormat(); pf.TransparentBackground(-1); pf.TransparencyColor(WinAPI::RGB2int(255,255,255)); } } |
|
|
За это сообщение автора поблагодарили: Logger (1), Sada (1), arhat (1). |
27.07.2016, 10:27 | #3 |
Программатор
|
Вот как то так
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(); } } |
|
Теги |
qrcode |
|
|