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