【问题标题】:EPPlus - Get file name from worksheetEPPlus - 从工作表中获取文件名
【发布时间】:2015-09-28 22:01:32
【问题描述】:

我正在使用 EPPlus 创建 Excel 文件。我需要从 ExcelWorksheet 或 ExcelWorkbook 对象中获取包含工作表的文件的名称。我在 ExcelWorkbook 对象中找不到任何“名称”属性,也找不到从 ExcelWorkbook 或 ExcelWorksheet 回到包含 ExcelPackage 的任何方式。

是否有我可以用来从 ExcelWorksheet 获取文件名的属性或属性路径?


澄清我的意图:

我正在创建一个用于创建表格差异报告的 API。它主要与 ADO.NET DataTables 一起使用,但它也有接受互操作工作表或 EPPlus ExcelWorksheets 的适配器,它将转换为 DataTables 进行处理。

我只需要包含 ExcelWorksheet 的文件名,以便可以将其打印在输出报告上以清楚起见。 API 仅在 DataTables 或大致相当于表的对象(如 Worksheets 或 ExcelWorksheets)范围内真正起作用。它不处理数据集、工作簿、ExcelWorkbooks 或 ExcelPackages(除非它使用 EPPlus 输出报告文件)。

因此,我非常希望 API 函数需要最少的参数,例如 DataTables、Worksheets、ExcelWorksheets 和一些位标志选项。如果函数的不同重载采用类似的参数(即采用两个 DataTables 或两个 Worksheets 或两个 ExcelWorksheets),并且对于 EPPlus 输入案例不需要额外的杂乱参数,这也将是一件好事。

使用互操作,从工作表 (mySheet.Parent.Name) 中获取文件名非常容易,并且 EPPlus 提供了向下移动对象层次结构 (myPackage.Workbook.Worksheets[1]) 的简单方法,所以我假设有某种方法可以从 ExcelWorksheet 对象上移回层次结构。

【问题讨论】:

  • 呃,这不是倒退吗?您从文件中获取工作表。所以你已经知道了。
  • 如果您愿意,您可以随时获取源代码并自行添加。但是您可能需要这样做,然后每次发布新版本时,只需转到 epplus.codeplex.com 并进入“源代码”
  • 谢谢唐纳德,我不知道为什么我忽略了这一点。这就是开源的目的不是吗。 :D
  • 我相信这只是将“public ExcelPackage Package {get {return _package;}} 添加到 Workbook.cs 的问题,但 CodePlex 现在遇到了一些问题。

标签: c# excel epplus


【解决方案1】:

正如 Donald Jansen 在 cmets 中所建议的,解决方案是编辑 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; } }

现在您可以随心所欲地放大和缩小对象层次结构。

【讨论】:

  • 如何获取路径??而不是文件名。
  • 您可以从 ExcelPackage 的 File 属性中获取路径。这是一个 System.IO.FileInfo 对象。您可以添加上面的示例,只需将“Name”更改为“FullName”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多