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

flexgrid load xlsx 관해서 질문 드립니다. > Q&A | 토론

본문 바로가기

PureJS flexgrid load xlsx 관해서 질문 드립니다.

페이지 정보

작성자 맬그 작성일 2021-09-01 12:52 조회 4,050회 댓글 0건
제품 버전 : wijmo-5.20193.646

본문

첨부파일

안녕하세요 이전에 엑셀 업로드에 대해 질문을 드렸던 적이 있습니다.

https://dev.grapecity.co.kr/bbs/board.php?bo_table=wijmo_qna&wr_id=61 


여기에 임포트 하는 샘플을 올려주셔서 편하게 작업 할 수 있었습니다. 먼저 감사드립니다.


작업 후 몇가지 문제가 있어서 막을 수 있는 기능이 있는지 여쭤보려고 남깁니다.


1. 엑셀 컬럼 헤더에 숫자값이 들어가면

이름|2|8|3|1

이라고 가정했을때 바인드해서 로드하면

1|2|3|8|이름 으로 배치가 되면서 그리드가 그려집니다


2.엑셀 컬럼 헤더에 소문자 영어가 첫글자로 들어가면

a1|b1|c1

이면 바인드되서 로딩될때

A1|B1|C1


이런식으로 그려집니다.


https://dev.grapecity.co.kr/bbs/board.php?bo_table=wijmo_qna&wr_id=61 

답변 달아 주신 링크 샘플소스에서


저희는 파일선택하면 import버튼 없이 바로 헤더 매핑해서 그리도록 처리했는데 문제가 생겨

링크 소스 확인해 보았더니


Include Column Header 체크하고 import 시 동일 증상이 나왔습니다.

혹시 막을수 있는 방법이 있으면 답변 주시면 감사드리겠습니다.


첨부파일에 간단하게 헤더 숫자, 소문자 들어간 파일 두개 올렸습니다.

그럼 확인 부탁드리겠습니다 감사합니다.





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

댓글목록

등록된 댓글이 없습니다.

2 답변

PureJS Re: flexgrid load xlsx 관해서 질문 드립니다.

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

페이지 정보

작성자 MESCIUS루시 작성일 2021-09-03 15:14 댓글 2건

본문

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



문의 주신 내용에 답변 드립니다.


1. 해당 현상과 관련하여 Wijmo에서 자체적으로 정렬을 하는 것이 아닌 Excel 데이터로 객체를 만들 때 데이터가 추가될 때마다 object가 숫자 형식의 키를 정렬하여 FlexGrid에서 불러온 결과와 엑셀의 열의 순서가 다르게 됩니다.(item[binding] = cellValue;) 이를 해결 하기 위해서는 FlexGrid의 열 바인딩을 별도로 제공해주셔야 합니다.



2. 샘플에서 이전 binding을 삭제하기 위해 columnCollection을 지우고 난 뒤, auutoGenerateColumns을 true로 설정하는데 이 때문에 FlexGrid가 data(key)에서 헤더를 가져오게 됩니다. 다만, 열 header가 정의 되지 않아 파스칼 표기법으로 형식이 지정되어 대문자로 표시합니다. 해당 이슈를 해결하기 위해서도 별도로 열 헤더를 지정해주셔야 합니다.



위의 문제를 해결 하기 위해서 아래와 같이 별도로 열 헤더를 그리드 생성할 때와 같이 바인딩과 header 값에 대해서 하나씩 지정하여 추가해주시거나


function init() {

  function bindImportedDataIntoModel() {
    const newData = (getImportedCVData());
    grid.columns.clear();
    data = new wijmo.collections.CollectionView(newData);

    grid.autoGenerateColumns = false;
    grid.itemsSource = data;

    // // ################# 헤더 정렬 파일 column binding #################
    grid.columns.push(new wijmo.grid.Column({ binding: '이름', header: '이름' }))
    grid.columns.push(new wijmo.grid.Column({ binding: '3', header: '3' }))
    grid.columns.push(new wijmo.grid.Column({ binding: '1', header: '1' }))
    grid.columns.push(new wijmo.grid.Column({ binding: '7', header: '7' }))
    grid.columns.push(new wijmo.grid.Column({ binding: '3', header: '3' }))

    // ################# 소문자 column binding #################
    // grid.columns.push(new wijmo.grid.Column({ binding: '이름', header: '이름' }))
    // grid.columns.push(new wijmo.grid.Column({ binding: 'a', header: 'a' }))
    // grid.columns.push(new wijmo.grid.Column({ binding: 'b', header: 'b' }))
    // grid.columns.push(new wijmo.grid.Column({ binding: 'c', header: 'c' }))
    // grid.columns.push(new wijmo.grid.Column({ binding: 'd', header: 'd' }))
  }



또 다른 방법으로는 열 헤더에 대한 정보를 별도로 배열에 저장하고 그리드의 itemsSource에 할당하고 나서 반복문을 통해 지정하시는 방법도 있습니다. 아래 코드는 headerInfo 변수에 데이터를 push하여 순서대로 열 정보를 담고 열을 생성 및 추가하는 코드입니다. 다만 키가 중복되는 경우, 객체에 추가 시 기존 값이 새로운 값으로 덮어씌워지기 때문에 중복 체크 후, 공백을 넣어 기본 값이 덮어씌워지는 것을 방지하였습니다.


var headerInfo; //헤더 정보를 담을 변수
function init() {
  function bindImportedDataIntoModel() {
   (...)
    grid.autoGenerateColumns = false;
    grid.itemsSource = data;
    
    headerInfo.forEach((el) =>{
      grid.columns.push(new wijmo.grid.Column({binding:el,header:el}));
    }
    )

  }

 function getImportedCVData() {
    const arr = [];
    headerInfo =[];//헤더 정보 초기화
      (...)
      var binding = _convertHeaderToBinding(header);
       if(Object.keys(item).includes(binding)){ // 키 중복 체크
          binding += " " // 공백 추가
        }; 
        item[binding] = cellValue;
        if(row===0){ // 헤더 정보가 중복되는 것을 방지
          headerInfo.push(binding);
        }
      }
      arr.push(item);
    }
    return arr;
  }



다른 궁금한 점이 생기면, 문의 주시기 바랍니다. 


감사합니다. 

그레이프시티 드림 


* 그레이프시티(GrapeCity)는 개발자를 위하여 ComponentOne(컴포넌트원), Spread(스프레드), ActiveReports(액티브리포츠), SpreadJS(스프레드JS), Wijmo(위즈모)와 같은 엑셀 스프레드시트 리포팅 그리드와 차트 등 다양한 종류의 .NET JavaScript(자바스크립트) 컴포넌트 툴을 생산하고있는 개발툴 전문 회사 입니다.

댓글목록

맬그님의 댓글

맬그 작성일

답변 감사합니다. 도움 많이 되었습니다. 

추가로 찾아보니 안나오는거 같긴 하지만 혹시 이렇게 임포트하는 방식으로 

1. csv 파일 지원 가능한가요?

2. xls 파일 지원 가능한가요?


가능시 샘플 링크나 간단한 임포트 샘플을 알려주시면 감사드리겠습니다.

GCK루시님의 댓글의 댓글

GCK루시 작성일

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

문의 주신 내용에 대해서 확인 중에 있으며 업데이트가 되는 대로 안내 드리도록 하겠습니다.
답변이 지연되는 점 죄송합니다.

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

PureJS Re: flexgrid load xlsx 관해서 질문 드립니다.

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

페이지 정보

작성자 GCK루시 작성일 2021-09-13 10:17 댓글 0건

본문

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


1. CSV 파일 지원 가능한가요?

=> CSV 파일 가져오는 직접적인 메서드나 속성은 지원하고 있지 않지만 CSV 파일을 불러와 그리드에 할당하기 위해서 기존 열 컬렉션을 제거한 뒤, itemsSource에 설정해주시면 됩니다. 아래 샘플을 참고하여 주시길 바랍니다.





2. xls 파일 지원 가능한가요?

=> Wijmo의 엑셀 파일 가져오기의 경우, xlsx 파일만 지원하고 있습니다. 원하시는 답변을 드리지 못한 점 죄송합니다.


[clear]

https://demo.grapecity.co.kr/wijmo/api/classes/wijmo_grid.columncollection.html#clear 


도움말 문서도 같이 전달 드리오니 참고하시길 바랍니다.


다른 궁금한 점이 생기면, 문의 주시기 바랍니다. 


감사합니다. 

그레이프시티 드림 


* 그레이프시티(GrapeCity)는 개발자를 위하여 ComponentOne(컴포넌트원), Spread(스프레드), ActiveReports(액티브리포츠), SpreadJS(스프레드JS), Wijmo(위즈모)와 같은 엑셀 스프레드시트 리포팅 그리드와 차트 등 다양한 종류의 .NET JavaScript(자바스크립트) 컴포넌트 툴을 생산하고있는 개발툴 전문 회사 입니다.

댓글목록

등록된 댓글이 없습니다.

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