|   | 
| using iWareCommon.Utils; | 
| using OfficeOpenXml; | 
| using OfficeOpenXml.Drawing; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Drawing; | 
| using System.IO; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading; | 
| using System.Threading.Tasks; | 
|   | 
| namespace autuPrint.printService | 
| { | 
|     public class creatExcelPrint | 
|     { | 
|         //1.cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 | 
|         //2.InstallUtil.exe  D:\wms\checkDebug\Debug\siemensSapService.exe 找到自己的服务地址 | 
|         //启动服务 net start IWareCC | 
|         //停止服务 net stop  IWareCC | 
|         //卸载服务 sc delete IWareCC | 
|         /// <summary> | 
|         /// //线程锁防止并发 | 
|         /// </summary> | 
|         private static Mutex single = new Mutex(); | 
|         /// <summary> | 
|         /// 生成打印数据源 | 
|         /// </summary> | 
|         /// <param name="img">条形码</param> | 
|         ///   <param name="label">标签参数</param> | 
|         /// <returns>成功返回true</returns> | 
|         public static bool creatEXcel(Image img, labelEntity label, string baCode) | 
|         { | 
|             if (single.WaitOne())//增加线程锁防止双击并发 | 
|             { | 
|   | 
|                 try | 
|                 { | 
|                     #region 验证模板文件是否存在 | 
|                     if (!File.Exists(@"C:\autoPrint\标签模板.xlsx")) | 
|                     { | 
|                         Log4NetHelper.WriteErrorLog(LogType.Print, "类名: creatExcelPrint 方法名: creatEXcel 模板缺失", null); | 
|                         return false; | 
|   | 
|                     } | 
|                     if (img == null) | 
|                     { | 
|                         Log4NetHelper.WriteErrorLog(LogType.Print, "类名: creatExcelPrint 方法名: creatEXcel 标签条形码为空", null); | 
|                         return false; | 
|                     } | 
|                     if (label == null) | 
|                     { | 
|                         Log4NetHelper.WriteErrorLog(LogType.Print, "类名: creatExcelPrint 方法名: creatEXcel 标签参数为空", null); | 
|                         return false; | 
|                     } | 
|                     #endregion | 
|                     //获取模板文件 | 
|                     FileInfo copyFile = new FileInfo(@"C:\autoPrint\标签模板.xlsx"); | 
|                     copyFile.CopyTo(@"D:\临时.xlsx", true); | 
|                     FileInfo existingFile = new FileInfo(@"D:\临时.xlsx"); | 
|                     using (ExcelPackage package = new ExcelPackage(existingFile)) | 
|                     { | 
|                         //获取模板内容 | 
|                         ExcelWorksheet worksheet = package.Workbook.Worksheets["Sheet1"]; | 
|                         worksheet.Cells[2, 3].Value = baCode;//条形号码 | 
|                         worksheet.Cells[3, 2].Value = label.purchaseOrder;//采购单号 | 
|                         worksheet.Cells[3, 4].Value = label.purchaseOrderItem;//采购项号 | 
|                         worksheet.Cells[4, 2].Value = label.materailCode;//物料单号 | 
|                         worksheet.Cells[4, 4].Value = label.trackNumber;//跟踪号 | 
|                         worksheet.Cells[5, 2].Value = label.materarilName;//物料名称 | 
|                         worksheet.Cells[6, 2].Value = label.quantity;//数量 | 
|                         worksheet.Cells[6, 4].Value = label.Unit;//库存单位 | 
|                         worksheet.Cells[7, 2].Value = label.saleCode;//销售单号 | 
|                         worksheet.Cells[7, 4].Value = label.saleCodeItem;//销售项号 | 
|                         worksheet.Cells[8, 2].Value = label.receivDate;//收货日期 | 
|                         worksheet.Cells[8, 4].Value = label.expireDate;//到期日期 | 
|                         worksheet.Cells[9, 2].Value = label.supplierName;//供应商名称 | 
|                         ExcelPicture pic = worksheet.Drawings.AddPicture("barCode", img);//插入图片 | 
|                         pic.SetSize(180, 35);//设置图片尺寸 | 
|                         pic.SetPosition(0, 5, 2, 5);//设置图片位置,以单元格为单位(参数1,3行和列,2,4是偏移量) | 
|                         package.Save();//保存 | 
|                     } | 
|                 } | 
|                 catch (Exception ex) | 
|                 { | 
|                     Log4NetHelper.WriteErrorLog(LogType.Print, "类名: creatExcelPrint 方法名: creatEXcel 生成打印文件出错 \r\n  " + ex.ToString(), ex); | 
|                     return false; | 
|                 } | 
|                 finally { single.ReleaseMutex(); }//一轮结束 | 
|             } | 
|             return true; | 
|         } | 
|     } | 
| } |