Spread ASP.NET自定义条形码CellType

用Spread ASP.NET来实现条形码CellType。本文选择的是Aspose条形码生成器.NET控件(可生成任何条码生成器)。<a href="http://www.grapecity.com.cn/image.ashx?picture=barcode-300x152.jpg"><img title="barcode-300x152" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="barcode-300x152" src="http://www.grapecity.com.cn/image.ashx?picture=barcode-300x152.jpg" width="463" height="237" /></a>

发布于 2014/01/29 00:00

SpreadJS

正如您所知,Spread是非常灵活的,当涉及到自定义单元格类型的时候--即使条形码单元格并不是Spread原生的。用ASP.NET的创建它将是一个非常轻便的任务。本文选择的是Aspose条形码生成器.NET控件(可生成任何条码生成器)。当然您也可以使用一个在线生成器:传递一个查询字符串的URL即可。

barcode-300x152

首先,我们自定义一个BarcodeCellType:

  1: [Serializable()]
  2: public class BarcodeCellType : FarPoint.Web.Spread.TextCellType
  3: {
  4:  public override Control PaintCell(string id, TableCell parent, Appearance style, Inset margin, object value, bool upperLevel)
  5:  {
  6:   parent.Attributes.Add("FpCellType", "BarcodeCellType");
  7:   ApplyStyleTo(parent, style, margin, true);
  8:  
  9:   System.Web.UI.WebControls.Image c = new System.Web.UI.WebControls.Image();
 10:   c.AlternateText = "";
 11:   c.ImageUrl = "~/bcimagemanager.aspx?value=" + value.ToString();
 12:   return c;
 13:  }
 14: }

 

我们继承了TextCellType, 因为它GetEditorControl类是可接受单元格的编辑模式字符串值,我们还需要override就是paintCell函数。

通过后台代码生成barecode图片。 添加一个新的ASPX页面到。在这个新页面的服务器端代码,我们将引用的产生我们的条码图像组件:

  1: using Aspose.BarCode;

 

  1: public partial class bcimagemanager : System.Web.UI.Page
  2:  {
  3:   protected void Page_Load(object sender, EventArgs e)
  4:   {
  5:    if (Request.QueryString["value"].ToString() == null) return;
  6:    byte[] imgContent = GenerateBarCode(Request.QueryString["value"].ToString());
  7:    Response.ContentType = "image/jpeg";
  8:    Response.BinaryWrite(imgContent);
  9:   }
 10: public byte[] GenerateBarCode(string codeInfo)
 11:   {
 12:   using (MemoryStream ms = new MemoryStream())
 13:    {
 14:     BarCodeBuilder bb = new BarCodeBuilder();
 15:     bb.CodeText = codeInfo;
 16:     bb.SymbologyType = Symbology.Code128;
 17:     bb.BarCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
 18:     byte[] imgContent = new Byte[ms.Length];
 19:     ms.Position = 0;
 20:     ms.Read(imgContent, 0, (int)ms.Length);
 21:     return imgContent;
 22:    }
 23:   }
 24:  }
 25: 

 

使用URL中的查询字符串,我们将单元格的值传递给这个aspx页面。图像在页面上生成的页面的URL是由Image控件的ImageUrl属性引用。

见源码:

SpreadJS | 下载试用

纯前端表格控件SpreadJS,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,备受华为、苏宁易购、天弘基金等行业龙头企业的青睐,并被中国软件行业协会认定为“中国优秀软件产品”。SpreadJS 可为用户提供类 Excel 的功能,满足表格文档协同编辑、 数据填报、 类 Excel 报表设计等业务场景需求,极大的降低企业研发成本和项目交付风险。

如下资源列表,可以为您评估产品提供帮助:

相关产品
推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态