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

FieldList 에서 셀로 드래그했을때 이미지를 업로드 시키고싶습니다. > Q&A | 토론

본문 바로가기

ReactJS FieldList 에서 셀로 드래그했을때 이미지를 업로드 시키고싶습니다.

페이지 정보

작성자 바밤바 작성일 2023-09-27 13:25 조회 447회 댓글 1건
제품 버전 : 16.1.3
컨트롤 이름 : Designer Component

본문


오른쪽 field List의 값을 셀에 드래그 한 후 

Sheet Binding 재클릭시 바인딩된 데이터가 해당 셀로 들어갈겁니다

그럼 이때 해당 셀에 이미지가 들어갔으면 합니다.


여기서 logo들은 모두 base64로 인코딩된 이미지 입니다.

아래는 예시코드입니다.

useEffect(() => {
    if (!workbook || !sheet || !fieldListData) return;
    const bindingSource = { ...fieldListData };

    bindingSource.clientLogo = `=IMAGE("${fieldListData.clientLogo}"), 1)`;
    bindingSource.clientLogo1 = `=IMAGE("${fieldListData.clientLogo1}", 1)`;
    bindingSource.clientLogo2 = `=IMAGE("${fieldListData.clientLogo2}", 1)`;
    bindingSource.sigLogo1 = `=IMAGE("${fieldListData.sigLogo1}", 1)`;
    bindingSource.sigLogo2 = `=IMAGE("${fieldListData.sigLogo2}", 1)`;
    bindingSource.sigLogo3 = `=IMAGE("${fieldListData.sigLogo3}", 1)`;
    bindingSource.sigLogo4 = `=IMAGE("${fieldListData.sigLogo4}", 1)`;
    bindingSource.etc1 = `=IMAGE("${fieldListData.etc1}", 1)`;
    bindingSource.etc2 = `=IMAGE("${fieldListData.etc2}", 1)`;
    // =IMAGE 에서 =앞에 ' 따옴표가 붙어서 나오는 문제가 있다. spread Js측에 문의해봐야한다.
    // 그리고 =IMAGE로 이미지를 넣었을때 생기는 문제는 EXPORT시에 image가 나오지 않는다. 이것도 문의 해봐야한다.
    //  이거를 로직으로 따로 처리하기위해선 Template에서는 일단 저장해두고 실제 사용할 Sheet에서 함수로 따로 처리해야할듯 하다.

    console.log(bindingSource.clientLogo);
    const productData = {
      revisionInfo: { ...bindingSource },
    };

    const source = new GC.Spread.Sheets.Bindings.CellBindingSource(productData);
    sheet.setDataSource(source);
    workbook.toJSON({ includeBindingSource: true, saveAsView: true });
  }, [fieldListData]);


  const getDesigner = (designer: any) => {
    const workbook: GC.Spread.Sheets.Workbook = designer.getWorkbook();
    const sheet: GC.Spread.Sheets.Worksheet = workbook.getActiveSheet();

    setSheet(sheet);
    setWorkBook(workbook);
    const fieldList = {
      $schema: 'http://json-schema.org/draft-04/schema#',
      properties: {
        revisionInfo: {
          dataFieldType: 'text',
          type: 'string',
          properties: {
            clientLogo: {
              dataFieldType: 'text',
              type: 'string',
            },
            clientLogo1: {
              dataFieldType: 'text',
              type: 'string',
            },
            clientLogo2: {
              dataFieldType: 'text',
              type: 'string',
            },
            sigLogo1: {
              dataFieldType: 'text',
              type: 'string',
            },
            sigLogo2: {
              dataFieldType: 'text',
              type: 'string',
            },
            sigLogo3: {
              dataFieldType: 'text',
              type: 'string',
            },
            sigLogo4: {
              dataFieldType: 'text',
              type: 'string',
            },
            etc1: {
              dataFieldType: 'text',
              type: 'string',
            },
            etc2: {
              dataFieldType: 'text',
              type: 'string',
            },
            projectNo: {
              dataFieldType: 'text',
              type: 'string',
            },
            documentNo: {
              dataFieldType: 'text',
              type: 'string',
            },
            revisionNo: {
              dataFieldType: 'text',
              type: 'string',
            },
            projectTitle: {
              dataFieldType: 'text',
              type: 'string',
            },
            revisionDate: {
              dataFieldType: 'text',
              type: 'string',
            },
            revisionDescription: {
              dataFieldType: 'text',
              type: 'string',
            },
            equipmentTagNo: {
              dataFieldType: 'text',
              type: 'string',
            },
            equipmentTagDescription: {
              dataFieldType: 'text',
              type: 'string',
            },
          },
        },
      },
      type: 'object',
    };
    designer.setData('treeNodeFromJSON', JSON.stringify(fieldList));
  };


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

댓글목록

GCK루카스님의 댓글

GCK루카스 작성일

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

문의 주신 내용에 대해 가능한 방법이 있는 지 확인 중입니다
확인이 완료되는 대로 답변 드리겠습니다.

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

2 답변

ReactJS Re: FieldList 에서 셀로 드래그했을때 이미지를 업로드 시키고싶습니다.

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

페이지 정보

작성자 GCK루카스 작성일 2023-10-10 09:45 댓글 0건

본문

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


아쉽게도 드래그 앤 드롭하여 이미지 스파크라인을 바로 적용하는 방법은 지원하고 있지 않습니다.

다만, 드래그 앤 드롭하여 이미지 데이터를 바인딩 후 포맷터를 이용하여 이미지 스파크라인이 적용되도록 버튼을 하나 생성할 수 있습니다.

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

* 데이터 탭 - 시트 바인딩 버튼 클릭 - image 필드 드래그 앤 드롭 - 해당 셀 클릭 - 이미지 만들기 버튼 클릭

function makeImage() {
  let sheet = spread.getActiveSheet();
  if(sheet.getText(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex()).substr(0, 10) == "data:image") {
    sheet.getCell(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex()).formatter('=IMAGE(@)');
  }
}


[프리미엄 회원 전환 안내]
라이선스를 보유하고 계신다면, 누구나 추가 비용 없이 그레이프시티 포럼 프리미엄 회원이 될 수 있습니다.
프리미엄 회원으로 전환 시, 기술 문의에 대하여 우선 지원 받으실 수 있습니다.
아래 링크를 통해 프리미엄 회원 전환 방법 및 혜택 안내를 살펴보시길 바랍니다.

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

댓글목록

등록된 댓글이 없습니다.

ReactJS Re: FieldList 에서 셀로 드래그했을때 이미지를 업로드 시키고싶습니다.

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

페이지 정보

작성자 바밤바 작성일 2023-10-11 16:54 댓글 3건

본문

Image()함수를 통해서 넣는법은 잘 작동됩니다 감사합니다.

하지만 Image()함수는 spreadjs에서만 동작하기 때문에 excel로 export시에 사진을

유지 할 수 없습니다.

 Export시에도 사진을 유지해야하는데 방법이 있을까요? 

댓글목록

삭제된 댓글

바밤바 작성일

삭제된 댓글 입니다.

삭제된 댓글

바밤바 작성일

삭제된 댓글 입니다.

바밤바님의 댓글

바밤바 작성일

다음과 같은 형태로 구현했습니다. 
근데 posX, posY를 조절해 cell위치에 딱 맞추고싶은데 맞추는 공식이 있을까요  getCellRect메소드를 통해 해당 셀에 width값과 위치값을 구해서 적용해도 cell에 정확히 들어가지않고 어긋나는 문제가 있습니다.


const rowIndex = activeSheet?.getActiveRowIndex();
const columnIndex = activeSheet?.getActiveColumnIndex();
const getText = activeSheet?.getText(
rowIndex ?? 0,
columnIndex ?? 0,
);
const cellInfo = activeSheet?.getCellRect(
rowIndex ?? 0,
columnIndex ?? 0,
);

const posX = cellInfo?.x ?? 0;
const posY = cellInfo?.y ?? 0;
const cellWidth = cellInfo?.width ?? 0;
const cellHeight = cellInfo?.height ?? 0;

if (getText.substring(0, 10) == 'data:image') {
activeSheet.pictures.add(
`${rowIndex}${columnIndex}LOGO`,
getText,
posX + 22,
posY - 20,
cellWidth,
cellHeight,
);
activeSheet?.setBindingPath(
rowIndex ?? 0,
columnIndex ?? 0,
'',
);
}

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