web-dev-qa-db-ja.com

EPPlusオートフィルターは最後のセルでのみ機能します

ヘッダーの各セルにオートフィルターを含めたいのですが。以下は私が使用しようとしているコードですが、autofilterは指定された最後のセルにのみ設定されます。

たとえば、K1autofilterコマンドをコメントアウトすると、スプレッドシートはC1がオートフィルターを備えた唯一のセルで作成されます。

        //Headers
        ws.Cells["A1"].Value = "ChannelCode";
        ws.Cells["A1"].AutoFilter = true;
        ws.Cells["B1"].Value = "DrmTerrDesc";
        ws.Cells["B1"].AutoFilter = true;
        ws.Cells["C1"].Value = "IndDistrnId";
        ws.Cells["C1"].AutoFilter = true;
        ws.Cells["D1"].Value = "StateCode";
        ws.Cells["D1"].AutoFilter = true;
        ws.Cells["E1"].Value = "ZipCode";
        ws.Cells["E1"].AutoFilter = true;
        ws.Cells["F1"].Value = "EndDate";
        ws.Cells["F1"].AutoFilter = true;
        ws.Cells["G1"].Value = "EffectiveDate";
        ws.Cells["G1"].AutoFilter = true;
        ws.Cells["H1"].Value = "LastUpdateId";
        ws.Cells["H1"].AutoFilter = true;
        ws.Cells["I1"].Value = "ErrorCodes";
        ws.Cells["I1"].AutoFilter = true;
        ws.Cells["J1"].Value = "Status";
        ws.Cells["J1"].AutoFilter = true;
        ws.Cells["K1"].Value = "Id";
        ws.Cells["K1"].AutoFilter = true;
21
NealR

EPPlus .AutoFilterは少しバグがあります...次のような範囲を使用して実行することをお勧めします。

ws.Cells["A1:K1"].AutoFilter = true;
31
Vland

すべてのシートデータ範囲

worksheet.Cells[worksheet.Dimension.Address].AutoFilter=true;
18
Ilya Klementiev

動的な列のセットがある場合、またはそれらが配列またはリストで定義されている場合:

string[] columns = new string[] { "Name", "City", "Street" };

worksheet.Cells[1, 1, 1, columns.Length].AutoFilter = true;

使用される過負荷は次のとおりです。

public ExcelRange this[int FromRow, int FromCol, int ToRow, int ToCol] { get; }

個人的には、整数(columns.Length)を文字付きのExcel範囲(例: "A1:C1")に変換するのではなく、これを好みます。

5
Brian