在C#中使用epplus使用工作表名称而不是第一个工作表 [英] Use worksheet name instead of first sheet using epplus in C#

查看:480
本文介绍了在C#中使用epplus使用工作表名称而不是第一个工作表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个函数,该函数将读取特定Excel工作表中的数据,然后将这些数据上载到数据库中各自的表中。我在C#中使用EPPlus。



当前的工作代码是这样的:

I'm trying to create a function that will read the data from specific excel sheets that will then be uploaded into their respective tables in a database. I'm using EPPlus in C# for this.

The current working code is something like this:

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





我尝试将文件名作为字符串传递给函数但是我收到一条错误,说它需要一个标识符。谁能给我一些关于如何解决这个问题的想法呢?



我尝试过的事情:





I tried passing off the filename as a string into the function but I got an error saying it expected an identifier. Can anyone give me ideas on how to fix this?

What I have tried:

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();

推荐答案

你可以试试像



You can try something like

pck.Workbook.Worksheets["Sheet1"];


我宁愿使用索引检索工作表,

I would rather retrieve the worksheet using index,
string FilePath = @"D:\...\path\sample.xlsx";
FileInfo existingFile = new FileInfo(FilePath);
List<Heading> Headings = new List<Heading>();

using (ExcelPackage package = new ExcelPackage(existingFile))
{
   //Get number of sheets, 
    int iSheetsCount = package.Workbook.Worksheets.Count;
    if (iSheetsCount > 0)
    {
           // Get the sheet by index
           ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
           Console.WriteLine("Worksheet name : " + worksheet.Name);
    }
}


这篇关于在C#中使用epplus使用工作表名称而不是第一个工作表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆