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 /// /// //线程锁防止并发 /// private static Mutex single = new Mutex(); /// /// 生成打印数据源 /// /// 条形码 /// 标签参数 /// 成功返回true 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; } } }