정재원 님, 안녕하세요.
메시어스입니다.
말씀하신 현상을 재현해볼 수 있는 샘플 프로젝트와 함께 문의주심에 감사드립니다.
XLS 형식 파일을 불러오는 것은 오래된 구현 방식으로, 현재 문화권에 따른 숫자 형식 변경을 지원하지 않습니다. XLS 형식 불러오기 로직은 영어 문화권을 따르기 때문에, 영어 문화권으로 XLS 형식 Excel 파일을 열면 음수가 괄호로 표기되는 것을 확인하실 수 있습니다.
따라서 문의하신 현상은 해당 로직의 제한사항으로 확인됩니다.
파일을 가져온 후 숫자 형식을 변경하는 경우, 불러오기 로직이 이미 셀 타입을 셀 단위로 설정한 상태이며 셀 단위 설정이 열 단위 설정보다 우선순위에 있기 때문에, 열 단위 셀 타입 설정이 적용되지 않습니다.
따라서 열에 셀 타입을 설정한 후, 각 셀에 적용된 셀 타입을 지워야합니다.
이때, 셀 타입 변경 시 처리 속도를 높이기 위해 Spread의 레이아웃 로직을 일시정지했다가 셀 타입 변경 후 로직을 재개할 수 있습니다. FpSpread.SuspendLayout() 메서드와 FpSpread.ResumeLayout() 메서드가 활용됩니다.
아래와 같이 코드를 수정하여 적용해보시기 바랍니다.
fpSrdXls.SuspendLayout();
for (int i = 0; i < iCols; i++)
{
this.fpSrdXls.Sheets[0].Columns[i].Visible = true;
switch (i)
{
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 22:
case 23:
fpSrdXls.Sheets[0].Columns[i].CellType = numberCellType1;
//컬럼에 설정한 셀 타입을 적용하기 위해, 셀에 설정된 셀 타입을 지웁니다.
fpSrdXls.Sheets[0].Cells[0, i, fpSrdXls.Sheets[0].RowCount - 1, i].CellType = null;
break;
}
}
fpSrdXls.ResumeLayout();
감사합니다.
메시어스 드림