EPPlus读数列标题

fr3*_*009 3 c#

有没有一种简单的方法告诉EPPlus一行是标题?或者我应该通过使用SelectedRange指定范围来创建标题,将其从工作表中删除并迭代剩余的单元格?

我最终这样做了:

class Program
{
    static void Main(string[] args)
    {
        DirectoryInfo outputDir = new DirectoryInfo(@"C:\testdump\excelimports");
        FileInfo existingFile = new FileInfo(outputDir.FullName + @"\Stormers.xlsx");
        Dictionary<string, string> arrColumnNames = new Dictionary<string,string>() { { "First Name", "" }, { "Last Name", "" }, { "Email Address", "" } };
        using (ExcelPackage package = new ExcelPackage(existingFile))
        {
            ExcelWorksheet sheet = package.Workbook.Worksheets[1];
            var q = from cell in sheet.Cells
                    where arrColumnNames.ContainsKey(cell.Value.ToString())
                    select cell;

            foreach (var c in q)
            {
                arrColumnNames[c.Value.ToString()] = c.Address;
            }
            foreach (var ck in arrColumnNames)
            {
                Console.WriteLine("{0} - {1}", ck.Key, ck.Value);
            }

            var qValues = from r in sheet.Cells
                          where !arrColumnNames.ContainsValue(r.Address.ToString())
                          select r;

            foreach (var r in qValues)
            {
                Console.WriteLine("{0} - {1}", r.Address, r.Value);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ndd*_*ndd 14

我需要枚举标题并向我的最终用户显示所有列标题.我将Muhammad Mubashir代码作为基础并将其更改/转换为扩展方法并从中删除了硬编码的数字.

public static class ExcelWorksheetExtension
{
    public static string[] GetHeaderColumns(this ExcelWorksheet sheet)
    {
        List<string> columnNames = new List<string>();
        foreach (var firstRowCell in sheet.Cells[sheet.Dimension.Start.Row, sheet.Dimension.Start.Column, 1, sheet.Dimension.End.Column]) 
            columnNames.Add(firstRowCell.Text);
        return columnNames.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)


Muh*_*hir 3

var pck = new OfficeOpenXml.ExcelPackage();
pck.Load(new System.IO.FileInfo(path).OpenRead());
var ws = pck.Workbook.Worksheets["Worksheet1"];
DataTable tbl = new DataTable();
var hasHeader = true;
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 (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++){
     var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
     var row = tbl.NewRow();
     foreach (var cell in wsRow){
           row[cell.Start.Column - 1] = cell.Text;
     }
     tbl.Rows.Add(row);
}
Run Code Online (Sandbox Code Playgroud)