9

既存のExcelワークシートを変更しようとしています。正確には、ワークシートに存在するテーブル(フォーマットをテーブルとして使用して作成)にいくつかの行を追加したいと思います。私は試した

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

しかし、このように作成された「テーブル」は実際のテーブルのメタデータにすぎず、行を追加することはできません。やってみたら

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

次に、テーブルのフォーマットがわかりません。

テーブルに行を追加する方法は誰でも知っています!ありがとう

4

1 に答える 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;
    }
于 2014-02-26T21:40:22.143 に答える