フッターコンテンツにスキップ
IRONXLの使用

VB.NETでExcelファイルを開く方法

VB.NETでExcelファイルを開くことを試みたことがあるなら、Microsoft Officeがインストールされていないとどれほど難しいか知っているでしょう。 従来のインターロップ方法はExcel自体に依存し、複雑なCOM参照を必要とし、バージョンの不一致を引き起こすことが多く、特にサーバーやクラウド環境で問題になります。

そこでIronXLが登場します。 これは、オフィスのインストールを必要とせずに、XLSX、XLS、CSV、およびTSVファイルを直接読み書きできる現代的な.NETライブラリです。 IronXLでは、よりクリーンで信頼性の高いVB.NETコードを記述し、Windows、Linux、またはクラウドのどこでもExcelファイルを処理でき、インターロップの全ての手間をスキップできます。 このガイドでは、スタートアップ手順とExcelファイルを簡単に操作する方法を紹介します。

VB.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?

IronXLを始めるのはほんの数秒です。 Visual Studio 2022を開き、VB.NETプロジェクトに移動して、パッケージマネージャーコンソールを使用します:

Install-Package IronXL.Excel

または、プロジェクトを右クリックして「NuGetパッケージの管理」を選択し、「IronXL」を検索してインストールをクリックします。

VB.NETでExcelファイルを開く方法: 図1 - IronXL NuGetインストール

インストール後、この単一のインポート文をVB.NETファイルに追加します:

Imports IronXL
Imports IronXL
VB .NET

それで終わりです。 複雑なCOM参照、Office依存関係、バージョン固有のアセンブリはありません。 VB.NETのExcelファイルリーダーはどのマシンでも動作できる準備が整いました。詳細なセットアップ手順については、VB.NET Excelファイルチュートリアルをご覧ください。

簡単なコード例: IronXLでExcelドキュメントを読み取る

VB.NETでExcelワークブックを開きデータを読み取るための完全な作業例を以下に示します:

Imports IronXL
Module Program
    Sub Main()
        ' Load any Excel file - XLSX, XLS, CSV, or TSV
        Dim workbook As WorkBook = WorkBook.Load("example.xlsx")
        ' Access the worksheet with our sales data (the second sheet)
        Dim worksheet As WorkSheet = workbook.WorkSheets(1)
        ' Read a specific cell value
        Dim revenue As Decimal = worksheet("E2").DecimalValue
        Console.WriteLine($"Order Total: {revenue}")
        ' Read a range of cells
        For Each cell In worksheet("C2:C6")
            Console.WriteLine($"Product: {cell.Text}")
        Next
    End Sub
End Module
Imports IronXL
Module Program
    Sub Main()
        ' Load any Excel file - XLSX, XLS, CSV, or TSV
        Dim workbook As WorkBook = WorkBook.Load("example.xlsx")
        ' Access the worksheet with our sales data (the second sheet)
        Dim worksheet As WorkSheet = workbook.WorkSheets(1)
        ' Read a specific cell value
        Dim revenue As Decimal = worksheet("E2").DecimalValue
        Console.WriteLine($"Order Total: {revenue}")
        ' Read a range of cells
        For Each cell In worksheet("C2:C6")
            Console.WriteLine($"Product: {cell.Text}")
        Next
    End Sub
End Module
VB .NET

WorkBook.Load()メソッドはファイル形式を自動的に検出します; XLSまたはXLSX形式を指定する必要はありません。 workbook.GetWorkSheet("Sheet1")を使用してインデックスまたはファイル名によってExcelワークシートにアクセスします。 各セルはIntValue、DecimalValue、DateTimeValue、または一般的なTextプロパティのような型付けされた値を返します。 より複雑なシナリオについては、Excel数式ドキュメントを参照してください。

ここで見ての通り、IronXLはファイルを正常に開いて、要求された注文の合計を読み取りました。 それはまた、すべての注文で販売された各製品から情報を読み取って抽出できました。

VB.NETでExcelファイルを開く方法: 図2 - Excelファイルを読み取るためのサンプル出力

異なる種類のExcelデータをどのように読み取りますか?

IronXLは、Excel VB.NETファイルを読み取るときにすべてのExcelデータタイプをインテリジェントに処理します。 さまざまなデータシナリオでの操作方法は以下の通りです:

' Open workbook from any location using the filename and path
Dim wb As WorkBook = WorkBook.Load("C:\Data\Inventory.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Products")
' Read different data types safely
Dim productName As String = ws("A2").StringValue
Dim quantity As Integer = ws("B2").IntValue  
Dim price As Decimal = ws("C2").DecimalValue
Dim lastUpdated As DateTime = ws("D2").DateTimeValue
' Process entire columns efficiently
Dim totalStock As Decimal = ws("B2:B100").Sum()
Dim maxPrice As Decimal = ws("C2:C100").Max()
' Iterate through all used cells starting at row index 1 to skip header (zero-based index)
 For i As Integer = 1 To ws.Rows.Count - 1
    Dim row = ws.Rows(i)
    ' Stop at first completely empty row
    If row.Columns(0).Value Is Nothing AndAlso row.Columns(1).Value Is Nothing AndAlso
       row.Columns(2).Value Is Nothing AndAlso row.Columns(3).Value Is Nothing Then Exit For
    ' Read values safely
    Dim sku As String = If(row.Columns(0).Value IsNot Nothing, row.Columns(0).StringValue, "")
    Dim stock As Integer = If(row.Columns(1).Value IsNot Nothing, row.Columns(1).IntValue, 0)
    Dim priceVal As Decimal = If(row.Columns(2).Value IsNot Nothing, row.Columns(2).DecimalValue, 0D)
    Dim rwLastUpdated As DateTime? = If(row.Columns(3).Value IsNot Nothing, row.Columns(3).DateTimeValue, Nothing)
    ' Format date
    Dim lastUpdatedStr As String = If(rwLastUpdated.HasValue, rwLastUpdated.Value.ToString("dd/MM/yyyy"), "")
    ' Print only rows with data
    If sku <> "" OrElse stock <> 0 OrElse priceVal <> 0D OrElse lastUpdatedStr <> "" Then
        Console.WriteLine($"SKU: {sku}, Stock: {stock}, Price: {priceVal:C}, Last Updated: {lastUpdatedStr}")
    End If
Next
' Open workbook from any location using the filename and path
Dim wb As WorkBook = WorkBook.Load("C:\Data\Inventory.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Products")
' Read different data types safely
Dim productName As String = ws("A2").StringValue
Dim quantity As Integer = ws("B2").IntValue  
Dim price As Decimal = ws("C2").DecimalValue
Dim lastUpdated As DateTime = ws("D2").DateTimeValue
' Process entire columns efficiently
Dim totalStock As Decimal = ws("B2:B100").Sum()
Dim maxPrice As Decimal = ws("C2:C100").Max()
' Iterate through all used cells starting at row index 1 to skip header (zero-based index)
 For i As Integer = 1 To ws.Rows.Count - 1
    Dim row = ws.Rows(i)
    ' Stop at first completely empty row
    If row.Columns(0).Value Is Nothing AndAlso row.Columns(1).Value Is Nothing AndAlso
       row.Columns(2).Value Is Nothing AndAlso row.Columns(3).Value Is Nothing Then Exit For
    ' Read values safely
    Dim sku As String = If(row.Columns(0).Value IsNot Nothing, row.Columns(0).StringValue, "")
    Dim stock As Integer = If(row.Columns(1).Value IsNot Nothing, row.Columns(1).IntValue, 0)
    Dim priceVal As Decimal = If(row.Columns(2).Value IsNot Nothing, row.Columns(2).DecimalValue, 0D)
    Dim rwLastUpdated As DateTime? = If(row.Columns(3).Value IsNot Nothing, row.Columns(3).DateTimeValue, Nothing)
    ' Format date
    Dim lastUpdatedStr As String = If(rwLastUpdated.HasValue, rwLastUpdated.Value.ToString("dd/MM/yyyy"), "")
    ' Print only rows with data
    If sku <> "" OrElse stock <> 0 OrElse priceVal <> 0D OrElse lastUpdatedStr <> "" Then
        Console.WriteLine($"SKU: {sku}, Stock: {stock}, Price: {priceVal:C}, Last Updated: {lastUpdatedStr}")
    End If
Next
VB .NET

IronXLは空のセル、結合されたセル、数式を自動的に処理します。 VB.NET Excelライブラリは、数式を読み取ると再計算し、常に最新の値を確実に取得します。 大規模なデータセットについては、Sum()、Average()、Min()、Max()のような集計関数を使用して最適なパフォーマンスを達成してください。 データをエクスポートする必要がありますか? どのようにしてExcelをCSVに変換するかを学びましょう。

VB.NETでExcelファイルを開く方法: 図3 - 使用済みセル内でデータを読み取り表示する様子

生産利用のための実践的な例は何ですか?

複数のExcelシートを処理する実際のインベントリチェッカーをVB.NETでExcelファイルを開くために構築しましょう:

Imports IronXL
Imports System.IO
Public Class ExcelInventoryReader
    Public Function CheckLowStock(filePath As String) As List(Of String)
        Dim lowStockItems As New List(Of String)
        Try
            Dim workbook As WorkBook = WorkBook.Load(filePath)
            ' Process all worksheets in the workbook
            For Each sheet As WorkSheet In workbook.WorkSheets
                Console.WriteLine($"Checking {sheet.Name}...")
                ' Find items with stock below 10 units
                For rowIndex As Integer = 2 To sheet.RowCount
                    Dim itemName As String = sheet($"A{rowIndex}").StringValue
                    Dim stockLevel As Integer = sheet($"B{rowIndex}").IntValue
                    If stockLevel < 10 AndAlso Not String.IsNullOrEmpty(itemName) Then
                        lowStockItems.Add($"{itemName} - {stockLevel} units ({sheet.Name})")
                    End If
                Next
            Next
        Catch ex As Exception
            Console.WriteLine($"Error reading Excel file: {ex.Message}")
        End Try
        Return lowStockItems
    End Function
End Class
Imports IronXL
Imports System.IO
Public Class ExcelInventoryReader
    Public Function CheckLowStock(filePath As String) As List(Of String)
        Dim lowStockItems As New List(Of String)
        Try
            Dim workbook As WorkBook = WorkBook.Load(filePath)
            ' Process all worksheets in the workbook
            For Each sheet As WorkSheet In workbook.WorkSheets
                Console.WriteLine($"Checking {sheet.Name}...")
                ' Find items with stock below 10 units
                For rowIndex As Integer = 2 To sheet.RowCount
                    Dim itemName As String = sheet($"A{rowIndex}").StringValue
                    Dim stockLevel As Integer = sheet($"B{rowIndex}").IntValue
                    If stockLevel < 10 AndAlso Not String.IsNullOrEmpty(itemName) Then
                        lowStockItems.Add($"{itemName} - {stockLevel} units ({sheet.Name})")
                    End If
                Next
            Next
        Catch ex As Exception
            Console.WriteLine($"Error reading Excel file: {ex.Message}")
        End Try
        Return lowStockItems
    End Function
End Class
VB .NET

この生産対応VB.NETコードは、エラー処理、マルチシート処理、および実用的なビジネスロジックを示しています。 IronXLは最大10MBのファイルを効率的にメモリ内で処理します。 より大きなファイルの場合は、特定の範囲選択を使用して部分的に処理を検討してください。 ファイルの権限のような一般的な問題は、トラブルシューティングガイドでカバーされています。 VB.NET Excelオートメーションに関するディスカッションについては、Microsoft Q&Aフォーラムがコミュニティサポートを提供しています。

結論

IronXLを利用して、VB.NETでのExcelファイルの読み取りと処理はこれまでになく簡単です—Microsoft Officeをインストールする必要はありません。 さまざまなデータタイプの安全な読み取り、大規模なワークシートの反復、数式や空のセルの処理、マルチシートワークブックの処理に至るまで、IronXLはExcelオートメーションのあらゆる側面を簡素化します。

この最新の.NETライブラリはインターロップの複雑さを排除し、バージョンの不一致を回避し、Windows、Linux、およびクラウド環境でシームレスに動作します。 小さなインベントリーチェッカーを構築する場合でも、企業規模のExcelデータを処理する場合でも、IronXLは信頼性のあるパフォーマンス、簡潔なコード、および堅牢なエラーハンドリングを提供します。

VB.NETのExcelワークフローを簡素化する準備はできましたか? IronXLの無料トライアルを今すぐ始めてください。Excelファイルを使ってもっと速く、クリーンで、完全にOfficeに依存しない作業を体験してください。 Explore our documentation and tutorials to unlock the full power of IronXL in your applications.

今IronXLを始めましょう。
green arrow pointer

よくある質問

どのようにしてVB.NETでMicrosoft Officeを使わずにエクセルファイルを開くことができますか?

IronXLライブラリを使用することで、VB.NETでMicrosoft Officeを使わずにエクセルファイルを開いて読むことができます。IronXLは、Microsoft Officeや複雑なInteropメソッドなしでエクセルファイルを操作するための簡単な方法を提供します。

VB.NETでエクセル処理のためにIronXLを使用する利点は何ですか?

IronXLは、VB.NETでエクセル処理を簡略化し、Microsoft Officeや複雑なCOM参照が不要で、サーバーやクラウドプラットフォームなどの異なる環境間の互換性を保証し、バージョンの衝突を防ぎます。

IronXLを使用してXLSXおよびXLSファイルの両方を処理することは可能ですか?

はい、IronXLは、XLSXおよびXLSのファイル形式の処理をサポートしており、VB.NETアプリケーションでこれらのExcelファイルを開き、読み取り、操作することができます。

IronXLを使用するために追加のソフトウェアをインストールする必要がありますか?

VB.NETでのエクセルファイル処理にIronXLを使用するために追加のソフトウェアは必要ありません。IronXLは単独で動作し、VB.NETプロジェクトに直接統合されます。

IronXLはクラウド環境で使用できますか?

はい、IronXLはクラウド環境でシームレスに動作するように設計されており、従来のExcel Interop方法でよく発生するバージョンの衝突を回避します。

IronXLはどのようにエクセルファイルの互換性を処理しますか?

IronXLは、XLSXやXLSなどの複数のExcelファイル形式をサポートすることで互換性を保証し、Microsoft Officeに依存せずにそれらのファイルを操作および処理するための強力な機能を提供します。

IronXLは異なるVB.NETバージョンとの互換性がありますか?

IronXLは、.NETフレームワークの異なるバージョンで作業する開発者のための多用途なソリューションとして、様々なVB.NETバージョンと互換性があります。

VB.NETでエクセルに伝統的なInteropメソッドを使用する場合の一般的な課題は何ですか?

伝統的なInteropメソッドはしばしばMicrosoft Officeを必要とし、複雑なCOM参照が含まれ、特にサーバーやクラウド環境でバージョンの衝突を引き起こしやすいです。IronXLは、これらの課題に対し、信頼性があり簡単なアプローチを提供します。

IronXLは、例えばデータの編集やエクスポートなど、エクセルファイル操作に使用できますか?

はい、IronXLは、エクセルファイルの読み取りだけでなく、編集やデータのエクスポートのための機能を提供し、VB.NETにおけるエクセルファイル操作ための包括的なツールです。

VB.NETでのIronXLの使い方に関する作業コード例をどこで見つけられますか?

IronXLのドキュメントやチュートリアルには、VB.NETでMicrosoft Officeを使わずにエクセルファイルを処理するためのステップバイステップのガイダンスと作業コード例が提供されています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。