如何在Open XML SDK for Excel中按名称获取Sheet

时间:2018-04-06 13:24:27

标签: c# excel openxml-sdk

我正在测试可能用Open XML SDK库在用C#编写的ASP.Net MVC应用程序中替换EPPlus库,因为EPPlus中的一个错误我们不能用Macro Enabled Spreadsheets压缩。有人认为我喜欢EPPlus,我可以使用它:

public ExcelWorksheet this[string Name] { get; }

按名称获取工作表。查看Open XML SDK中Sheets类的定义,没有类似的构造。

我已经有了标签名称。我需要获取相关的工作表,这样我就可以编辑它而不需要在每次需要工作表时循环遍历所有工作表。

我找到的所有东西都是相反的,获得了Sheet对象的名称。有没有办法通过Open XML SDK中的选项卡文本获取Sheet?或者我应该下载源并将此功能添加到课程中吗?

3 个答案:

答案 0 :(得分:0)

然而,这个答案有我想要的 - How to retrieve Tab names from excel sheet using OpenXML我正在努力将更改实现到我的应用程序中,然后发布代码。我根据该答案将功能包装到通用实用程序类中。

公用事业类代码:

const { Pool, Client } = require('pg').native

答案 1 :(得分:0)

找到EPPlus源代码的url https://github.com/JanKallman/EPPlus

答案 2 :(得分:0)

您可以使用以下方法来获取带有sheetName的WorkSheet。

public static Worksheet GetworksheetBySheetName(string sheetName)
 {
   using (SpreadsheetDocument document = SpreadsheetDocument.Open(@"C:\Users\Public\Documents\Sheet7.xlsx", true))
   {
     var workbookPart = document.WorkbookPart;
                string relationshipId = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(s => s.Name.Equals(sheetName))?.Id;

     var worksheet = ((WorksheetPart)workbookPart.GetPartById(relationshipId)).Worksheet;

     return worksheet;
   }
}