c# - EPPlus - 从工作表中获取文件名

标签 c# excel epplus

我正在使用 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/

相关文章:

python - 在 pandas 列标题上方插入一行以将标题名称保存在 csv/excel 文件的第一个单元格中

c# - 条件格式 excel epplus if (cell.value<0) 填红色

javascript - 如何在 ASP.NET 中从 JavaScript 触发按钮单击事件

c# - 尝试通过控制同时请求来解决可伸缩性问题

excel - 为什么我会遇到这个 If 语句问题?

c# - 使用 EPPlus 在 GDI+ Drawings.AddPicture 中发生一般性错误

c# - 以编程方式在 Excel 中嵌入对象

C# 列格式化

c# - 以下 XAML 是否可能泄漏内存?

excel - 输入框错误处理