MVC4:将qrcode图像导出到Excel工作表

时间:2014-03-05 15:25:46

标签: c# asp.net excel asp.net-mvc-3 asp.net-mvc-4

我想在我的表格中导出带有qr-code图像的Excel工作表。 qrcode使用序列号保存,然后使用google apis生成它。我在返回MvcHtmlString的控制器中执行此操作,并在我的视图中使用它,如@Html.QRCode(item.SerialNumber, 80, 0) 它在我看来很有效。

我的控制器

  public static MvcHtmlString QRCode(this HtmlHelper htmlHelper, string data, int size = 80, int margin = 4, QRCodeErrorCorrectionLevel errorCorrectionLevel = QRCodeErrorCorrectionLevel.Low, object htmlAttributes = null)
{
    if (data == null)
        throw new ArgumentNullException("data");
    if (size < 1)
        throw new ArgumentOutOfRangeException("size", size, "Must be greater than zero.");
    if (margin < 0)
        throw new ArgumentOutOfRangeException("margin", margin, "Must be greater than or equal to zero.");
    if (!Enum.IsDefined(typeof(QRCodeErrorCorrectionLevel), errorCorrectionLevel))
        throw new InvalidEnumArgumentException("errorCorrectionLevel", (int)errorCorrectionLevel, typeof(QRCodeErrorCorrectionLevel));

    var url = string.Format("http://chart.apis.google.com/chart?cht=qr&chld={2}|{3}&chs={0}x{0}&chl={1}", size, HttpUtility.UrlEncode(data), errorCorrectionLevel.ToString()[0], margin);

    var tag = new TagBuilder("img");
    if (htmlAttributes != null)
        tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
    tag.Attributes.Add("src", url);
    tag.Attributes.Add("width", size.ToString());
    tag.Attributes.Add("height", size.ToString());

    return new MvcHtmlString(tag.ToString(TagRenderMode.SelfClosing));
}

要导出Excel工作表,请执行以下操作:

  1. 创建网格
  2. 为其提供所需数据的数据源。
  3. 我给网格视图的qrcode数据是

    data.QRcode = atm.SerialNumber;

    它实际上得到qrcode的字符串如何获取其代码的qrcode图像,就像在我看来我使用

    @Html.QRCode(item.SerialNumber, 80, 0)

    注意:我需要任何可以获得qrcode图像和其他数据的解决方案。

    更新:我到达了图像的来源,然后根据图像的来源,如果有任何解决方案如何在Excel工作表中显示图像。 详细步骤: 1-获取图像的链接,如谷歌apis

    System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();
    
                image.ImageUrl = url;
                image.Width = 80;
                image.Height = 80;
                atm2.QRcode = image;
    

    但此列未显示在导出的Excel工作表

    感谢您的帮助。

0 个答案:

没有答案