none
利用EXCEL產生Chart存到剪貼簿中,該如何寫到DATASET呢? RRS feed

  • 問題

  •  

    如題,請教一下各位前輩,小弟利用EXCEL產生了一個Chart,該如何將他寫到Dataset中呢?

     

     

    請各位前輩幫幫忙,謝謝!

    2007年8月23日 上午 09:11

所有回覆

  • HI,

     

    DataSet中放的是記錄, 所以應該放用來產生Chart的資料, 而不是放CHART

     

    tihs

    2007年8月24日 上午 02:12
  • 您好,我的意思是將 chart 轉成圖檔,放到DataSet中,如此就可以利用CrystalReport列印出來。

    2007年8月27日 上午 01:05
  • HI,

     

    您可以將圖檔轉成byte陣列, 再放入DataSet中

     

    tihs

    2007年8月27日 上午 01:10
  •  

    您好,小弟將CHART存到剪貼簿後,其他的動作就不知如何做了,不知大哥是否可以指教,或是給一些範例參考呢??謝謝!

     

    //存到剪貼簿
                    xlChart.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap, XlPictureAppearance.xlScreen);

    2007年8月27日 上午 01:29
  • HI,

     

    您必須為DataSet加入DataTable, 或是只使用DataTable, 為DataTable加好可以存放二進位資料的欄位, 最後再利用程式將圖讀成BYTE陣列, 再把BYTE陣列塞到DataTable的記錄的欄位中

     

    tihs

    2007年8月28日 上午 02:51
  • 您好,我就是將圖讀成BYTE陣列,再把BYTE陣列放進DATATABLE中,這部分做不出來!

    目前是將圖轉到一個暫存檔中,再將暫存檔放到DATATABLE中來處理,但是若連續做兩次後,匯出線檔案鎖死的問題!

     

    不知大哥是否提供範例或程式碼呢??

    2007年8月28日 上午 03:22
  • HI,

     

    聽起來有點像檔案處理完沒有關閉, 造成第二次使用時出問題, 您可以檢查一下檔案處理完有沒有執行關閉的動作?

     

    tihs

    2007年8月29日 上午 01:47
  • 匯出後,所有相關的物件都有關閉,而且是在第3次才會出現問題。

     

    我還是希望可以在剪貼簿中處理會好一點,希望大哥可以提供相關的範例,謝謝!

    2007年8月29日 上午 02:12
  • 試試看

     

    Code Snippet

                // 模擬複製 Excel Chart
                Clipboard.SetImage(pictureBox1.Image);

     

                // 從 Clipboard 取得 Bitmap 並轉成 byte[]
                MemoryStream ms = new MemoryStream();
                Bitmap b = (Bitmap) Clipboard.GetImage();
                b.Save(ms, ImageFormat.Png);
                byte[] buff = ms.ToArray();

     

                // 建立 DataTable 將 byte[] 存入
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("Image", typeof (byte[])));

     

                DataRow dr = dt.NewRow();
                dr[0] = buff;
                dt.Rows.Add(dr);

     

                // 從 DataTable 取出 byte[] 並轉成 Bitmap
                byte[] buff2 = (byte[]) dt.Rows[0]["Image"];
                MemoryStream ms2 = new MemoryStream(buff2);
                Bitmap b2 = new Bitmap(ms2);

     

                pictureBox2.Image = b2;

     

     

     

    2007年8月29日 上午 03:20
  • 請各位大哥幫我看看,我將CHART存入剪貼簿後,卻讀不出來

     

    //存到剪貼簿
                    xlChart.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap, XlPictureAppearance.xlScreen);  //已用 Ctrl-V 確定剪貼簿中有資料
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    Bitmap b = (Bitmap)Clipboard.GetImage();  //執行後 b=null 沒有抓到剪貼簿中的圖
                    b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    byte[] buff = ms.ToArray();

     

     

    以上程式碼該如何修改呢??謝謝各位大哥幫忙!

    2007年8月29日 上午 05:08