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

わんくま同盟

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

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


■94810 / )  Re[5]: Excelの指定範囲の内容を表形式で表示
□投稿者/ 魔界の仮面弁士 (2722回)-(2020/05/21(Thu) 12:50:58)
No94808 (大谷刑部 さん) に返信
> ↓データ改行とかが存在しているのなら、TextFieldParserクラスとかで引用符を取り除いてから、クリップボードにコピーした方がその後の処理がしやすいのでは?
ペースト時ではなく、コピー時に割り込ませるとなると、
Excel 側の操作を見直すことになるので、前提条件から見直しが必要になりそう。


No94809 (temaki さん) に返信
>>>ところで、このデータを直接DataGridViewに貼り付けできるのでしょうか?
>>多分できますよね。聞く前に試してみたらどうですか?
>>簡単にデバッグできるコードだと思うので。
> どうやって?
> Ctrl+Vでも貼付けできないんですけど?
大谷刑部 さんは、「操作」ではなく「コード」と書かれていますね。
『直接貼り付け』というのを、データバインドの意で捉えているかも。


> 「多分できます」ってのは要らないから、
> 確実にできる方法を書いてもらいたいものです。
.NET Framework 4.7.2 以降の「DataGridView の機能強化」にも、
クリップボード操作に関する追加情報は無さそうですね。
https://docs.microsoft.com/ja-jp/dotnet/framework/whats-new/whats-new-in-accessibility


「操作」ではなく「コード」なら、既に提示されていた
TextFieldParser を使って、このように書けます。

Dim tsvData As String = 何某

Dim tbl As New DataTable()
Using reader As New StringReader(tsvData), parser As New TextFieldParser(reader)
  parser.TextFieldType = FieldType.Delimited
  parser.CommentTokens = New String(-1) {}
  parser.Delimiters = New String(0) {vbTab}
  parser.HasFieldsEnclosedInQuotes = True
  parser.TrimWhiteSpace = False

  Do Until parser.EndOfData
    Dim fields = parser.ReadFields()
    For n = tbl.Columns.Count To fields.Count - 1
      tbl.Columns.Add()
    Next
    tbl.Rows.Add(fields)
  Loop
End Using
DataGridView1.AutoGenerateColumns = True
DataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True
DataGridView1.DataSource = tbl
返信 編集キー/


管理者用

- Child Tree -