VB.NETで簡単にExcelファイルに書き込む方法
従来、Office Interopを使用することがMicrosoft Excelのタスクを自動化するための事実上の選択肢とされていましたが、これには重大な欠点があります。パフォーマンスの問題やサーバー側の複雑さ、そしてMicrosoft Excelがマシンにインストールされている必要があるという条件です。
このガイドでは、VB.NETでExcelファイルを作成し書き込む方法についての現代的でより効率的なアプローチを示します。 私たちはIronXL for .NETを使用します。これは、開発者がOffice Interopに頼ることなく、Excelスプレッドシートを作成、読み取り、編集するのを助けるために特別に構築されたライブラリです。新しいファイルの作成、コレクションからのデータの書き込み、およびわずかな直感的なコード行で既存のドキュメントを変更する方法を見ていきます。
VB.NETでExcelを自動化するにはどうすればよいですか?
VB.NETプロジェクトでExcelファイルに書き込みを開始するには、まずIronXLライブラリを追加する必要があります。 このプロセスは簡単で、Visual Studio内で直接行うことができます。
まず、開発環境が準備されていることを確認してください:
- Visual Studio 2022 以上。
- .NET Framework 4.6.2以上または.NET Core/.NET 5+を対象としたアクティブプロジェクト。 IronXLはすべての最新.NETバージョンと互換性があります。.NET 9および10も含まれます。
次に、IronXL NuGetパッケージをインストールします:
- Visual StudioのNuGetパッケージマネージャーを開きます。
- パッケージ
IronXL.Excelを検索します。 - "インストール"をクリックします。
代わりに、次のコマンドを使用してPackage Manager Consoleからインストールすることもできます:
Install-Package IronXL.Excel
VB.NET Excel統合のために正しいパッケージを見つけるために、Visual StudioのメニューでNuGetパッケージマネージャーに移動しています。
インストールが完了したら、コードを書き始める準備が整いました。 VB.NETファイルの先頭にImports IronXLを追加するだけで、ライブラリのクラスをスコープに取り込みます。
新しいExcelファイルを作成してデータを書き込むにはどうすればいいですか?
新しいExcelファイルを作成し、データを書き込むにはどうすればよいですか?
新しいExcelファイルをゼロから作成することは基本的な作業です。 これは、アプリケーションデータのエクスポートや日報の生成などのタスクに最適です。 実際の例を見てみましょう。
- 実用的な例を見てみましょう。 私たちには、Excelスプレッドシートにエクスポートしたい製品データのリストがあると想像してください。
次のコードは、List(Of Product)を取得して、その内容を新しく作成されたExcelファイルに書き込む方法を示します。
次のコードは、List(Of Product)を取得し、その内容を新しく作成したExcelファイルに書き込む方法を示しています。
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
Public Class Product
Public Property ID As Integer
Public Property Name As String
Public Property Price As Decimal
End Class
Module Program
Sub Main(args As String())
' 1. Prepare a list of data to write to Excel.
Dim products As New List(Of Product) From {
New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
}
' 2. Create a new Excel workbook and select the default worksheet.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 3. Write headers for our data.
sheet("A1").Value = "Product ID"
sheet("B1").Value = "Product Name"
sheet("C1").Value = "Price"
' Style the header row.
Dim headerRange = sheet.GetRange("A1:C1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray
' 4. Iterate through the product list and write data to subsequent rows.
For i As Integer = 0 To products.Count - 1
Dim product = products(i)
Dim row = i + 2 ' Start from the second row
sheet("A" & row).Value = product.ID
sheet("B" & row).Value = product.Name
sheet("C" & row).Value = product.Price
Next
' 5. Apply currency formatting to the price column.
Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
priceColumn.Style.Format = "$#,##0.00"
' 6. Auto-size columns for better readability.
sheet.Columns.AutoFit()
' 7. Save the newly created and populated workbook to a file.
workbook.SaveAs("ProductReport.xlsx")
End Sub
End ModuleImports IronXL
Imports System.Collections.Generic
Imports System.Linq
Public Class Product
Public Property ID As Integer
Public Property Name As String
Public Property Price As Decimal
End Class
Module Program
Sub Main(args As String())
' 1. Prepare a list of data to write to Excel.
Dim products As New List(Of Product) From {
New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
}
' 2. Create a new Excel workbook and select the default worksheet.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 3. Write headers for our data.
sheet("A1").Value = "Product ID"
sheet("B1").Value = "Product Name"
sheet("C1").Value = "Price"
' Style the header row.
Dim headerRange = sheet.GetRange("A1:C1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray
' 4. Iterate through the product list and write data to subsequent rows.
For i As Integer = 0 To products.Count - 1
Dim product = products(i)
Dim row = i + 2 ' Start from the second row
sheet("A" & row).Value = product.ID
sheet("B" & row).Value = product.Name
sheet("C" & row).Value = product.Price
Next
' 5. Apply currency formatting to the price column.
Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
priceColumn.Style.Format = "$#,##0.00"
' 6. Auto-size columns for better readability.
sheet.Columns.AutoFit()
' 7. Save the newly created and populated workbook to a file.
workbook.SaveAs("ProductReport.xlsx")
End Sub
End Module動作の仕組み
- データの準備:まず、エクスポートしたいデータを表す単純な
ProductクラスとList(Of Product)を用意します。
1.データの準備:シンプルなProductクラスと、エクスポートするデータを表すList(Of Product)から始めます。 23. これは、データベースまたは他のビジネスロジック層からデータを取得するシミュレーションです。 2.ワークブックとワークシートの作成: WorkBook.Create() 、メモリ内に新しい空の Excel ワークブックを生成します。 25. 新しいワークブックには自動的に1つのワークシートが含まれており、DefaultWorkSheetプロパティを通じてアクセスできます。 より複雑なドキュメントの場合は、CreateWorkSheetメソッドを使用して追加のワークシートを作成できます。 3.データの書き込み:使い慣れた A1 スタイルの表記法 (例: sheet("A1") ) を使用してセルにアクセスします。 .Valueプロパティは、セルの内容を設定および取得するために使用されます。 28. IronXLは、数値、文字列、日付のデータ型変換を自動的に処理します。 4.スタイルとフォーマット: IronXL は包括的なスタイル API を提供します。 Style.Formatプロパティを使って価格列に通貨形式を適用することもできます。これは、プロフェッショナルなレポートを作成するために不可欠な機能です。 スタイリングオプションの詳細については、StyleオブジェクトのAPIドキュメントをご覧ください。 5. ファイルの保存:最後に、workbook.SaveAs("ProductReport.xlsx")でメモリ内のワークブックをファイルシステムに書き込みます。 5.ファイルの保存:最後に、 workbook.SaveAs("ProductReport.xlsx")は、メモリ内のブックをファイル システムに書き込みます。 IronXLは、.xlsx、.xls、.csv、および.tsvなど、さまざまなフォーマットをサポートしており、データのエクスポート方法に柔軟性を持たせます。
既存のExcelファイルにデータを書き込むにはどうすればよいですか?
これは、ログの記録やデータセットへのレコードの追加、またはレポートの更新によくあります。 これは、ログ記録、データセットへのレコードの追加、またはレポートの更新によく見られます。 次の例では、既存のスプレッドシートを開いて、最後に使用された行を見つけ、新しいデータを追加する方法を示します。
以下の例は、既存のスプレッドシートを開き、最後に使用された行を見つけ、新しいデータを追加する方法を示しています。
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
' (Assuming the Product class from the previous example is available)
Module Program
Sub Main(args As String())
' Ensure the file from our previous example exists.
If Not System.IO.File.Exists("ProductReport.xlsx") Then
Console.WriteLine("Please run the first example to create ProductReport.xlsx")
Return
End If
' 1. Load the existing workbook from the file system.
Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 2. Find the first empty row to append new data.
' The LastRowUsed property gives us the last row with data.
Dim lastRow = sheet.Info.LastRowUsed
Dim newRowIndex = lastRow.RowNumber + 1
' 3. Define the new data to be added.
Dim newProducts As New List(Of Product) From {
New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
}
' 4. Loop through the new data and write it to the worksheet.
For i As Integer = 0 To newProducts.Count - 1
Dim product = newProducts(i)
Dim currentRow = newRowIndex + i
sheet("A" & currentRow).Value = product.ID
sheet("B" & currentRow).Value = product.Name
sheet("C" & currentRow).Value = product.Price
Next
' 5. Re-apply formatting and auto-fit columns to include new data.
Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
priceColumn.Style.Format = "$#,##0.00"
sheet.Columns.AutoFit()
' 6. Save the changes back to the original file.
workbook.Save()
' Or save as a new file to preserve the original.
' workbook.SaveAs("ProductReport_Updated.xlsx")
End Sub
End ModuleImports IronXL
Imports System.Collections.Generic
Imports System.Linq
' (Assuming the Product class from the previous example is available)
Module Program
Sub Main(args As String())
' Ensure the file from our previous example exists.
If Not System.IO.File.Exists("ProductReport.xlsx") Then
Console.WriteLine("Please run the first example to create ProductReport.xlsx")
Return
End If
' 1. Load the existing workbook from the file system.
Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 2. Find the first empty row to append new data.
' The LastRowUsed property gives us the last row with data.
Dim lastRow = sheet.Info.LastRowUsed
Dim newRowIndex = lastRow.RowNumber + 1
' 3. Define the new data to be added.
Dim newProducts As New List(Of Product) From {
New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
}
' 4. Loop through the new data and write it to the worksheet.
For i As Integer = 0 To newProducts.Count - 1
Dim product = newProducts(i)
Dim currentRow = newRowIndex + i
sheet("A" & currentRow).Value = product.ID
sheet("B" & currentRow).Value = product.Name
sheet("C" & currentRow).Value = product.Price
Next
' 5. Re-apply formatting and auto-fit columns to include new data.
Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
priceColumn.Style.Format = "$#,##0.00"
sheet.Columns.AutoFit()
' 6. Save the changes back to the original file.
workbook.Save()
' Or save as a new file to preserve the original.
' workbook.SaveAs("ProductReport_Updated.xlsx")
End Sub
End Module詳細な説明
- ワークブックの読み込み:
WorkBook.Create()の代わりに、WorkBook.Load("ProductReport.xlsx")を使用します。
1.ワークブックの読み込み: WorkBook.Create()の代わりに、 WorkBook.Load("ProductReport.xlsx")を使用します。 これにより、指定されたファイルが開かれ、その内容が操作の準備が整ったWorkBookオブジェクトに解析されます。 2.挿入ポイントの検索:データを追加する際の重要な課題は、書き込みを開始する場所を見つけることです。 IronXLはこれを、データを含む最後のRowオブジェクトを返すsheet.Info.LastRowUsedプロパティを使って簡素化します。 私たちは単にその行番号を取得し、1を加えて最初の空行を見つけます。 3.データの追加:新しいデータを書き込むプロセスは前の例と同じです。 新しいProductリストを繰り返し処理し、特定された空の行にセルを填充します。 4.変更の保存: workbook.Save()メソッドは、メモリから変更されたブックで元のファイルを上書きします。 元のファイルを保持する必要がある場合は、新しいファイル名でSaveAs()を使用してください。コメントアウトされた行に示されています。
SQL Serverなどのデータソースからのデータを扱う開発者にとって、DataTableの内容を直接Excelシートに書き込むことは一般的なタスクです。
SQL Serverのようなソースからデータを扱う開発者にとって、一般的な作業はDataTableの内容をExcelシートに直接書き込むことです。 IronXLは、行や列を手動でループさせる必要を排除する組み込みメソッドでこれを効率化します。
この例では、DataTableを填充し、それを新しいExcelファイルに一度でエクスポートする方法を示しています。
Imports IronXL
Imports System.Data
Module Program
Sub Main(args As String())
' 1. Create and populate a DataTable. This often comes from a database query.
Dim dt As New DataTable("EmployeeData")
dt.Columns.Add("EmployeeID", GetType(Integer))
dt.Columns.Add("FullName", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Columns.Add("HireDate", GetType(Date))
dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))
' 2. Create a new workbook.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' 3. Write the DataTable to the worksheet starting at cell A1.
' The second parameter (True) indicates that column headers should be included.
sheet.Write(dt, "A1", True)
' 4. Apply some styling for a more polished look.
sheet.Columns.AutoFit()
Dim headerRange = sheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue
Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
dateColumn.Style.Format = "yyyy-mm-dd"
' 5. Save the workbook.
workbook.SaveAs("EmployeeDatabaseExport.xlsx")
End Sub
End ModuleImports IronXL
Imports System.Data
Module Program
Sub Main(args As String())
' 1. Create and populate a DataTable. This often comes from a database query.
Dim dt As New DataTable("EmployeeData")
dt.Columns.Add("EmployeeID", GetType(Integer))
dt.Columns.Add("FullName", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Columns.Add("HireDate", GetType(Date))
dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))
' 2. Create a new workbook.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' 3. Write the DataTable to the worksheet starting at cell A1.
' The second parameter (True) indicates that column headers should be included.
sheet.Write(dt, "A1", True)
' 4. Apply some styling for a more polished look.
sheet.Columns.AutoFit()
Dim headerRange = sheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue
Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
dateColumn.Style.Format = "yyyy-mm-dd"
' 5. Save the workbook.
workbook.SaveAs("EmployeeDatabaseExport.xlsx")
End Sub
End Moduleこれにより、DataTableの構造が賢くワークシートにマッピングされ、指定された場合はカラムヘッダーも含まれます。 指定された場合、列ヘッダーを含むDataTable構造をワークシートにインテリジェントにマッピングします。 これはデータ駆動型アプリケーションにとって強力な機能であり、手動反復に比べて大幅な時間節約になります。 データのインポートとエクスポートの詳細については、異なるスプレッドシート形式の変換に関するチュートリアルをご覧ください。
Excelファイルに書き込むときに他に何ができますか?
データの書き込みは始まりに過ぎません。 IronXLは、包括的な機能を提供しています。以下その一例です: IronXLは、以下の包括的な機能を提供します。
-数式:プログラムで数式を設定および計算します。 - チャート:情報を視覚化するためにワークシートのデータからさまざまなタイプのチャートを生成します。 -グラフ:ワークシート データからさまざまな種類のグラフを作成し、情報を視覚化します。 -データの検証:特定の範囲内の数値のみ、またはドロップダウン リストの値のみを許可するなど、セルにルールを適用します。 -条件付き書式:セルの値に基づいてスタイルを適用し、重要なデータ ポイントを強調表示します。 -セキュリティと保護:ワークシートまたはワークブック全体をパスワードで保護し、アクセスを制御して変更を防止します。
VB.NETでのExcelファイルへの書き込みを今すぐ始めましょう
今日からVB.NETでExcelファイルの書き込みを開始しましょう
Office Interopの複雑さと依存関係を避けることで、より信頼性が高く、パフォーマンスが優れ、展開しやすいアプリケーションを構築できます。 Excelファイルをゼロから作成する、既存のレポートにデータを追加する、またはDataTableをエクスポートする必要がある場合、IronXLは効率的に仕事を完了するための直感的で強力なAPIを提供します。 IronXLをダウンロードして、プロジェクトにどれだけ簡単に統合できるか確認するために無料トライアルライセンスを試してみてください。
より広範なニーズを持つ方には、IronXLがIron Suite for .NETにも含まれていることを思い出してください。
より広範なニーズを持つ方々のために、IronXLはIron Suite for .NETの一部であることを忘れないでください。 1 つのライセンスで、PDF、バーコード、OCR などを処理するための包括的なライブラリ セットにアクセスできるようになり、あらゆる .NET 開発者に優れた価値を提供します。
よくある質問
VB.NET で Office インターロップを使用せずに Excel ファイルに書き込むにはどうすればよいですか?
Office インターロップを必要とせずに、IronXL ライブラリを使用して VB.NET で Excel ファイルに書き込むことができます。IronXL を使用すると、Microsoft Excel をインストールしなくても、Excel ファイルをシームレスに作成、読み取り、および操作できます。
Excel 自動化のために Office インターロップよりも IronXL を使用することの利点は何ですか?
IronXL は Office インターロップよりも大幅な利点を提供します。例としては、パフォーマンスの向上、簡単なデプロイ、および Microsoft Excel をインストールすることなくサーバー上で実行する機能などがあります。.NET アプリケーションの Excel 自動化タスクを簡素化します。
VB.NET プロジェクトで Excel ファイルを操作するために IronXL をインストールする方法は?
Visual Studio 内の NuGet パッケージ マネージャーを使用して、VB.NET プロジェクトに IronXL をインストールします。IronXL.Excel を検索してインストールします。あるいは、パッケージ マネージャー コンソールで次のコマンドを使用します: Install-Package IronXL.Excel。
VB.NET で新しい Excel ファイルを作成してデータを挿入する方法は?
IronXL を使用して、新しい Excel ファイルを WorkBook.Create() を呼び出して作成できます。ワークシートにアクセスし、sheet("A1").Value = "Example Data" のように A1 形式を使用してデータを挿入します。SaveAs() メソッドを使用してファイルを保存します。
IronXL を使用して既存の Excel ファイルにデータを追加することは可能ですか?
IronXL を使用して既存の Excel ファイルにデータを追加するには、WorkBook.Load("filename.xlsx") でブックを読み込みます。sheet.Info.LastRowUsed を使用して次の空行を決定し、新しいデータを挿入します。workbook.Save() を使用して変更を保存します。
VB.NET で Excel シートに DataTable をエクスポートすることは可能ですか?
はい、IronXL は DataTable を Excel シートにエクスポートするのを簡素化します。sheet.Write() メソッドを使用して、ワークシートに効率的にテーブル全体を転送します。
IronXL で取り扱うことのできる Excel ファイル形式は何ですか?
IronXL は .xlsx、.xls、.csv、.tsv を含む複数の Excel ファイル形式をサポートしており、さまざまな種類のスプレッドシートデータを柔軟に扱うことができます。
IronXL を使用して Excel セルをフォーマットし、数式を使用することはできますか?
はい、IronXL は豊富なフォーマットと数式のサポートを提供しています。フォント、色、境界、数字の形式をプログラムで調整し、"=SUM(A1:A10)" のような Excel 数式を設定して計算を行うことができます。









