2012-11-15 90 views
3

使用Visual Studio終極2012.報表查看器從窗體傳遞圖像可能嗎?

我目前正在建立一個報告,在報告查看器中打印。到目前爲止,我有一堆文本框,通過參數從我的表單文本框中獲取它的值。

到目前爲止一切正常。

然後我遇到了一個主要問題。如何將圖片從我的圖片上傳到報表上的圖片上? 1圖像pre存在一個數據庫我beleive我可以調用圖像作爲參數(不知道)。更大的問題是其他圖像。

其他圖像使用生成QR圖像的外部API。此圖像在運行時顯示在窗體上的圖片框中。 我不希望將圖像保存在任何我不喜歡的地方。但我明白如果我可能需要。有什麼辦法可以將我的表格上的圖像框中的QR圖像傳遞給我的報告圖像框?

更新繼承人的錯誤代碼:在設置參數部分的所有它說,發生

Microsoft.Reporting.WinForms.ReportParameter rpIMG1 = new Microsoft.Reporting.WinForms.ReportParameter("paramQRimg", base64String); 
Microsoft.Reporting.WinForms.ReportParameter rpIMG2 = new Microsoft.Reporting.WinForms.ReportParameter("paramQRMi", "image/png"); 

reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp1, rp2, rp3, rp4, rp5, rp6, rp7, rp8, rp9, rp10, rpIMG1, rpIMG2 }); 

錯誤是:

An error occurred during local report processing. 

不知道爲什麼它不喜歡這種

+0

將您的參數設置爲一個一個reportViewer.LocalReport.SetParameters(paramLogo); – Talha

回答

5
public string ImageToBase64(Image image, 
    System.Drawing.Imaging.ImageFormat format) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
    // Convert Image to byte[] 
    image.Save(ms, format); 
    byte[] imageBytes = ms.ToArray(); 

    // Convert byte[] to Base64 String 
    string base64String = Convert.ToBase64String(imageBytes); 
    return base64String; 
    } 
} 

將圖像轉換爲base64字符串,然後將其作爲參數傳遞給您的報告,然後將Report圖像設置爲這個參數。

+0

如果這工作,我欠你一杯飲料!生病去試試吧!非常感謝! – lemunk

+0

對不起,只是再看看這個我不知道我的圖像被稱爲?我的圖像在運行時生成並放入我的表單的圖片框中。文件名是什麼? – lemunk

+0

@StevenSmith好吧,嘗試更新的函數轉換爲基礎64 – Talha

0

空隙標題(){ 嘗試 { 字符串名稱= 「」; string address =「」; string phone =「」; string mobile =「」; string establish =「」;

  db.sql.Close(); 
      db.sql.Open(); 
      SqlCommand cmd = new SqlCommand("select * from print_head", db.sql); 
      SqlDataReader read = cmd.ExecuteReader(); 
      while (read.Read()) 
      { 
       name = read[1].ToString(); 
       address = read[2].ToString(); 
       phone = read[3].ToString(); 
       mobile = read[4].ToString(); 
       establish = read[5].ToString(); 
       MemoryStream ms = new MemoryStream((byte[])read[6]); 
       logo = Image.FromStream(ms); 
       try 
       { 

         // Convert Image to byte[] 

         byte[] imageBytes = ms.ToArray(); 

         // Convert byte[] to Base64 String 
         base64String = Convert.ToBase64String(imageBytes); 

       } 
       catch(Exception ex) 
       { 
        MessageBox.Show(ex.ToString()); 
       } 
      } 
      ReportParameterCollection r = new ReportParameterCollection(); 
      r.Add(new ReportParameter("name", name.ToString())); 
      r.Add(new ReportParameter("address", address.ToString())); 
      r.Add(new ReportParameter("phone", phone.ToString())); 
      r.Add(new ReportParameter("mobile", mobile.ToString())); 
      r.Add(new ReportParameter("establish", establish.ToString())); 
      r.Add(new ReportParameter("logo", base64String.ToString())); 

      this.reportViewer1.LocalReport.SetParameters(r); 
      db.sql.Close(); 
     } 
     catch 
     { 

     } 
    } 
+0

這對我很有用 –

相關問題