.Net core_Excel 导出二维码(以导出箱单为例)
[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 导出二维码(以导出箱单为例)的更多相关文章
- PHP生成二维码【谷歌API+qrcode+圆角Logo】
方法一:谷歌二维码API 接口地址:https://chart.googleapis.com/chart 官方文档:https://developers.google.com/chart/infogr ...
- 使用zxing生成二维码 - servlet形式
因为项目有个功能需要打印二维码,因为我比较喜欢使用html+css+js实现,所以首先想到的是jquery.qrcode.js插件,这个插件可以用canvas和table生成二维码,效果也不错,不过对 ...
- 使用ZXing.Net生成与识别二维码(QR Code)
Google ZXing是目前一个常用的基于Java实现的多种格式的1D/2D条码图像处理库,出于其开源的特性其现在已有多平台版本.比如今天要用到的ZXing.Net就是针对微软.Net平台的版本.使 ...
- Java与JS生成二维码
1.二维码概念 二维码/二维条码是用某种特定的集合图形按一定规律在平面上(二维方向上)分布的黑白相间的图形记录数据符号信息的图片. 黑线是二进制的1,空白的地方是二进制的0,通过1.0这种数据组合用于 ...
- 在ts+vue中实现前端批量下载打包二维码
---恢复内容开始--- 一.插件安装 首先是插件的安装与引入,这里我们用的是qrcode的这个插件,直接使用npm install qrcodejs2安装即可,但是这里要注意,如果你用的是ts进行开 ...
- php生成微信小程序二维码源码
目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取 access_token public function getWxAccessToken(){ $appid ...
- 杂项收集,包括-发邮件、二维码生成、文件下载、压缩、导出excel
本篇就最近工作解决的问题做个代码收集.包括以下几个方面:发邮件.二维码生成.文件下载.压缩.导出excel.有一种可用的解决方法就好,不求全面,不求原理. 1.发邮件: 命名空间:System.Net ...
- [Unity3D]自制UnityForAndroid二维码扫描插件
一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...
- 制作IOS企业版App网页扫描二维码下载安装
有时候我们需要在XX网站的主页上去扫描二维码下载,那么ios开发中如何做到这一点呢. 我给大家解答一下,这也是在最近工作中用到的部分,在网上了解了一些. 下面给大家分解一下步骤: 1.Plist 和 ...
随机推荐
- linux4.1内核配置以及编译及千兆网卡dp83867网卡驱动移植
一 内核配置编译 1首先解压内核 tar jxvf linux-at91-4.1.tar.bz2: 2下载编译链 在ubuntu命令行中输入sudo apt-get install gcc-arm- ...
- 2019年10月13日 计算机英语习题 wangqingchao
Match the explanations in Column B with words and expressions in Columna. (搭配每组中意义相同的词或短语) Types of ...
- ctf misc 学习总结大合集
0x00 ext3 linux挂载光盘,可用7zip解压或者notepad搜flag,base64解码放到kali挂载到/mnt/目录 mount 630a886233764ec2a63f305f31 ...
- [LC]141题 Intersection of Two Linked Lists (相交链表)(链表)
①中文题目 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 注意: 如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构.可假定整 ...
- 4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了)
你好,我是彤哥,本篇是netty系列的第四篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们一起学习了Java中的BIO/NIO/AIO的故事,本章将带着大家一起使 ...
- nyoj 37-回文字符串(reverse, 动态规划, lcs)
37-回文字符串 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:10 submit:17 题目描述: 所谓回文字符串,就是一个字符串,从左到右读和从 ...
- suseoj 1209: 独立任务最优调度问题(动态规划)
1209: 独立任务最优调度问题 时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版][命题人:liyuansong] 题目描述 用2台处理机A和B处理 ...
- 深度剖析Javascript执行环境、作用域链
一.执行环境 执行环境(也叫做执行上下文,Execution Context)是Javascript中最为重要的一个概念.执行环境定义了变量或函数有权访问其他数据,决定了它们各自的行为.每个执行环境都 ...
- Ubuntu 16.04 更改apt源
1 修改apt源配置文件,把/etc/apt/sources.list替换为以下内容: sudo gedit /etc/apt/sources.list deb http://mirrors.aliy ...
- PHP的两种选择防止sql注入
1.使用PDO: $stmt = $pdo->prepare('SELECT * FROM user WHERE name = :name'); $stmt->execute(array( ...