DataGridView から Excel へコピーすると文字化けする

Visual Studio 2010 と Excel 2010 の組み合わせだと発生しないのですが、
Visual Studio 2005 と Excel XP の間だと文字化けが発生します。

3流プログラマのメモ書き : (VB.Net)DataGridViewのショートカットキーでのコピー(Ctrl+C)をExcelに貼り付けると文字化けする
http://jehupc.exblog.jp/9119842/

な感じで、Ctrl+C をフックしないと駄目か…と思っていたのですが、良い方法があったので up してきます。

1.DataGridView を継承して、ExDataGridView を作る。
2.以下のように GetClipboardContent をオーバーライドして Text フォーマットのみ返すようにする。

1
2
3
4
5
6
Public Overrides Function GetClipboardContent() As System.Windows.Forms.DataObject
    Dim org As DataObject = MyBase.GetClipboardContent()
    Dim dat As New DataObject
    dat.SetText(org.GetText(TextDataFormat.Text))
    Return dat
End Function

どうやら、HTML形式で clipboard へコピーしているので、Excel のほうがこの HTML 形式を貼り付けようとして文字化けしています。VB のほうは(多分)UTF-8 でコピーしているのに、Excel のほうで SJIS しか対応していない、というのが主原因ですね。

Excel 2010 を使っている場合は、文字化けしないので ok なんですが。

こんな感じで、クリップボードにコピーすると、

こんな感じで、文字化けしてしまいます。

なので、GetClipboardContent をオーバーライドして変更

カテゴリー: 開発, VB パーマリンク

DataGridView から Excel へコピーすると文字化けする への2件のフィードバック

  1. NaruTo のコメント:

    Excel 2003 へのコピペでの文字化け問題にあたって解決法を探っていてたどり着きました。
    参考にさせていただきます。

  2. たん のコメント:

    シンプルなやり方ですし、とても分かり易かったです。
    参考にさせて頂きました♪

コメントは停止中です。