[AccessLogAttribute(Note = "导出条形码箱单 — 条形码")]
public ActionResult ExportContract(string INNER_NO)
{

try
{
string export = "条形码箱单.xls";
CommonResult cr = new CommonResult();
DataSet ds = new DataSet();

//获得表头数据  
DataTable dtHead1 = new DataTable();

//获得方法  具体参数可以根据需要传
dtHead1 = tab1Servcie.QRGetInvoiceFirstHead(INNER_NO, CurrentCorporation.SITE);

//获得表体数据
DataTable dtList1 = new DataTable();
dtList1 = tab1Servcie.QRGetInvoiceFirstList(INNER_NO, CurrentCorporation.SITE);
ds.Tables.Add(dtHead1);
ds.Tables.Add(dtList1);

//导出(需要配置XML)
ds.Tables[0].TableName = "Export_Invoice_QR_HEAD";
ds.Tables[1].TableName = "Export_Invoice_QR_LIST";
Dictionary<string, List<ExportItem>> dicMapping = FileHelper.GetMappingDictionary(this, "WExport.xml", false, "Export_Invoice_QR");
Dictionary<string, string> dicSheetName = new Dictionary<string, string>();
dicSheetName.Add("Export_Invoice_QR", "装箱单");
return Step3(export.Substring(0, export.Length - 4), ds, dicMapping, dicSheetName, GetFilePhysicalPath("/Content/ExportTemplate/Dec/" + export, false), INNER_NO);
}
catch (Exception e)
{
CommonResult cr = new CommonResult();
cr.ErrorMessage = e.Message;
return Json(cr);
}
}

/// <summary>
/// 打印二维码
/// </summary>
/// <param name="fileName"></param>
/// <param name="ds"></param>
/// <param name="dicMapping"></param>
/// <param name="dicSheetName"></param>
/// <param name="tempaltePath"></param>
/// <param name="inner_no">内部编号(数据的标识编号)</param>
/// <returns></returns>
public ActionResult Step3(string fileName, DataSet ds, Dictionary<string, List<ExportItem>> dicMapping, Dictionary<string, string> dicSheetName, string tempaltePath, string inner_no)
{
string path1 = "";
CommonResult commonResult = new CommonResult();
try
{
//地址
string a = Path.GetExtension(tempaltePath);
commonResult.ErrorMessage = NPOIHelper.SaveExcel(fileName, NPOIHelper.ExportToMemoryStream(ds, dicMapping, dicSheetName, tempaltePath, false), Path.GetExtension(tempaltePath));
commonResult.Success = true;
commonResult.Data1 = AppDomain.CurrentDomain.BaseDirectory + commonResult.ErrorMessage;
path1 = commonResult.Data1;
commonResult.ErrorMessage = BaseController.Host + BaseController.ApplicationPath + commonResult.ErrorMessage;
FileStream file = new FileStream(@commonResult.Data1, FileMode.Open, FileAccess.ReadWrite);
HSSFWorkbook excelBook = new HSSFWorkbook(file);
ISheet sheet = excelBook.GetSheet("装箱单");
List<PIDMSHNotifyThird> lists = tab1Servcie.GetThirdList(inner_no, CurrentCorporation.SITE);
//拆分 生产日期 生产批号 数量
Image image;
int width =200, height = 60;
int lastRow = lists.Count * 30;
for (int k = 0; k < lastRow; k++)
{

//创建行 (如果不创建会出现二维码积压覆盖) 
IRow row = sheet.CreateRow(28 + k); //创建行对象 --注意这点
row.HeightInPoints = (float)(0.91 * 15.00);

for (int line = 0; line < 13; line++)
{
ICell cell1 = row.CreateCell(line); //在第二行中创建单元格
ICellStyle style = excelBook.CreateCellStyle();
}
}

//自适应界面
//for (int i = 0; i < lists.Count; i++)
//{
// int _Row = 16;
// int currLine = _Row + i * 4;
// int rowCount = sheet.LastRowNum;
// if (i % 9 == 0 && i != 0)
// {
// currLine = currLine + 4;
// }
// excelBook.SetPrintArea(0, 0, 10, 0, 30);
// //是否自适应界面
// sheet.FitToPage = false;
//}
excelBook.SetPrintArea(0, 0, 10, 0, lastRow);
//是否自适应界面
sheet.FitToPage = false;
int result = 28;

for (int i = 0; i < lists.Count; i++)
{
string[] strCount = null;
if (lists[i].NET_WT_SEP!=null)
{
strCount = lists[i].NET_WT_SEP.Split(','); //数量分批
}
string[] strNo = null;
if (lists[i].PROD_BATCH_NO_SEP!=null)
{
strNo = lists[i].PROD_BATCH_NO_SEP.Split(','); //生产批号分批
}
string[] strDate = null;
if (lists[i].PRODUCE_DATE!=null)
{
strDate = lists[i].PRODUCE_DATE.Split(','); //生产日期分批
}

if (strCount.Length== strNo.Length&& strNo.Length== strDate.Length&& strNo.Length!=0 && strDate!=null && strNo != null && strCount != null)
{

for (int j = 0; j < strCount.Length; j++)
{
//[Display(Name = "客户货号")]
//public string NOTE { get; set; }
if (lists[i].NOTE != null)
{
byte[] note = GetBarcode(height, width, BarcodeLib.TYPE.CODE128, lists[i].NOTE, out image);
sheet.GetRow((j+1) * 4 + result).GetCell(1).SetCellValue(lists[i].NOTE);
int pictureIdx = excelBook.AddPicture(note, PictureType.PNG);
HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(100, 50, 950, 0, 0, result+1 + (j + 1) * 4, 2, result+3 + (j + 1) * 4);
HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
}

// string[] strNo = lists[i].PROD_BATCH_NO_SEP.Split(','); //生产批号分批
if (strNo[j]!= null)
{
byte[] prod = GetBarcode(height, width, BarcodeLib.TYPE.CODE128, strNo[j], out image);
sheet.GetRow((j + 1) * 4 + result).GetCell(4).SetCellValue(strNo[j]);
int pictureIdx1 = excelBook.AddPicture(prod, PictureType.PNG);
HSSFPatriarch patriarch1 = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor1 = new HSSFClientAnchor(300, 50, 900, 0, 3, result + 1+ (j + 1) * 4, 5, result + 3 + (j + 1) * 4);
HSSFPicture pict1 = (HSSFPicture)patriarch1.CreatePicture(anchor1, pictureIdx1);
}

// string[] strCount = lists[i].NET_WT_SEP.Split(','); //数量分批
if (strCount[j] != null)
{
byte[] net_no = GetBarcode(height, width, BarcodeLib.TYPE.CODE128, strCount[j], out image);
sheet.GetRow((j + 1) * 4 + result).GetCell(6).SetCellValue(strCount[j]);
int pictureIdx2 = excelBook.AddPicture(net_no, PictureType.PNG);
HSSFPatriarch patriarch2 = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor2 = new HSSFClientAnchor(300, 50, 500, 0, 6, result + 1 + (j + 1) * 4, 7, result + 3 + (j + 1) * 4);
HSSFPicture pict2 = (HSSFPicture)patriarch2.CreatePicture(anchor2, pictureIdx2);
}

// string[] strDate = lists[i].PRODUCE_DATE.Split(','); //生产日期分批
if (strDate[j] != null)
{
byte[] prodce = GetBarcode(height, width, BarcodeLib.TYPE.CODE128, strDate[j], out image);
sheet.GetRow((j + 1) * 4 + result).GetCell(9).SetCellValue(strDate[j]);
int pictureIdx3 = excelBook.AddPicture(prodce, PictureType.PNG);
HSSFPatriarch patriarch3 = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor3 = new HSSFClientAnchor(300, 50, 500, 0, 8, result + 1 + (j + 1) * 4, 10, result + 3 + (j + 1) * 4);
HSSFPicture pict3 = (HSSFPicture)patriarch3.CreatePicture(anchor3, pictureIdx3);
}
if (j+1== strCount.Length)
{
result = result + (j + 1) * 4;
}

}
}
}

string FileN = "/Temp/Export/" + fileName + CommonHelper.GetGuid() + ".xls";
string path = AppDomain.CurrentDomain.BaseDirectory + FileN;
commonResult.Data1 = path;
commonResult.ErrorMessage = BaseController.Host + BaseController.ApplicationPath + FileN;
FileStream files = new FileStream(@path, FileMode.Append);
excelBook.Write(files);
//释放文件流
file.Close();
file.Dispose();
files.Close();
files.Dispose();
}
catch (Exception ex)
{
commonResult.ErrorMessage = ex.Message;
}
finally
{

}
return base.Json(commonResult, 0);
}

static byte[] GetBarcode(int height, int width, TYPE type, string code, out Image image)
{
image = null;
Barcode b = new Barcode();
b.BackColor = Color.White;
b.ForeColor = Color.Black;
b.IncludeLabel = false;
b.Alignment = AlignmentPositions.CENTER;
b.LabelPosition = LabelPositions.BOTTOMCENTER;
b.ImageFormat = ImageFormat.Jpeg;
Font font = new Font("verdana", 10f);
b.LabelFont = font;
b.Height = height;
b.Width = width;
b.Encode(type, code);
byte[] buffer = b.GetImageData(SaveTypes.JPG);
return buffer;
}

.Net core_Excel 导出二维码(以导出箱单为例)的更多相关文章

  1. PHP生成二维码【谷歌API+qrcode+圆角Logo】

    方法一:谷歌二维码API 接口地址:https://chart.googleapis.com/chart 官方文档:https://developers.google.com/chart/infogr ...

  2. 使用zxing生成二维码 - servlet形式

    因为项目有个功能需要打印二维码,因为我比较喜欢使用html+css+js实现,所以首先想到的是jquery.qrcode.js插件,这个插件可以用canvas和table生成二维码,效果也不错,不过对 ...

  3. 使用ZXing.Net生成与识别二维码(QR Code)

    Google ZXing是目前一个常用的基于Java实现的多种格式的1D/2D条码图像处理库,出于其开源的特性其现在已有多平台版本.比如今天要用到的ZXing.Net就是针对微软.Net平台的版本.使 ...

  4. Java与JS生成二维码

    1.二维码概念 二维码/二维条码是用某种特定的集合图形按一定规律在平面上(二维方向上)分布的黑白相间的图形记录数据符号信息的图片. 黑线是二进制的1,空白的地方是二进制的0,通过1.0这种数据组合用于 ...

  5. 在ts+vue中实现前端批量下载打包二维码

    ---恢复内容开始--- 一.插件安装 首先是插件的安装与引入,这里我们用的是qrcode的这个插件,直接使用npm install qrcodejs2安装即可,但是这里要注意,如果你用的是ts进行开 ...

  6. php生成微信小程序二维码源码

    目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取   access_token public function getWxAccessToken(){ $appid ...

  7. 杂项收集,包括-发邮件、二维码生成、文件下载、压缩、导出excel

    本篇就最近工作解决的问题做个代码收集.包括以下几个方面:发邮件.二维码生成.文件下载.压缩.导出excel.有一种可用的解决方法就好,不求全面,不求原理. 1.发邮件: 命名空间:System.Net ...

  8. [Unity3D]自制UnityForAndroid二维码扫描插件

    一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...

  9. 制作IOS企业版App网页扫描二维码下载安装

    有时候我们需要在XX网站的主页上去扫描二维码下载,那么ios开发中如何做到这一点呢. 我给大家解答一下,这也是在最近工作中用到的部分,在网上了解了一些. 下面给大家分解一下步骤: 1.Plist 和 ...

随机推荐

  1. Xshell6配置ssh免密码登录虚拟机

    首先先说明一下有密码的,涉及到root登陆权限的问题: 1.用超级管理员身份登录,修改 vi  /etc/ssh/sshd_config, 找到 把其中的permitRootLogin 修改成: # ...

  2. Project Euler 56: Powerful digit sum

    一个古戈尔也就是\(10^{100}\)是一个天文数字,一后面跟着一百个零.\(100^{100}\)更是难以想像的大,一后面跟着两百个零.但是尽管这个数字很大,它们各位数字的和却只等于一.考虑两个自 ...

  3. 『题解』Codeforces9D How many trees?

    更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description In one very old text file there was wr ...

  4. Ansibile之playbook初识

    一.playbook简介 ansiblie的任务配置文件被称为playbook,俗称“剧本”,每一个剧本(playbook)中都包含了一系列的任务,这每个任务在ansible中又被称为“戏剧”(pla ...

  5. [综合] ISE的综合结果

    1.count2 == 7‘d12,会被综合成下面这个样子, 7‘d12就是左边下面这根绿线,等于符号在中间的圆圈里. 2.什么线都不点的时候,也就什么也没被选中, 而一旦我点击了某根线,却发现图里到 ...

  6. [LC]203题 Remove Linked List Elements (移除链表元素)(链表)

    ①英文题目 Remove all elements from a linked list of integers that have value val. Example: Input: 1-> ...

  7. Mongodb自动备份数据库并删除指定天数前的备份

    1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...

  8. nyoj 92-图像有用区域 (BFS)

    92-图像有用区域 内存限制:64MB 时间限制:3000ms 特判: No 通过数:4 提交数:12 难度:4 题目描述: “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取 ...

  9. 领扣(LeetCode)交替位二进制数 个人题解

    给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等. 示例 1: 输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2: 输入: 7 输出 ...

  10. [机器学习笔记]kNN进邻算法

    K-近邻算法 一.算法概述 (1)采用测量不同特征值之间的距离方法进行分类 优点: 精度高.对异常值不敏感.无数据输入假定. 缺点: 计算复杂度高.空间复杂度高. (2)KNN模型的三个要素 kNN算 ...