! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

필터 기능 문의 > Q&A | 토론

본문 바로가기

Java & Kotlin API

Q&A | 토론

Java 필터 기능 문의

페이지 정보

작성자 자동화 작성일 2023-04-27 08:10 조회 733회 댓글 1건
제품 버전 : 6.0.4
컨트롤 이름 : 헤더 컬럼 필터

본문

필터된 상태에서 데이터를 추가/업데이트 하고자 문의드립니다. 


현재 SpreadJS에서 헤더 컬럼에 필터를 넣어서 사용중입니다.

서버 뒷단에서 해당 파일을 불러와서 데이터를 추가/삭제/업데이트 후, 

다시 필터가 적용될 수 있도록 하고 싶습니다. 
(혹은 필터된 상태에서 데이터가 추가되어도 상관없습니다.)


예를들어 아래와 같은 과정입니다. 

1) 프론트에서 데이터 원본 + 헤더컬럼에 필터가 걸린상태로 파일 저장

2) 서버에서 파일 열어서 필터 해제 

3) 데이터 원본에 내용 추가 업데이트

4) 기존에 있던 필터 적용 * 내용에 따라 필터링된 리스트가 원본과 다를 수 있음

5) 서버에서 파일 저장

6) 프론트에서 열면 신규 데이터가 반영되어있음


어떤 식으로 진행하면될지, 혹은 관련 가이드가 있을지 문의 드립니다. 감사합니다. 



  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

GCK루카스님의 댓글

GCK루카스 작성일

안녕하세요 그레이프시티입니다.

해당 문의 확인 중입니다.
확인이 되는 대로 답변 드리도록 하겠습니다.

감사합니다.
그레이프시티 드림

8 답변

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK루카스 작성일 2023-05-08 14:03 댓글 0건

본문

안녕하세요 그레이프시티입니다.


값이 추가된 후 해당 범위까지 기존의 필터를 적용하는 함수 전달 드립니다.

public void ReapplyFilterWithNewRange(IWorksheet sheet, IRange range){
    if (range.getRowCount() > 0 && range.getColumnCount() > 0){
        ArrayList<Object> listOfCriteria1 = new ArrayList<Object>();
        ArrayList<Object> listOfCriteria2 = new ArrayList<Object>();
        ArrayList<AutoFilterOperator> listOfOperator = new ArrayList<AutoFilterOperator>();
        for (int i = 0; i < sheet.getAutoFilter().getFilters().getCount(); i++) {
            IFilter filter = sheet.getAutoFilter().getFilters().get(i);

            listOfCriteria1.add(filter.getOn() ? filter.getCriteria1() : null);
            listOfCriteria2.add(filter.getOn() ? filter.getCriteria2() : null);
            listOfOperator.add(filter.getOn() ? filter.getOperator() : null);
        }

        sheet.setAutoFilterMode(false);

        for (int i = 0; i < listOfCriteria1.size(); i++) {
            if (listOfCriteria1.get(i) != null) {
                range.autoFilter(
                        i,
                        listOfCriteria1.get(i),
                        listOfOperator.get(i),
                        listOfCriteria2.get(i)
                );
            }
        }

        sheet.getAutoFilter().applyFilter();
    }
}

위 코드를 사용하여 값을 추가한 후 기존 필터를 유지할 수 있습니다.

다만, 현재 버전의 GcExcel 에서 필터가 컬럼 헤더에 생성되어 있는 경우, 엑셀이나 ssjson 내보내기 시 필터 버튼이 사라지는 버그가 있어 개발팀에서 수정 중에 있습니다.


해당 문제는 GcExcel v6.1.1 에서 해결되어 릴리즈 될 예정입니다.

v6.1.1은 빠르면 5월 말, 늦어도 6월 중으로 출시될 예정입니다.

출시되면 다시 한 번 안내 드리도록 하겠습니다.


감사합니다.

그레이프시티 드림


댓글목록

등록된 댓글이 없습니다.

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 자동화 작성일 2023-05-22 12:55 댓글 0건

본문

필터 사라지는 버그는 위 내용 관련해서 TableSheet 를 사용하는 경우도 동일할까요? 

TableSheet 를 사용하고, 컬럼명에 필터를 걸어서 사용한다고 했을때 가이드 확인 부탁드립니다.


(기존 질문내용)


1) 프론트에서 데이터 원본 + 헤더컬럼에 필터가 걸린상태로 파일 저장

2) 서버에서 파일 열어서 필터 해제 

3) 데이터 원본에 내용 추가 업데이트

4) 기존에 있던 필터 적용 * 내용에 따라 필터링된 리스트가 원본과 다를 수 있음

5) 서버에서 파일 저장

6) 프론트에서 열면 신규 데이터가 반영되어있음

댓글목록

등록된 댓글이 없습니다.

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK루카스 작성일 2023-05-22 15:14 댓글 0건

본문

안녕하세요 그레이프시티입니다.


TableSheet 에 대해서는, 아쉽게도 GcExcel 에서 관련 API 를 제공하지 않습니다.

TableSheet 가 있는 workbook 을 SSJSON 으로 내보내는 경우, GcExcel 에서 이를 불러오고 내보낼 때 유지할 수 있지만, 이는 엑셀의 기능은 아닌 SpreadJS 고유의 기능이기 때문에 불러온 후 TableSheet 에 새로운 값을 추가하거나 수정하는 기능은 제공하지 않습니다.

이에 대한 내용은 아래 링크에서 확인해 보실 수 있습니다.

원하시는 답변을 드리지 못해 죄송합니다.

감사합니다.
그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 자동화 작성일 2023-05-24 01:05 댓글 0건

본문

TableSheet 를 원하는대로 컨트롤 못하는것은 아쉽네요ㅠㅠ

그럼 필터가 적용되어 있을 경우, 필터가 적용된 행들만 get 하는 방법이 궁금합니다.  


※ 즉, 아래 예시에서 필터링 적용이 안된 (눈에 보이는) 2,3,5,7 행의 값 혹은 행 인덱스만 가져오고자 합니다.


GC Excel 튜토리얼에 있는 내용 

https://www.grapecity.com/documents-api-excel-java/demos/numberfilter






댓글목록

등록된 댓글이 없습니다.

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK루카스 작성일 2023-05-24 16:49 댓글 0건

본문

안녕하세요 그레이프시티입니다.


아쉽게도 필터링 되지 않은 행에 대한 API를 따로 제공하지는 않지만,

필터링된 행들은 숨김 처리가 되는 것을 이용하여 필터링 되지 않은 행의 인덱스를 가져올 수 있습니다.

아래 샘플 코드를 참고하여 주시기 바랍니다.

	for(int i=1;i<worksheet.getUsedRange().getRowCount();i++) {
		if(worksheet.getRows().get(i).getHidden() == false) {
			System.out.println(i);
		}
	}


감사합니다.

그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS루카스 작성일 2023-06-28 15:42 댓글 1건

본문

안녕하세요 그레이프시티입니다.


필터 버튼이 행 헤더에 생성되어 있는 경우에 ssjson 내보내기 시 필터 버튼이 사라지는 현상이 개선되었습니다.

아직 국내 출시 전이지만 오래 기다리시어 먼저 전달 드리니 아래 링크를 통해 다운 받아 사용해 보시기 바랍니다.


기존에 가지고 계신 6버전에 대한 라이선스를 교체하실 필요 없이 라이브러리만 교체하여 사용하실 수 있습니다.

기다려 주셔서 감사합니다.
그레이프시티 드림

댓글목록

자동화님의 댓글

자동화 작성일

6.1.2 버전 확인해서 실행해보니, GC Excel 에서는 colHeader가 고려가 안되어서 그런지.. 헤더에 필터가 적용되어있을때 `첫번째 행`에 대해서는 필터 적용이 정상적으로 안됩니다. 확인 부탁드립니다. 감사합니다. 

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 자동화 작성일 2023-07-17 12:38 댓글 1건

본문

6.1.2 버전 확인해서 실행해보니, GC Excel 에서는 colHeader가 고려가 안되어서 그런지.. 헤더에 필터가 적용되어있을때 `첫번째 행`에 대해서는 필터 적용이 정상적으로 안됩니다. 


추가로 해당 기능 사용 시, 속도가 많이 느려져서 확인해보니 


autoFilter.getFilters().getCount() → 해당 값이 16384, 

+ ssjson 파일에 filterButtonVisible 값이 1백만개 가량 찍힙니다. 



프론트(spread js)에서 페이지 로딩 시, 아래와 같이 필터를 적용했는데 영향이 있을까요? 

if (!sheet.rowFilter()){

var range = new GC.Spread.Sheets.Range(-1, -1, 30, colCount-1);

var rowFilter = new GC.Spread.Sheets.Filter.HideRowFilter(range);

// rowFilter.filterButtonVisible(false);

sheet.rowFilter(rowFilter);

sheet.repaint();

}



※ 첫째행은 아래와 같이 '자동화' 로 사용자 필터 적용이 되어있지만, 1행 (조건 해당하지 않는)이 계속 노출됩니다. 



cae4c387e04d6b6dfc5fbce395857f66_1689566123_5891.png
cae4c387e04d6b6dfc5fbce395857f66_1689566123_6414.png
 


정리하면, 아래 2가지 내용 확인이 필요합니다. 


1) 헤더 컬럼에 필터 적용 시, 첫째행에만 동작 반영 안됨

2) 위에서 알려주신 필터 재적용 로직 반영 시, 컬럼/로우 값이 최대 갯수로 늘어나서 저장




확인 부탁드립니다. 감사합니다. 

댓글목록

GCK루카스님의 댓글

GCK루카스 작성일

안녕하세요 그레이프시티입니다.

문의 주신 내용 확인 중이며, 확인 후 답변 드리도록 하겠습니다.

감사합니다.
그레이프시티 드림

Java Re: 필터 기능 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK루카스 작성일 2023-07-18 16:27 댓글 0건

본문

안녕하세요 그레이프시티입니다.


말씀하신 두 현상 모두 재현하는 데에 어려움이 있어, 실제 사용하신 GcExcel로 불러오기 하는 엑셀 파일 혹은 ssjson 파일, GcExcel의 필터 부분 코드와 내보내기한 ssjson 파일 혹은 String을 공유해 주실 수 있으신가요?

용량이나 보안 상의 이유로 포럼으로 공유가 어려우신 경우에는 sales-kor@grapecity.com으로 해당 포럼 글 링크와 함께 전달해 주셔도 됩니다.


공유해 주시면 확인 후 답변 드리도록 하겠습니다.


감사합니다.

그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

카테고리

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.