c# - 如何使用 EPPlus 填充 ExcelTable

标签 c# excel epplus

我正在尝试修改现有的 Excel 工作表。准确地说,我想向工作表中存在的表中添加几行(使用格式作为表创建)。我试过了

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

但是这样创建的“表”只是实际表的元数据,我无法向其中添加行。如果我尝试

sheet.Cells[table.Address.Address.ToString()].LoadFromCollection(positions);

然后我没有得到表格的格式。

任何人都知道我如何向表中添加行!谢谢

最佳答案

我们公司使用类似下面的东西。基本上这个想法是,对于要输出的每条记录,您创建一个数据对象数组以加载到 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;
    }

关于c# - 如何使用 EPPlus 填充 ExcelTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15378325/

相关文章:

c# - 如何获取长路径的安全详细信息?

c# - 使用 TextBox 实时过滤 ListBox

c# - 如何使所有新控件继承新的扩展控件

vba - VBA错误处理: Unable to get the match property of the worksheet function class

excel - 如何使用 EPPlus 创建数据透视表来过滤一列和一组列中的行?

c# - 不在 LINQ 中?

excel - 如何简化这个庞大的 VBA If/Then 语句

java - 如何将jsp页面的图表导出到excel页面

c# - 如何使用 EPPlus 将数据从 csv 导入 Excel?