2015-09-28 4 views
1

Я использую EPPlus для создания файлов Excel. Мне нужно получить имя файла, содержащего рабочий лист, из объекта ExcelWorksheet или ExcelWorkbook. Я не могу найти какое-либо свойство «name» в объекте ExcelWorkbook или любой способ получить из ExcelWorkbook или ExcelWorksheet обратно в содержащий ExcelPackage.EPPlus - получить имя файла из рабочего листа

Есть ли свойство или путь к свойствам, которые я могу использовать для получения из ExcelWorksheet для имени файла?


Для уточнения моего намерения:

Я создаю API, который будет создавать отчеты разностных таблиц. Он в основном работает с ADO.NET DataTables, но он также имеет адаптеры, которые используют интерактивные листы или EPPlus ExcelWorksheets, которые он преобразует в DataTables для обработки.

Мне нужно только имя файла, содержащего ExcelWorksheet, чтобы он мог быть напечатан на выходном отчете для ясности. API действительно работает только в области DataTables или объектов, которые примерно эквивалентны таблицам, таким как Worksheets или ExcelWorksheets. Он не касается DataSets, Workbooks, ExcelWorkbooks или ExcelPackages (кроме случаев, когда он выводит файл отчета с использованием EPPlus).

Итак, мне очень хотелось бы, чтобы функции API требовали минимального количества параметров, таких как DataTables, Worksheets, ExcelWorksheets и некоторые опции bitflag. Также было бы неплохо, если бы разные перегрузки функций выполняли аналогичные параметры (т. Е. Взятие двух таблиц данных или двух рабочих листов или двух таблиц ExcelWorks) и не требовали дополнительных параметров беспорядка для случая ввода EPPlus.

С interop очень легко получить имя файла из Листа (mySheet.Parent.Name), а EPPlus предоставляет простые способы перемещения по иерархии объектов (myPackage.Workbook.Worksheets [1]), поэтому Я предположил, что будет какой-то способ переместить иерархию из объекта ExcelWorksheet.

+0

Эмм, это наоборот, не так ли? Вы получаете рабочий лист из файла. Значит, вы уже это знаете. –

+0

Ну, если вы хотите, вы всегда можете получить исходный код и добавить его сами. НО вам может понадобиться сделать это, каждый раз, когда выйдет новый релиз, просто перейдите по адресу http://epplus.codeplex.com/ и перейдите в «Исходный код» –

+0

Спасибо Дональд, я не знаю, почему я этого не заметил. Это то, для чего открыт открытый источник, не так ли. : D – JamesFaix

ответ

3

Как было предложено Дональдом Янсеном в комментариях, решение заключается в редактировании исходного кода 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; } } 

Теперь вы можете масштабировать вверх и вниз по иерархии объектов к содержанию вашего сердца.

+0

Как я могу получить Path? Вместо имени файла –

+0

Вы можете получить путь из свойства файла ExcelPackage. Это объект System.IO.FileInfo. Вы можете добавить приведенный выше пример и просто изменить «Имя» на «Полное имя», – JamesFaix

 Смежные вопросы

  • Нет связанных вопросов^_^