2016-03-24 29 views
0

Bazı görüntülerle ilgili bir veritabam var, bu veri tabanını excel veya word'e dışa aktarmaya çalışıyorum, aşağıdaki kodu görüntü dışa aktarmıyor, resimlerle veritabamı nasıl dışa aktarabilirim?Verileri dışa aktarma veya görüntülerle Word'e dışa aktarma

Response.Clear(); 
Response.Buffer = true; 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.docx"); 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.Charset = ""; 
Response.ContentType = "application/ms-word "; 
StringWriter sw = new StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(sw); 
string str1 = string.Empty;  
foreach (DataColumn dtcol in dt2.Columns) 
{ 
    Response.Write(str1 + dtcol.ColumnName); 
    str1 = "\t";   
} 
Response.Write("\n"); 
foreach (DataRow dr1 in dt2.Rows) 
{ 
    str1 = ""; 
    for (int j = 0; j < dt2.Columns.Count; j++) 
    { 
     Response.Write(str1 + Convert.ToString(dr1[j])); 
     str1 = "\t"; 
    } 
    Response.Write("\n");   
} 
Response.ContentEncoding = System.Text.Encoding.Unicode; 
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); 
Response.Output.Write(sw.ToString()); 
Response.Flush(); 
Response.End(); 

ve burada ben de enter image description here

+0

Burada dt2'nin datatable olduğunu varsayalım. Ayrıca, sadece filePath dışa aktarmak veya görüntüyü dışa aktarmak istediğinizde. Dışa aktarılan dosyada görüntü görüntülemek istiyorsanız, gridview kullanın, tüm verileri görüntü ile birlikte bağlayın. Ve grid'in içeriğini dışa aktarmaya çalışın. Görüntüler alacaksın. –

+0

Merhaba -Piyush, gridvew ile dışa aktarılan dosyadaki görüntüleri alıyorum. ama burada sadece veriden istiyorum. –

+0

Eh, doğrudan veritabanından, sadece filePath alırsınız. Bu, gerçek bir resim etiketi olmadığı anlamına gelir, sadece görüntü kaynağı. Gerçek görüntü almak istiyorsanız, görüntü kaynağı ayarlı bir görüntü etiketine sahip olmalısınız. –

cevap

0

İşte excel veri tablo ihracat için örnek kod sağladık benim Datatable çırpıda ekleme. ayrıca ihracattan sonra excel gibi görünen görüntüyü de ekledi. enter image description here

Kodu çalıştırmak için aşağıdaki DLL'leri kullanın. 1. ClosedXML.dll 2. WindowsCore.dll 3. DocumentFormat.OpenXML.dll 4. PresentationCore.dll

Kod örnek:

 try 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("Subject"); 
      dt.Columns.Add("Category"); 
      dt.Columns.Add("CPT"); 
      dt.Columns.Add("Modifier"); 
      dt.Columns.Add("Dx"); 
      dt.Columns.Add("GuideLine"); 
      dt.Columns.Add("Insurance"); 
      dt.Columns.Add("FilePath"); 

      string path = Server.MapPath("Image/stock-illustration-1977033-dandelion-in-the-wind.jpg"); 

      dt.Rows.Add("Billing Steps", "Billing", "NA", "NA", "Billing Steps is very easy", "NA", "NA", path); 
      dt.Rows.Add("Billing Steps", "Billing", "NA", "NA", "Billing Steps is very easy", "NA", "NA", ""); 

      dt.AcceptChanges(); 
      using (XLWorkbook wb = new XLWorkbook()) 
      { 

       string WorkSheetName = "Sheet1"; 
       IXLWorksheet WorkSheet = wb.Worksheets.Add(dt, WorkSheetName); 
       Bitmap Image = null; 


       long ImgHeight = 100; 
       long ImgWidth = 100; 


       for (int i = 0; i < dt.Rows.Count; i++) 
       { 
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(Convert.ToString(dt.Rows[i]["FilePath"])); 

        if (bitmap != null) 
        { 
         var stream = new System.IO.MemoryStream(); 
         bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Gif); 
         if (stream != null) 
         { 
          stream.Position = 0; 

          XLPicture pic = new XLPicture 
          { 
           NoChangeAspect = true, 
           NoMove = false, 
           NoResize = false, 
           ImageStream = stream, 
           Name = "image", 
           EMUOffsetX = 4, 
           EMUOffsetY = 6, 
           MaxHeight = 100, 
           MaxWidth = 100, 
           PaddingX = 10, 
           PaddingY = 10 
          }; 

          XLMarker fMark = new XLMarker 
          { 
           ColumnId = 8, 
           RowId = i +1 
          }; 

          pic.AddMarker(fMark); 

          WorkSheet.AddPicture(pic); 
         } 
        } 

        Response.Clear(); 
        Response.Buffer = true; 
        Response.Charset = ""; 
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
        Response.AddHeader("content-disposition", "attachment;filename=download.xlsx"); 

        using (MemoryStream MyMemoryStream = new MemoryStream()) 
        { 
         wb.SaveAs(MyMemoryStream); 
         MyMemoryStream.WriteTo(Response.OutputStream); 
         Response.Flush(); 
         Response.End(); 
        } 
       } 

      } 


     } 
     catch (Exception) 
     { 

      throw; 
     } 

// Bu kod kullanmaya izin verin yorumlarınızı biliyoruz.

+0

Merhaba Mayil ... Thnq..thnq çok fazla ... Eğer kod üzerinde denedim XLPicture pic = yeni XLPicture üzerinde hata alıyorum ... hatta dlls alos üzerine ekledim .. yukarıdaki dlls için yazılan adlar nedir? –

+0

Merhaba, Closedxml.dll gerekli işlevlere sahip değil gibi görünüyor. Lütfen kapalı xml'nin son sürümünü indirin ve buradan “ClosedXml.dll” dosyasını alın ve projenize ekleyin. En son ClosedXml.dll indirmek için URL adresi: https://closedxml.codeplex.com/SourceControl/network/forks/ajwhiteway/ClosedXMLImageSupport Lütfen herhangi bir sorunuz olursa lütfen bize bildirin. – Mayil

+0

Merhaba .. -Maysil. .thanq. . çalışıyor ... ama burada sadece ilk görüntüyü veriyor. –

İlgili konular