有没有比这更好的方法可以从 C# 中的 EPPlus 获取多个不同的列:
range = sheet.Cells["A:B,E:F"];
更新:我想基于其他变量(如
List<int[]> Columns = {[1,2],[5,6]}
)以编程方式逐步浏览列,而不是使用硬编码字母。我一直在尝试使 range.TakeColumns() 工作,但无法实现。
你可以这样做:
using OfficeOpenXml;
namespace Test
{
public partial class Program
{
public static void Main ()
{
FileInfo existingFile = new FileInfo ("01.xlsx");
ExcelPackage package = new ExcelPackage (existingFile);
ExcelWorksheet sheet = package.Workbook.Worksheets [0];
var columnPairs = new List<int[]> () {
new int[] { 1, 2 },
new int[] { 4, 6 }
};
foreach (var pair in columnPairs)
{
// Get the ExcelRangeColumn delimited for this pair of columns
var rangeColumn = sheet.Columns [pair[0], pair[1]];
Console.WriteLine (rangeColumn.StartColumn.ToString() + " - " + rangeColumn.EndColumn.ToString());
// Get the associated ExcelRangeBase and browse all cells
foreach (var cell in rangeColumn.Range)
Console.WriteLine (cell);
}
}
}
}
我只是打印每个列范围中每个单元格的名称(对于具有 6 列 x 3 行的示例表):
1 - 2
A1
B1
A2
B2
A3
B3
4 - 6
D1
E1
F1
D2
E2
F2
D3
E3
F3