简体   繁体   English

如何在 EPPlus 中获取范围

[英]How to get range in EPPlus

Does anyone know how to execute the following in EPPlus.有谁知道如何在 EPPlus 中执行以下操作。

The following is the way when using VSTO.以下是使用VSTO时的方式。 I'm trying to get some specific ranges from a worksheet.我正在尝试从工作表中获取一些特定范围。

sheet.get_Range("7:9,12:12,14:14", Type.Missing)

You can use this你可以用这个

ExcelPackage pck = new ExcelPackage()
var ws = pck.Workbook.Worksheets.Add("Sheet1");
ExcelRange cells = ws.Cells[1, 1, 1, 10];//get 10 cells in row 1 

I am not fully familiar with `get_Range' but based on the documention it works just like the cells object of EPPlus.我不完全熟悉`get_Range',但根据文档,它就像EPPlus 的单元格对象一样工作。 So this:所以这:

[TestMethod]
public void Multi_Range_Test()
{

    //Throw in some data
    var datatable = new DataTable("tblData");
    datatable.Columns.Add(new DataColumn("Col1", typeof(int)));
    datatable.Columns.Add(new DataColumn("Col2", typeof(int)));
    datatable.Columns.Add(new DataColumn("Col3", typeof(int)));

    for (var i = 0; i < 20; i++)
    {
        var row = datatable.NewRow();
        row[0] = i;
        row[1] = i * 10;
        row[2] = i * 100;
        datatable.Rows.Add(row);
    }

    var existingFile2 = new FileInfo(@"c:\temp\temp.xlsx");
    if (existingFile2.Exists)
        existingFile2.Delete();

    using (var package = new ExcelPackage(existingFile2))
    {
        //Add the data
        var sheet = package.Workbook.Worksheets.Add("Sheet1");
        sheet.Cells.LoadFromDataTable(datatable, true);

        var range = sheet.Cells["7:9,12:12,14:14"];
        foreach (var rangeBase in range)
        {
            Console.WriteLine("{{{0} : {1}}}", rangeBase.Address, rangeBase.Value);
        }

        //Save the file
        package.Save();
    }
}

results in this in the output window:结果在输出窗口中:

{A7 : 5}
{B7 : 50}
{C7 : 500}
{A8 : 6}
{B8 : 60}
{C8 : 600}
{A9 : 7}
{B9 : 70}
{C9 : 700}
{A12 : 10}
{B12 : 100}
{C12 : 1000}
{A14 : 12}
{B14 : 120}
{C14 : 1200}

AntonE's answer is correct, but I thought I'd point out what each index in the subscript operator signifies: AntonE 的答案是正确的,但我想我会指出下标运算符中的每个索引的含义:

ExcelWorkSheet.Cells[FromRow, FromCol, ToRow, ToCol]

Hence, ws.Cells[1,1,1,10] means: "Get all cells starting from the first row and first column to the 10th column, but first row".因此, ws.Cells[1,1,1,10]表示:“获取从第一行第一列到第 10 列的所有单元格,但第一行”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM