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;
}
}
}