2016-03-24 14 views
0

私はいくつかの画像でデータテーブルを持っていますが、そのデータテーブルをエクセルまたはワードにエクスポートしようとしています。データテーブルをエクセルまたはワードにエクスポートする画像

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(); 

、ここでは、私はまた、enter image description here

+0

ここでは、dt2がデータ可能であると仮定します。また、単にfilePathをエクスポートしたい、またはexportに画像を表示したいだけです。エクスポートしたファイルにイメージを表示する場合は、gridviewを使用して、すべてのデータをimageとともにバインドします。グリッドのコンテンツをエクスポートしようとします。イメージを取得します。 –

+0

こんにちは-Piyush、私はgridvewでエクスポートされたファイルで画像を取得しています。しかし、ここで私はdatatableからのみしたいです。 –

+0

さて、データベースから直接、あなたはfilePathのみを取得します。つまり、実際の画像タグはなく、画像ソースだけです。実際の画像を取得するには、画像ソースが設定された画像タグが必要です。 –

答えて

0

ここで私が優れてデータテーブルをエクスポートするために、サンプルコードを提供してきた私のDataTableのスナップを添付しています。エクスポート後にこのように見える画像も添付されています。 enter image description here

次のDLLを使用してコードを実行してください。 1. ClosedXML.dll 2. WindowsCore.dll 3. DocumentFormat.OpenXML.dll 4. PresentationCore.dll

コードサンプル:

 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; 
     } 

//このコードを使用してさせてください私たちはあなたのコメントを知っている。

+0

こんにちはMayil ... Thnq..thnq非常に...もし私が上記のコードを試してみたら、XLPictureにエラーが出る=新しいXLPicture ...でも、私はDLLの上にalosを追加しました..上のdllの名前空間は何ですか? –

+0

こんにちは、 Closedxml.dllに必要な機能がありません。クローズドXMLの最新バージョンをダウンロードし、そこから「ClosedXml.dll」を取得してプロジェクトに追加してください。 最新のClosedXml.dllをダウンロードするためのURL:https://closedxml.codeplex.com/SourceControl/network/forks/ajwhiteway/ClosedXMLImageSupport 質問がある場合はお知らせください。 – Mayil

+0

こんにちは..-Mayil。 .thanq。 .itは動作していますが、ここでは最初のイメージのみをエクスポートします。 –

関連する問題