如何使用EPPlus填充ExcelTable?

9

我想修改现有的Excel工作表。具体来说,我想向工作表中已存在的一个表格(使用表格格式创建)添加几行。我尝试过

var table = sheet.Tables["PositionsTable"];

但是这样创建的“表格”只是实际表格的元数据,并且我无法向其中添加行。 如果我尝试添加,会发生错误。
sheet.Cells[table.Address.Address.ToString()].LoadFromCollection(positions);

那我不理解表格的格式。

有人知道如何向表格添加行吗?谢谢。

1个回答

3

我们在公司中使用类似以下的方法。基本上,想要输出每个记录时,您需要创建一个对象数组来加载数据到Excel中,然后调用LoadFromArrays。

        using (var excelPkg = new ExcelPackage())
        {
            var name = "Sheet1";
            //You will probably pass the columns to output into this function
            var headerArray = new string[] { "Column1", "Column2" };
            var data = positions
                .Select(i => headerArray.Select(h => GetValue(i, h)).ToArray());
            var ws = excelPkg.Workbook.Worksheets.Add(name);
            ws.Cells["A1"].LoadFromArrays(
                ((object[])headerArray).ToSingleItemEnumerable().Union(data));
            ws.Row(1).Style.Font.Bold = true; //set header to bold
            excelPkg.SaveAs(stream, "password");
        }

    private static object GetValue(Position item, string field)
    {
        //Your logic goes here
        return null;
    }

    public static IEnumerable<T> ToSingleItemEnumerable<T>(this T o)
    {
        yield return o;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接