Epplus添加“条形码图片”问题

问题描述

我正在尝试使用Epplus将BarCode插入excel中的单元格中。

这是一个ASP.NET MVC项目。

使用以下代码

using System.IO;
using System.Web.Mvc;
using EmployeeIDBarcodeGeneration.Models;
using OfficeOpenXml;
using ZXing;   
public void ExportExcel()
        {
            List<EmployeeID> EmployeeIDs = new List<EmployeeID> {
                new EmployeeID { EmployeeName="Employee A",EmployeeIDnumber="A222"},new EmployeeID { EmployeeName ="Employee B",EmployeeIDnumber = "A333" },new EmployeeID { EmployeeName ="Employee C",EmployeeIDnumber = "A444" }
            };

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            ExcelPackage pck = new ExcelPackage();
            ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Report");

            ws.Cells["A1"].Value = "EmployeeName";
            ws.Cells["B1"].Value = "EmployeeIDnumber";
            ws.Cells["C1"].Value = "Barcode";
          
            int rowStart = 2;
            BarcodeWriter bw = new BarcodeWriter();
            bw.Format = BarcodeFormat.CODE_39;
            bw.Options.Width = 200;
            bw.Options.Height = 100;
            bw.Options.PureBarcode = false;
           
            foreach (var item in EmployeeIDs)
            {
                ws.Cells[string.Format("A{0}",rowStart)].Value = item.EmployeeName;
                ws.Cells[string.Format("B{0}",rowStart)].Value = item.EmployeeIDnumber;
                Bitmap bitmap = bw.Write(item.EmployeeIDnumber);
                var picture = ws.Drawings.AddPicture(item.EmployeeIDnumber,bitmap);
                ws.Cells[string.Format("C{0}",rowStart)].Value = picture;
                rowStart++;               
            }
            ws.Cells["A:AZ"].AutoFitColumns();
            Response.Clear();
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AppendHeader("content-disposition","attachment;filename=" + "ExcelReport.xlsx");
            Response.BinaryWrite(pck.GetAsByteArray());
            Response.End();
        }

但是条形码图像无法正确放置在单元格中。

我该怎么办?

谢谢!!

解决方法

您需要设置图表位置:

picture.SetPosition(rowStart-1,2,0);

完整的代码:

public void DownloadExcelFile()
        {
            List<EmployeeID> EmployeeIDs = new List<EmployeeID> {
                new EmployeeID { EmployeeName="Employee A",EmployeeIDnumber="A222"},new EmployeeID { EmployeeName ="Employee B",EmployeeIDnumber = "A333" },new EmployeeID { EmployeeName ="Employee C",EmployeeIDnumber = "A444" }
            };

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            ExcelPackage pck = new ExcelPackage();
            ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Report");

            ws.Cells["A1"].Value = "EmployeeName";
            ws.Cells["B1"].Value = "EmployeeIDnumber";
            ws.Cells["C1"].Value = "Barcode";

            int rowStart = 2;
            BarcodeWriter bw = new BarcodeWriter();
            bw.Format = BarcodeFormat.CODE_39;
            bw.Options.Width = 200;
            bw.Options.Height = 40;
            bw.Options.PureBarcode = false;

            foreach (var item in EmployeeIDs)
            {
                string STsrc = "/Home/BarCodeImg?code=" + item.EmployeeIDnumber + "&width=300&height=50";
                ws.Cells[string.Format("A{0}",rowStart)].Value = item.EmployeeName;
                ws.Cells[string.Format("B{0}",rowStart)].Value = item.EmployeeIDnumber;
                Bitmap bitmap = bw.Write(item.EmployeeIDnumber);
                var picture = ws.Drawings.AddPicture(item.EmployeeIDnumber,bitmap);
                picture.SetPosition(rowStart-1,0);
                rowStart++;
            }
            ws.Cells["A:AZ"].AutoFitColumns();
            Response.Clear();
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AppendHeader("content-disposition","attachment;filename=" + "ExcelReport.xlsx");
            Response.BinaryWrite(pck.GetAsByteArray());
            Response.End();

        }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...