【问题标题】:How to get range in EPPlus如何在 EPPlus 中获取范围
【发布时间】:2020-03-26 05:54:36
【问题描述】:

有谁知道如何在 EPPlus 中执行以下操作。

以下是使用VSTO时的方式。我正在尝试从工作表中获取一些特定范围。

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

【问题讨论】:

    标签: c# excel epplus


    【解决方案1】:

    你可以用这个

    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 
    

    【讨论】:

      【解决方案2】:

      我对 `get_Range' 并不完全熟悉,但根据文档,它的工作原理与 EPPlus 的单元格对象一样。所以这个:

      [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();
          }
      }
      

      在输出窗口中的结果:

      {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}
      

      【讨论】:

        【解决方案3】:

        AntonE 的回答是正确的,但我想我会指出下标运算符中每个索引的含义:

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

        因此,ws.Cells[1,1,1,10] 的意思是:“获取从第一行第一列到第 10 列但第一行的所有单元格”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-07
          • 1970-01-01
          • 2019-11-11
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 2017-01-22
          相关资源
          最近更新 更多