- PR -

ClipBoardの文字化けに関して

投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-06-01 09:24
VS2005 Express Edition
OS:2000 Pro
の環境にて


DataGridViewで表示された日本語情報をクリップボードにコピーして
Excel等に吐き出すと文字化けしてしまいます。
(DataGridView上では文字化けしていません)

DataGridViewのプロパティ等を見たところ特に文字セットを
入れるものがなかったのですが、(クリップボードの方がまずいのかもしれませんが)
なにか回避策等ご存知の方、設定の方法等教えていただけないでしょうか?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-01 10:32
つい先日、同様のコードを書きましたが、何の問題も無くコピーできましたよ?
差し支えなければ、どのような文字なのかと、クリップボードにコピーする部分のコードを提示していただけませんか?
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-06-01 11:44
御回答ありがとうございます。

文字なのですが、
あとえば ”部品有”という言葉が"iL" になってしまいます。

また、コピーというのはDataGridViewでctrl + Aを押して
Excelでctrl + Vを押すオペレーションです。
(言葉たらずで申し訳ありませんでした。。。)
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-01 15:35
引用:

Kiraさんの書き込み (2006-06-01 11:44) より:

文字なのですが、
あとえば ”部品有”という言葉が"iL" になってしまいます。

また、コピーというのはDataGridViewでctrl + Aを押して
Excelでctrl + Vを押すオペレーションです。


ちなみに、ctrl + Aって全体選択ではありませんか?
と言う事で、ctrl + C して・・・としたら、本当ですね。
僕のところでも文字化けしました。

ctrl + C に対応しているなんて思ってもいませんでしたので、僕がやってうまくいったというのは、自分でコピーさせていたからでした。

コード:
try {
    this.ClipboardCopyMode = copyMode;
    Clipboard.SetDataObject(this.GetClipboardContent());
    return true;
}
catch (System.Runtime.InteropServices.ExternalException e) {
    ・・・・
    return false;
}



これだとうまくいきますが・・・
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-06-01 16:52
こちらで同様の方法をやってみたのですが、
やはり文字化けしてしまいます。。。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-01 17:47
引用:

Kiraさんの書き込み (2006-06-01 16:52) より:
こちらで同様の方法をやってみたのですが、
やはり文字化けしてしまいます。。。


すみません。外していたみたいです。テキストエディタに貼り付けて問題なかったので、てっきり大丈夫なものだと思っていました。(__;)
僕の示したサンプルコードでも、ctrl+c でも Excel 自体に貼り付けた時に化けているようです。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-06-01 18:06
こんにちは。

調べてみると、ちょっとあやしい動作をしているようですね。
DataGridView でコピーをした時点での Clipboard オブジェクトのフォーマットは

コード:

Clipboard.GetDataObject().GetFormats()
{次元:[5]}
    [0]: "Csv"
    [1]: "HTML Format"
    [2]: "System.String"
    [3]: "UnicodeText"
    [4]: "Text"


となっています。少なくとも Excel に貼り付けようとして文字化けが起きているのは、
Excel が HTML Format を解釈しようとして失敗(と言っていいものか)しているのだと
思います。
Excel に貼り付けるときに、右クリック→形式を選択して貼り付け→テキストを選べばな
んとか。

ちなみに DataGridView を使っているプログラムを終了させてから見てみると

コード:

Clipboard.GetDataObject().GetFormats()
{次元:[3]}
    [0]: "System.String"
    [1]: "UnicodeText"
    [2]: "Text"


こんな感じです。この状態なら Excel に貼り付けても大丈夫ですが…フォーマットが少な
くなっているのは、いろいろと裏でなにかやられているんでしょうね(.NET Framework が)。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-06-01 21:10
皆様有難う御座いました。

Excelにテキストとして貼り付ける方法、、、
考えても見ませんでした。

また仕様に関しても理解できました。 有難う御座います。

スキルアップ/キャリアアップ(JOB@IT)