none
ClosedXMLを用いてExcelから数値を取り出し配列に格納したい RRS feed

  • 質問

  • 初めまして。おんやさい252と申します。初めての質問なので粗末な点があるかと思いますがご容赦ください。

    今回質問したいのはClosedXMLを用いたExcelからの数値の読み込みについてです。(Visual Basic 2017を使用しています)

    数値を取り出して配列に格納したいのですが取り出した数値を出力したところ、「ClosedXML.Excel.XLCells」と表示されます。

    コードは以下の通りです。


            Const ExcelFilePath As String = ".\\sample.xlsx"

            Using workbook = New XLWorkbook(ExcelFilePath)
                Using worksheet = workbook.Worksheet("サンプルシート")
                  
                    Dim Data As Object = worksheet.Cells("A1")
                    TB2.Text = Data.ToString()
                End Using
            End Using

    (今回はExcelからひとつの数値を取り出し一つの変数にいれてTextBoxに表示するようにしていますが、実際はExcelの同じ列の値を数百行ほど読み込みそれを配列に格納し、数値計算の際にその配列の値を用いたいと考えています。)

    Excelから取り出した値を数値に変換するにはどうしたらよいのでしょうか。お忙しいとは思いますが皆様のお知恵を拝借出来ないでしょうか。ご回答心よりお待ちしております。

    ※ClosedXMLのバージョンは0.93.1を使用しています。

    2019年1月3日 12:11

回答

  • IXLWorksheetのCellsメソッドは、文字通り複数のセルを表すオブジェクトを返してきます。個々のセルにアクセスするには、この返されたオブジェクトをFor Eachなどで列挙する必要があります。

    あるいは、ワークシートから毎回特定の1つのセルを取得するのであればCellsメソッドの代わりにCellメソッド(単数形)を使用できます。この場合、その特定のセルを表すオブジェクトが返されます。

    For Eachで列挙されたオブジェクト、またはCellメソッドで返されたオブジェクトはIXLCell型であり、この型がそのセルの値を取得するためのプロパティやメソッドを提供しているので、それらを使ってセルの値を取得します。

    2019年1月3日 15:55

すべての返信

  • IXLWorksheetのCellsメソッドは、文字通り複数のセルを表すオブジェクトを返してきます。個々のセルにアクセスするには、この返されたオブジェクトをFor Eachなどで列挙する必要があります。

    あるいは、ワークシートから毎回特定の1つのセルを取得するのであればCellsメソッドの代わりにCellメソッド(単数形)を使用できます。この場合、その特定のセルを表すオブジェクトが返されます。

    For Eachで列挙されたオブジェクト、またはCellメソッドで返されたオブジェクトはIXLCell型であり、この型がそのセルの値を取得するためのプロパティやメソッドを提供しているので、それらを使ってセルの値を取得します。

    2019年1月3日 15:55
  • Cellメソッドで受け取ってGetDoubleで変換することで数値として取得することができました!

    本当に助かりました。ご回答ありがとうございました!

    2019年1月4日 10:28