C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

大量データを文字列としてクリップボード貼り付け /千の千尋 (20/05/14(Thu) 17:18) #94771
Re[1]: 大量データを文字列としてクリップボード貼り付け /魔界の仮面弁士 (20/05/14(Thu) 18:18) #94772
Re[1]: 大量データを文字列としてクリップボード貼り付け /大谷刑部 (20/05/19(Tue) 13:51) #94789


親記事 / ▼[ 94772 ] ▼[ 94789 ]
■94771 / 親階層)  大量データを文字列としてクリップボード貼り付け
□投稿者/ 千の千尋 (1回)-(2020/05/14(Thu) 17:18:36)

分類:[C#] 

C#プログラムの質問です。

任意の計算処理をした出力データを2次元配列 Data[100,100]に格納しております。

その配列データをエクセルで処理できるようにクリップボードで貼り付けたいと思っております。

数個程度のデータをクリップボードで貼り付ける場合には下記のようにコードを書いて対応できますが

string copy = Data[0,0] + "\r\n" + Data[0,1] + "\r\n" + Data[0,2] + ・・・ ;
Clipboard.SetData(DataFormats.Text, (object)copy);

2次元配列100x100(10000程度)の大量データを貼り付ける場合はどのようにしたらよいでしょう?

for文を使うにしろ、どのようにstring copy に文字列として格納したら良いのか教えて頂きたく。

宜しくお願い致します。
[ □ Tree ] 返信 編集キー/

▲[ 94771 ] / 返信無し
■94772 / 1階層)  Re[1]: 大量データを文字列としてクリップボード貼り付け
□投稿者/ 魔界の仮面弁士 (2720回)-(2020/05/14(Thu) 18:18:15)
No94771 (千の千尋 さん) に返信
> string copy = Data[0,0] + "\r\n" + Data[0,1] + "\r\n" + Data[0,2] + ・・・ ;
> Clipboard.SetData(DataFormats.Text, (object)copy);
> 2次元配列100x100(10000程度)の大量データを貼り付ける場合はどのようにしたらよいでしょう?


文字列連結の話をしているのであれば、StringBuilder を使うことを検討してみてください。

https://dobon.net/vb/dotnet/string/stringbuilder.html
https://smdn.jp/programming/dotnet-samplecodes/string/StringBuilder_AppendLine%E3%83%BBAppend%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%94%B9%E8%A1%8C%E4%BB%98%E3%81%8D%E3%83%BB%E6%94%B9%E8%A1%8C%E3%81%AA%E3%81%97%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B.csharp.xhtml


delayed rendering の話だとしたら、このあたりかな…。

http://wisdom.sakura.ne.jp/system/winapi/win32/win91.html
https://social.msdn.microsoft.com/Forums/ja-JP/934d7844-cd4f-4bc4-afbb-32c3f080242a/c?forum=wpfja
https://stackoverflow.com/questions/2578900/how-do-i-backup-and-restore-the-system-clipboard-in-c/2579846

[ 親 94771 / □ Tree ] 返信 編集キー/

▲[ 94771 ] / 返信無し
■94789 / 1階層)  Re[1]: 大量データを文字列としてクリップボード貼り付け
□投稿者/ 大谷刑部 (77回)-(2020/05/19(Tue) 13:51:23)
No94771 (千の千尋 さん) に返信
> C#プログラムの質問です。
>
> 任意の計算処理をした出力データを2次元配列 Data[100,100]に格納しております。
>
> その配列データをエクセルで処理できるようにクリップボードで貼り付けたいと思っております。
>
> 数個程度のデータをクリップボードで貼り付ける場合には下記のようにコードを書いて対応できますが
>
> string copy = Data[0,0] + "\r\n" + Data[0,1] + "\r\n" + Data[0,2] + ・・・ ;
> Clipboard.SetData(DataFormats.Text, (object)copy);
>
> 2次元配列100x100(10000程度)の大量データを貼り付ける場合はどのようにしたらよいでしょう?
>
> for文を使うにしろ、どのようにstring copy に文字列として格納したら良いのか教えて頂きたく。
>
> 宜しくお願い致します。

Excelで処理するのであれば、Rageオブジェクトに配列丸ごと代入しちゃうのが一番安直だがコード上は簡単な方法かと。
Rangeの範囲と2次元配列の要素数が合致してればいけるはずです。

上記に書いているようなぐるぐる回して文字列代入するのはお勧めしません。
文字列代入でべらぼうに時間がかかります。

まだ、一旦テキストファイルに書き出して、OpentextFileメソッドで処理した方が速いと思います。
(ただし件数次第。10万セルとかになるとこれも遅い)
[ 親 94771 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -