我正在使用 EPPlus 创建 Excel 文件。我需要从 ExcelWorksheet 或 ExcelWorkbook 对象获取包含工作表的文件的名称。我在 ExcelWorkbook 对象中找不到任何“名称”属性,也找不到从 ExcelWorkbook 或 ExcelWorksheet 返回到包含的 ExcelPackage 的任何方法。
是否有一个属性或属性路径可以用来从 ExcelWorksheet 获取文件名?
澄清我的意图:
我正在创建一个 API,用于创建表差异报告。它主要与 ADO.NET DataTables 一起使用,但它也具有采用互操作工作表或 EPPlus ExcelWorksheets 的适配器,它将转换为 DataTables 进行处理。
我只需要包含 ExcelWorksheet 的文件名,以便可以将其打印在输出报告上以保持清晰。该 API 仅在 DataTable 或大致相当于表的对象(例如 Worksheets 或 ExcelWorksheets)范围内真正起作用。它不处理数据集、工作簿、ExcelWorkbooks 或 ExcelPackages(除非它使用 EPPlus 输出报告文件)。
因此,我非常希望 API 函数需要最少的参数,例如 DataTables、Worksheets、ExcelWorksheets 和一些位标志选项。如果函数的不同重载采用类似的参数(即采用两个 DataTables 或两个 Worksheets 或两个 ExcelWorksheets),并且对于 EPPlus 输入情况不需要额外的困惑参数,那就太好了。
通过互操作,可以非常轻松地从工作表 (mySheet.Parent.Name) 获取文件名,并且 EPPlus 提供了在对象层次结构中向下移动的简单方法 (myPackage.Workbook.Worksheets[1]),因此我假设有某种方法可以从 ExcelWorksheet 对象向上移回层次结构。
最佳答案
正如 Donald Jansen 在评论中所建议的,解决方案是编辑 EPPlus 源代码。
将以下属性添加到 ExcelWorkbook.cs:
//Get the package containing this workbook.
public ExcelPackage Package { get { return _package; } }
//Get the name of the file of this workbook.
public String Name { get { return _package.File.Name; } }
现在您可以根据自己的喜好放大和缩小对象层次结构。
关于c# - EPPlus - 从工作表中获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832512/