반응형
마지막 셀에서만 작동하는 EP Plus 자동 필터
나는 헤더의 각 셀에 자동 필터가 포함되어 있기를 원합니다.제가 사용하려고 하는 코드는 아래와 같습니다만.autofilter
지정된 마지막 셀에서만 설정됩니다.
예를 들어, 내가 논평을 한다면,autofilter
에 대한 명령.K1
스프레드시트는 다음을 사용하여 생성됩니다.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;
EP 플러스.AutoFilter
약간 버그가...다음과 같은 범위를 사용하는 것이 좋습니다.
ws.Cells["A1:K1"].AutoFilter = true;
모든 시트 데이터 범위에 대해
worksheet.Cells[worksheet.Dimension.Address].AutoFilter=true;
동적 열 집합이 있거나 열이 배열 또는 목록에 정의된 경우:
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; }
저는 개인적으로 정수(열)를 변환하는 대신 이것을 선호합니다.길이)는 문자(예: "A1:C1")가 포함된 Excel 범위입니다.
다음과 같은 작업을 수행하려는 경우:
var colNames = new List<string>() { "MyCol1", "MyCol2", "MyCol3" };
var row = 3;
var startCol = 5;
var lastCol = startCol + colNames.Count - 1;
var i = startCol; // col index
foreach (var colName in colNames)
{
sheetObj.Cells[row, i].Value = colName;
sheetObj.Cells[row, i++].AutoFilter= true;
}
그것은 내게 구현에서 버그 같은 행동으로 보이는 것 때문에 작동하지 않을 것입니다..AutoFilter
이 경우에도 작동하지 않습니다.
foreach (var colName in colNames)
sheetObj.Cells[row, i++].Value = colName;
using ExcelRange range = sheetObj.Cells[row, startCol, row, lastCol];
range.AutoFilter = true;
그래서 저는 그것이 제게 효과가 있다는 것을 발견했습니다:
foreach (var colName in colNames)
sheetObj.Cells[row, i++].Value = colName;
sheetObj.Cells[row, startCol, row, lastCol].AutoFilter = true;
또한 셀에 다른 설정을 추가하려는 경우 다음을 수행할 수 있습니다.
var colNames = new List<string>() { "MyCol1", "MyCol2", "MyCol3" };
var row = 3;
var startCol = 5;
var lastCol = startCol + colNames.Count - 1;
var i = startCol; // col index
foreach (var colName in colNames)
sheetObj.Cells[row, i++].Value = colName;
using ExcelRange range = sheetObj.Cells[row, startCol, row, lastCol];
range.Style.Font.Size = 16;
range.Style.Font.Color.SetColor(Color.Red);
range.AutoFitColumns();
range.Style.Font.Bold = true;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.LightBlue);
sheetObj.Cells[row, startCol, row, lastCol].AutoFilter = true;
언급URL : https://stackoverflow.com/questions/20848921/epplus-autofilter-only-working-on-last-cell
반응형
'programing' 카테고리의 다른 글
IDITY 열 하나로 테이블에 삽입하는 방법은 무엇입니까? (0) | 2023.05.05 |
---|---|
iOS 10: "[앱] 만약 우리가 실제 사전 커밋 핸들러에 있다면 CA 제한으로 인해 실제로 새로운 펜스를 추가할 수 없습니다." (0) | 2023.05.05 |
이클립스:선언된 패키지가 예상된 패키지와 일치하지 않습니다. (0) | 2023.05.05 |
웹 응용 프로그램에 대한 IIS7 폴더 사용 권한 (0) | 2023.05.05 |
mongodb에서 최소값을 찾는 방법 (0) | 2023.05.05 |