にメモリストリームから画像を追加し、私はメモリストリーム内のイメージを持っていると私はMS Excel文書にこれを書きたい、PIAは、ファイルのパスを取るAddPicture関数メソッドを公開します。Excelドキュメント
画像をディスクに書き込まなくても画像を追加できますか?
MSDN
にメモリストリームから画像を追加し、私はメモリストリーム内のイメージを持っていると私はMS Excel文書にこれを書きたい、PIAは、ファイルのパスを取るAddPicture関数メソッドを公開します。Excelドキュメント
画像をディスクに書き込まなくても画像を追加できますか?
MSDN
まあ、ブラインド飛行のビットが、これは解決策になる可能性があなたのコード(たとえば、あなたのストリームのソース、データ型など)についての事または2仮定:
を 最初に、ストリームからビットマップイメージデータを作成する必要があります(これは、ストリームがビットマップイメージを記述していると仮定して、バイトストリームとみなします)。 Byte Array to Bitmap Image
解決策からコードをコピーして貼り付けます。
int w= 100;
int h = 200;
int ch = 3; //number of channels (ie. assuming 24 bit RGB in this case)
byte[] imageData = new byte[whch]; //you image data here
Bitmap bitmap = new Bitmap(w,h,PixelFormat.Format24bppRgb);
BitmapData bmData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat);
IntPtr pNative = bmData.Scan0;
Marshal.Copy(imageData,0,pNative,whch);
bitmap.UnlockBits(bmData);
また、ワークブック用のオブジェクトと作業するワークシートがあると仮定すると、次のようなものがあります。
xlBook = (Excel.Workbook)objExcel.Workbooks.Add("");
xlSheet = (Excel.Worksheet)xlBook.Worksheets 1 ;
xlSheet.Activate();
ビットマップタイプの変数とワークシートがあるので、画像をシートに貼り付けるだけでいいです:
System.Windows.Forms.Clipboard.SetDataObject(bitmap, false);
xlsRange = xlSheet.get_Range((Excel.Range)xlSheet.Cells[5, 15], (Excel.Range)xlSheet.Cells[5, 15]);
xlSheet.Paste(xlsRange, bitmap);
マークのおかげで、投票をアップします – AwkwardCoder
残念ながら、これは私のために動作しませんないと言うことができますクリップボードにはこれが必要です。 – AwkwardCoder
トリッキー、そうです。新しいルール。どのように常緑について "[threadobjvar] .SetApartmentState(System.Threading.ApartmentState.STA);" ? –
コードを追加できますか? memorystream(画像フォーマット?)変数にデータを追加する数行と、ピクチャを追加したいAddPictureまたは範囲/セル –
これにはコードがありません。既存のものに追加することを検討しています文書生成プロセスに優れています。 – AwkwardCoder
あなたはMemoryStream(ByteArrayImage)を持っていますね。コードは、バックグラウンド(タスクプール)スレッド上で実行されているので、それがSTAスレッドではありません、 - –