EPPlus - 从工作表

时间:2015-09-28 22:01:32

标签: c# excel epplus

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

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

澄清我的意图:

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

我只需要包含ExcelWorksheet的文件名,以便可以在输出报告上打印它以便清楚。 API实际上只适用于DataTables或与表大致相同的对象,例如Worksheets或ExcelWorksheets。它不处理DataSet,Workbooks,ExcelWorkbooks或ExcelPackages(除非使用EPPlus输出报告文件)。

所以,我非常希望API函数只需要最少的参数,比如DataTables,Worksheets,ExcelWorksheets和一些bitflag选项。让函数的不同重载采用类似参数(即采用两个DataTables或两个工作表,或两个Excel工作表),并且不需要EPPlus输入案例的额外杂波参数也是很好的。

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

1 个答案:

答案 0 :(得分:4)

正如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; } }

现在,您可以根据心脏内容向上和向下扩展对象层次结构。