从数据库加载图片并呈现在Spread里

Spread提供了数据绑定功能,它允许可以绑定Spread到不同类型的数据源。Spread加载数据库中图像的方法理论如下:把保存在数据库中的字节数组转换为位图图像,在位图图像创建后,它被保存在项目文件夹下,以便它可以被Spread直接访问。

发布于 2013/12/06 00:00

SpreadJS

Spread提供了数据绑定功能,它允许可以绑定Spread到不同类型的数据源。请参考下面的链接,介绍如何绑定Spread到数据源:

http://helpcentral.componentone.com/NetHelp/SpreadNet6/ASP2/spweb-databound.html

数据库中的数据多种多样,从text到boolean、images。由此,Spread加载不同类型的数据映射为不同的列类型(celltypes)。例如:textual文本数据类型被映射为TextCellType类型,数字类型被映射为CurrencyCellType、IntegerCellType或DoubleCellType类型。

但是,存储在数据库中的images数据不能给直接映射加载。Images在数据库中存储的格式为byte[], 因此Spread加载后会映射为字节流对象。本文接着讨论Spread中如何加载Images数据类型。

Spread加载数据库中图像的方法理论如下:把保存在数据库中的字节数组转换为位图图像,在位图图像创建后,它被保存在项目文件夹下,以便它可以被Spread直接访问。

以下是代码片段:

  1: OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(@"\App_Data\C1NWind.mdb"));
  2: OleDbCommand comm = new OleDbCommand("Select FirstName, Photo from Employees", conn);
  3: OleDbDataAdapter adap = new OleDbDataAdapter(comm);
  4: System.Data.DataSet ds = new System.Data.DataSet();
  5: adap.Fill(ds);
  6: FpSpread1.DataSource = ds;
  7: int index = 0;
  8: foreach (DataRow dr in ds.Tables[0].Rows)
  9: {
 10:      //Code to save the binary image to an image file in the website folder
 11:      barr = (byte[])ds.Tables[0].Rows[index][1];
 12:      TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
 13:      Bitmap bm = (Bitmap)tc.ConvertFrom(barr);
 14:      bm.Save(Server.MapPath("~/Images/Image" + (index + 1).ToString() + ".jpg"));
 15: }
 16: 

最后,你需要修改加载图片的单元格的celltype为ImageCellType,用于在Spread中呈现images。 请通过如下链接了解更多细节:

http://helpcentral.componentone.com/NetHelp/SpreadNet6/ASP2/spweb-setimagecell.html

如上链接所示,ImageCellType类的ImageURL属性用于加载图片,

正如上面的链接所述,ImageCellType的单元格的ImageUrl属性用于加载图像。因此,只要将特定的图像URL到ImageUrl。你将为每个单元创建ImageCellType的一个新实例,作为每个单元格中被加载的新图像。

以下是代码片段描述:

  1: //Code to load the image into the Spread cell
  2: FpSpread1.ActiveSheetView.Cells[index, 1].Value = null;
  3: FarPoint.Web.Spread.ImageCellType ict = new FarPoint.Web.Spread.ImageCellType();
  4: ict.TextOnRight = false;
  5: ict.ImageAlign = ImageAlign.AbsMiddle;
  6: ict.ImageUrl = "~/Images/Image" + (index + 1).ToString() + ".jpg";
  7: FpSpread1.ActiveSheetView.Cells[index, 1].CellType = ict;
  8: 

 

代码如下:

 

 

 

SpreadJS | 下载试用

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

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

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

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

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