Используйте имя листа вместо первого листа с помощью epplus в C#
Я пытаюсь создать функцию, которая будет считывать данные из определенных листов excel, которые затем будут загружены в соответствующие таблицы в базе данных. Для этого я использую EPPlus в C#.
Текущий рабочий код выглядит примерно так:
public static DataTable GetDataTableFromExcel(string path,bool hasHeader = true) { using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(path)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); DataTable tbl = new DataTable(); foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow = hasHeader ? 2 : 1; for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) { var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; DataRow row = tbl.Rows.Add(); foreach (var cell in wsRow) { row[cell.Start.Column - 1] = cell.Text; } } return tbl; }
Я попытался передать имя файла в виде строки в функцию, но получил ошибку, сказав, что она ожидает идентификатор. Может ли кто - нибудь дать мне идеи о том, как это исправить?
Что я уже пробовал:
public static DataTable GetDataTableFromExcel(string path, string fileN, bool hasHeader = true) { using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(path)) { pck.Load(stream); } //var ws = pck.Workbook.Worksheets.First(); var ws = pck.Workbook.Worksheets.(fileN); DataTable tbl = new DataTable();