如何使用 C# 在 Excel 中選擇一個範圍 | IronXL

如何使用C#在Excel中選擇範圍

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL使C#開發者能夠選擇和操作Excel範圍、行和列,無需依賴Office Interop。 使用簡單的語法如GetRow() 用於行,GetColumn() 用於列編程選擇。

快速開始:在IronXL中一行程式碼選擇單元範圍

在IronXL工作表上使用一個簡單的GetRange調用來選擇像 "A1:C3" 這樣的矩形範圍—無需迴圈,省心省力。 這是一次性操作多個單元的最快方法。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 複製並運行這段程式碼片段。

    var range = workSheet.GetRange("A1:C3");
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronXL,透過免費試用

    arrow pointer


如何在IronXL中選擇不同型別的範圍?

使用IronXL,您可以在選定的範圍上執行各種操作,如排序、計算和聚合。 該程式庫提供了直觀的範圍選擇方法,反映了Excel的本機功能,並提供程式控制。

範圍選擇構成了許多Excel操作的基礎。 無論您是進行數學計算、應用格式化,還是提取資料,選擇正確的單元格是您的第一步。IronXL通過其靈活的範圍選擇API使這一過程簡單明瞭。

在應用修改或移動單元格值的方法時,受影響的範圍、行或列將相應更新其值。

IronXL允許我們使用IronXL.Ranges.Range

如何選擇矩形範圍的單元格?

要從單元格B8選擇範圍,可以使用以下程式碼:

:path=/static-assets/excel/content-code-examples/how-to/select-range-range.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xls");
WorkSheet workSheet = workBook.WorkSheets.First();

// Get range from worksheet
var range = workSheet["A2:B8"];
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xls")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Get range from worksheet
Private range = workSheet("A2:B8")
$vbLabelText   $csharpLabel
電子表格顯示範圍B2:C8以粉紅色突出顯示,演示了用於樣本資料網格的可視選擇

操作選定範圍

一旦選擇了範圍,IronXL提供大量操作可以執行:

:path=/static-assets/excel/content-code-examples/how-to/select-range-3.cs
using IronXL;
using System;
using System.Linq;

// Load an existing spreadsheet
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Select a range and perform operations
var range = workSheet["A1:C5"];

// Apply formatting to the entire range
range.Style.BackgroundColor = "#E8F5E9";
range.Style.Font.Bold = true;

// Iterate through cells in the range
foreach (var cell in range)
{
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Value}");
}

// Get sum of numeric values in the range
decimal sum = range.Sum();
Console.WriteLine($"Sum of range: {sum}");
Imports IronXL
Imports System
Imports System.Linq

' Load an existing spreadsheet
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.WorkSheets.First()

' Select a range and perform operations
Dim range = workSheet("A1:C5")

' Apply formatting to the entire range
range.Style.BackgroundColor = "#E8F5E9"
range.Style.Font.Bold = True

' Iterate through cells in the range
For Each cell In range
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Value}")
Next

' Get sum of numeric values in the range
Dim sum As Decimal = range.Sum()
Console.WriteLine($"Sum of range: {sum}")
$vbLabelText   $csharpLabel

對於更復雜的電子表格操作,請參考詳細的API文件

如何選擇整行?

要選擇第4行,可以使用帶有零基索引的GetRow(3)方法。 這將包括第4行的所有單元格,即使相應行中的某些單元格為空。

:path=/static-assets/excel/content-code-examples/how-to/select-range-row.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xls");
WorkSheet workSheet = workBook.WorkSheets.First();

// Get row from worksheet
var row = workSheet.GetRow(3);
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xls")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Get row from worksheet
Private row = workSheet.GetRow(3)
$vbLabelText   $csharpLabel
電子表格中已選擇的第4行,顯示從B4至F4的紅色邊框,以演示行選擇

行選擇特別有用,當您需要逐行處理資料。例如,當載入電子表格資料以進行分析時:

:path=/static-assets/excel/content-code-examples/how-to/select-range-5.cs
using IronXL;
using System;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Process each row
for (int i = 0; i < workSheet.RowCount; i++)
{
    var row = workSheet.GetRow(i);
    
    // Skip empty rows
    if (row.IsEmpty) continue;
    
    // Process row data
    foreach (var cell in row)
    {
        // Your processing logic here
        Console.Write($"{cell.Value}\t");
    }
    Console.WriteLine();
}
Imports IronXL
Imports System

Dim workBook As WorkBook = WorkBook.Load("data.xlsx")
Dim workSheet As WorkSheet = workBook.WorkSheets.First()

' Process each row
For i As Integer = 0 To workSheet.RowCount - 1
    Dim row = workSheet.GetRow(i)
    
    ' Skip empty rows
    If row.IsEmpty Then Continue For
    
    ' Process row data
    For Each cell In row
        ' Your processing logic here
        Console.Write($"{cell.Value}" & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

如何選擇整列?

要選擇列C,可以使用workSheet["C:C"]。 像GetRow 方法一樣,它將包括所有相關的單元格,無論指定列是否為空。

:path=/static-assets/excel/content-code-examples/how-to/select-range-column.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xls");
WorkSheet workSheet = workBook.WorkSheets.First();

// Get column from worksheet
var column = workSheet.GetColumn(2);
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xls")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Get column from worksheet
Private column = workSheet.GetColumn(2)
$vbLabelText   $csharpLabel
電子表格中突出顯示的列C顯示瞭如何在範圍選擇範例中選擇整列

所有的行和列索引位置都符合零基索引。

列選擇在處理如財務報告或資料庫導出這樣的柱狀資料時顯得尤為重要。 當建立新電子表格時,您可能會使用它。

:path=/static-assets/excel/content-code-examples/how-to/select-range-7.cs
using IronXL;
using System;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Data");

// Add header row
workSheet["A1"].Value = "Quantity";
workSheet["B1"].Value = "Price";
workSheet["C1"].Value = "Total";

// Add sample data
for (int i = 2; i <= 10; i++)
{
    workSheet[$"A{i}"].Value = i - 1;
    workSheet[$"B{i}"].Value = 10.5 * (i - 1);
}

// Select the Total column and apply formula
var totalColumn = workSheet.GetColumn(2); // Column C
for (int i = 2; i <= 10; i++)
{
    workSheet[$"C{i}"].Formula = $"=A{i}*B{i}";
}

workBook.SaveAs("calculations.xlsx");
Imports IronXL
Imports System

' Create a new workbook
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Data")

' Add header row
workSheet("A1").Value = "Quantity"
workSheet("B1").Value = "Price"
workSheet("C1").Value = "Total"

' Add sample data
For i As Integer = 2 To 10
    workSheet($"A{i}").Value = i - 1
    workSheet($"B{i}").Value = 10.5 * (i - 1)
Next

' Select the Total column and apply formula
Dim totalColumn = workSheet.GetColumn(2) ' Column C
For i As Integer = 2 To 10
    workSheet($"C{i}").Formula = $"=A{i}*B{i}"
Next

workBook.SaveAs("calculations.xlsx")
$vbLabelText   $csharpLabel

如何結合多個範圍?

IronXL 提供了使用IronXL.Ranges.Range物件的靈活性。 通過使用+運算符,您可以輕鬆連接或合併範圍,以建立新範圍。 這個特性在需要對非連續的單元格進行操作時特別有用。 有關高級結合技術,請參見結合Excel範圍範例

直接使用+運算符結合行和列是不支持的。

請注意結合範圍會修改原始範圍。
在下面的程式碼片段中,變數range將被修改以包含已結合的範圍。 )}]

:path=/static-assets/excel/content-code-examples/how-to/select-range-combine-range.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xls");
WorkSheet workSheet = workBook.WorkSheets.First();

// Get range from worksheet
var range = workSheet["A2:B2"];

// Combine two ranges
var combinedRange = range + workSheet["A5:B5"];
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xls")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Get range from worksheet
Private range = workSheet("A2:B2")

' Combine two ranges
Private combinedRange = range + workSheet("A5:B5")
$vbLabelText   $csharpLabel

高級範圍選擇技術

IronXL支持複雜的範圍選擇場景,模仿Excel的功能:

:path=/static-assets/excel/content-code-examples/how-to/select-range-9.cs
using IronXL;
using System;
using System.Linq;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Select multiple non-adjacent ranges
var headerRange = workSheet["A1:E1"];
var dataRange1 = workSheet["A5:E10"];
var dataRange2 = workSheet["A15:E20"];

// Combine ranges for batch operations
var combinedData = dataRange1 + dataRange2;

// Apply consistent formatting across combined ranges
combinedData.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
combinedData.Style.Font.Height = 11;

// Copy formatting from one range to another
var sourceFormat = headerRange.Style;
dataRange1.First().Style = sourceFormat;
Imports IronXL
Imports System
Imports System.Linq

Dim workBook As WorkBook = WorkBook.Load("data.xlsx")
Dim workSheet As WorkSheet = workBook.WorkSheets.First()

' Select multiple non-adjacent ranges
Dim headerRange = workSheet("A1:E1")
Dim dataRange1 = workSheet("A5:E10")
Dim dataRange2 = workSheet("A15:E20")

' Combine ranges for batch operations
Dim combinedData = dataRange1 + dataRange2

' Apply consistent formatting across combined ranges
combinedData.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin
combinedData.Style.Font.Height = 11

' Copy formatting from one range to another
Dim sourceFormat = headerRange.Style
dataRange1.First().Style = sourceFormat
$vbLabelText   $csharpLabel

處理公式時,範圍選擇變得更加強大:

// Select a range for formula application
var calculationRange = workSheet["D2:D20"];

// Apply formulas that reference other ranges
for (int i = 2; i <= 20; i++)
{
    workSheet[$"D{i}"].Formula = $"=SUM(A{i}:C{i})";
}

// Use range in aggregate functions
var sumRange = workSheet["B2:B20"];
decimal totalSum = sumRange.Sum();
decimal average = sumRange.Avg();
decimal max = sumRange.Max();
// Select a range for formula application
var calculationRange = workSheet["D2:D20"];

// Apply formulas that reference other ranges
for (int i = 2; i <= 20; i++)
{
    workSheet[$"D{i}"].Formula = $"=SUM(A{i}:C{i})";
}

// Use range in aggregate functions
var sumRange = workSheet["B2:B20"];
decimal totalSum = sumRange.Sum();
decimal average = sumRange.Avg();
decimal max = sumRange.Max();
Imports System

' Select a range for formula application
Dim calculationRange = workSheet("D2:D20")

' Apply formulas that reference other ranges
For i As Integer = 2 To 20
    workSheet($"D{i}").Formula = $"=SUM(A{i}:C{i})"
Next

' Use range in aggregate functions
Dim sumRange = workSheet("B2:B20")
Dim totalSum As Decimal = sumRange.Sum()
Dim average As Decimal = sumRange.Avg()
Dim max As Decimal = sumRange.Max()
$vbLabelText   $csharpLabel

範圍選擇的最佳實踐

在IronXL中使用範圍時,請考慮這些性能和可靠性提示:

  1. 使用特定的範圍地址,當您知道所需的確切單元格時。 這比選擇整行或整列更有效。

  2. 在選擇前驗證範圍邊界,以避免運行時錯誤:
// Check if range exists before selection
int lastRow = workSheet.RowCount;
int lastColumn = workSheet.ColumnCount;

if (lastRow >= 10 && lastColumn >= 3)
{
    var safeRange = workSheet["A1:C10"];
    // Process range
}
// Check if range exists before selection
int lastRow = workSheet.RowCount;
int lastColumn = workSheet.ColumnCount;

if (lastRow >= 10 && lastColumn >= 3)
{
    var safeRange = workSheet["A1:C10"];
    // Process range
}
' Check if range exists before selection
Dim lastRow As Integer = workSheet.RowCount
Dim lastColumn As Integer = workSheet.ColumnCount

If lastRow >= 10 AndAlso lastColumn >= 3 Then
    Dim safeRange = workSheet("A1:C10")
    ' Process range
End If
$vbLabelText   $csharpLabel
  1. 利用範圍迭代以實現高效處理:
var dataRange = workSheet["A1:E100"];

// Efficient: Process in batches
foreach (var cell in dataRange)
{
    if (cell.IsNumeric)
    {
        cell.Value = (decimal)cell.Value * 1.1; // 10% increase
    }
}
var dataRange = workSheet["A1:E100"];

// Efficient: Process in batches
foreach (var cell in dataRange)
{
    if (cell.IsNumeric)
    {
        cell.Value = (decimal)cell.Value * 1.1; // 10% increase
    }
}
Dim dataRange = workSheet("A1:E100")

' Efficient: Process in batches
For Each cell In dataRange
    If cell.IsNumeric Then
        cell.Value = CType(cell.Value, Decimal) * 1.1D ' 10% increase
    End If
Next
$vbLabelText   $csharpLabel

對於複製單元格範圍等更複雜的情況,IronXL 提供了可以保持格式和公式的專門方法。

開始使用IronXL

要在您的項目中使用IronXL的範圍選擇功能,請從詳細的入門指南開始。 通過NuGet套件管理器安裝IronXL:

Install-Package IronXL.Excel

或使用 .NET CLI:

dotnet add package IronXL.Excel

範圍選擇是C#中Excel操作的基礎。 利用IronXL直觀的API,您可以高效地選擇、操作和轉換Excel資料,而無需複雜的Office Interop。無論您是在生成報告、分析資料,還是自動化處理電子表格任務,掌握範圍選擇將大大提高您的工作效率。

常見問題

如何使用 C# 在 Excel 中選擇一個範圍的儲存格?

using IronXL,您可以使用簡單的語法如 workSheet["A1:C3"] 或 workSheet.GetRange("A1:C3") 選擇一個範圍的儲存格。這使您無需依賴 Office Interop 即可選擇矩形範圍。

我可以程式化地選擇整個行和列嗎?

可以,IronXL 提供 GetRow() 和 GetColumn() 方法來選擇 Excel 工作表中的整個行和列。這些方法提供對行和列選擇的程式化控制,無需 Excel 安裝。

如何在 C# 中合併多個儲存格範圍?

IronXL 允許您使用 '+' 運算符來合併多個範圍。此功能使您能夠程式化地處理不連續的儲存格選擇。

我可以對選定範圍執行哪些操作?

當您使用 IronXL 選擇了一個範圍後,您可以執行包括排序、數學計算、套用格式、遍歷儲存格和彙總資料(如計算總和)等各種操作。

如何對選定範圍套用格式?

在 IronXL 中選擇範圍後,您可以使用 Style 屬性套用格式。例如,您可以用 range.Style.BackgroundColor 設定背景顏色,並用 range.Style.Font.Bold = true 設定文字粗體。

我可以遍歷選定範圍中的儲存格嗎?

可以,IronXL 允許您使用 foreach 迴圈遍歷選定範圍中的儲存格。每個儲存格提供其值和地址的存取,使得逐儲存格處理資料變得簡單。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

想要快速證明嗎? PM > Install-Package IronXL.Excel
運行一個範例 觀看您的資料成為試算表。