본문으로 건너뛰기

Vue 통합

이 문서를 읽기 전에 Vue의 기본 개념과 패턴을 숙지하시기 바랍니다. 내용을 복습하려면 Vue 3 문서를 참고하세요.

DHTMLX Spreadsheet는 Vue와 호환됩니다. Vue 3에서 DHTMLX Spreadsheet를 사용하는 방법에 대한 코드 예제를 준비했습니다. 자세한 내용은 GitHub 예제를 참고하세요.

프로젝트 생성

정보

새 프로젝트를 생성하기 전에 Node.js를 설치하세요.

Vue 프로젝트를 생성하려면 다음 명령어를 실행하세요:

npm create vue@latest

이 명령어는 공식 Vue 프로젝트 스캐폴딩 도구인 create-vue를 설치하고 실행합니다. 자세한 내용은 Vue.js 빠른 시작에서 확인하세요.

프로젝트 이름을 my-vue-spreadsheet-app으로 지정합니다.

의존성 설치

앱 디렉토리로 이동하세요:

cd my-vue-spreadsheet-app

의존성을 설치하고 개발 서버를 시작하세요. 패키지 매니저를 사용하세요:

  • yarn을 사용하는 경우 다음 명령어를 실행하세요:
yarn
yarn start // 또는 yarn dev
  • npm을 사용하는 경우 다음 명령어를 실행하세요:
npm install
npm run dev

앱은 로컬호스트(예: http://localhost:3000)에서 실행됩니다.

Spreadsheet 생성

이제 DHTMLX Spreadsheet 소스 코드를 가져와야 합니다. 먼저 앱을 중지하고 Spreadsheet 패키지를 설치하세요.

1단계. 패키지 설치

평가판 Spreadsheet 패키지를 다운로드하고 README 파일의 단계를 따르세요. 평가판 Spreadsheet는 30일 동안만 사용할 수 있습니다.

2단계. 컴포넌트 생성

이제 애플리케이션에 Spreadsheet를 추가하기 위한 Vue 컴포넌트를 생성해야 합니다. src/components/ 디렉토리에 새 파일을 생성하고 Spreadsheet.vue로 이름을 지정하세요.

소스 파일 가져오기

Spreadsheet.vue 파일을 열고 Spreadsheet 소스 파일을 가져오세요. 다음 사항에 유의하세요:

  • PRO 버전을 사용하고 로컬 폴더에서 Spreadsheet 패키지를 설치하는 경우 가져오기 경로는 다음과 같습니다:
Spreadsheet.vue
<script>
import { Spreadsheet } from 'dhx-spreadsheet-package';
import 'dhx-spreadsheet-package/codebase/spreadsheet.css';
</script>

사용하는 패키지에 따라 소스 파일이 압축되어 있을 수 있습니다. 이 경우 CSS 파일을 spreadsheet.min.css로 가져오고 있는지 확인하세요.

  • Spreadsheet 평가판을 사용하는 경우 다음 경로를 지정하세요:
Spreadsheet.vue
<script>
import { Spreadsheet } from '@dhx/trial-spreadsheet';
import '@dhx/trial-spreadsheet/codebase/spreadsheet.min.css';
</script>

이 튜토리얼에서는 Spreadsheet 평가판 버전을 구성하는 방법을 설명합니다.

컨테이너 설정 및 Spreadsheet 추가

페이지에 Spreadsheet를 표시하려면 Spreadsheet용 컨테이너를 생성하고 해당 생성자를 사용하여 이 컴포넌트를 초기화해야 합니다:

Spreadsheet.vue
<script>
import { Spreadsheet } from "@dhx/trial-spreadsheet";
import "@dhx/trial-spreadsheet/codebase/spreadsheet.min.css";

export default {
mounted() {
// Spreadsheet 컴포넌트 초기화
this.spreadsheet = new Spreadsheet(this.$refs.container, {});
},

unmounted() {
this.spreadsheet.destructor(); // Spreadsheet 소멸
}
};
</script>

<template>
<div ref="container" class="widget"></div>
</template>

스타일 추가

Spreadsheet를 올바르게 표시하려면 프로젝트의 메인 CSS 파일에서 Spreadsheet와 그 컨테이너에 대한 중요한 스타일을 지정해야 합니다:

main.css
/* 초기 페이지 스타일 지정 */
html,
body,
#app { /* #app 루트 컨테이너를 사용하는지 확인하세요 */
height: 100%;
padding: 0;
margin: 0;
}

/* Spreadsheet 컨테이너 스타일 지정 */
.widget {
height: 100%;
}

데이터 로드

Spreadsheet에 데이터를 추가하려면 데이터 세트를 제공해야 합니다. src/ 디렉토리에 data.js 파일을 생성하고 데이터를 추가할 수 있습니다:

data.js
export function getData() {
return {
styles: {
bold: {
"font-weight": "bold"
},
right: {
"justify-content": "flex-end",
"text-align": "right"
}
},
data: [
{ cell: "a1", value: "Country", css:"bold" },
{ cell: "b1", value: "Product", css:"bold" },
{ cell: "c1", value: "Price", css:"right bold" },
{ cell: "d1", value: "Amount", css:"right bold" },
{ cell: "e1", value: "Total Price", css:"right bold" },

{ cell: "a2", value: "Ecuador" },
{ cell: "b2", value: "Banana" },
{ cell: "c2", value: 6.68, format: "currency" },
{ cell: "d2", value: 430 },
{ cell: "e2", value: 2872.4, format: "currency" },

{ cell: "a3", value: "Belarus" },
{ cell: "b3", value: "Apple" },
{ cell: "c3", value: 3.75, format: "currency" },
{ cell: "d3", value: 600 },
{ cell: "e3", value: 2250, format: "currency" },

{ cell: "a4", value: "Peru" },
{ cell: "b4", value: "Grapes" },
{ cell: "c4", value: 7.69, format: "currency" },
{ cell: "d4", value: 740 },
{ cell: "e4", value: 5690.6, format: "currency" },

// 데이터가 있는 더 많은 셀
]
}
}

그런 다음 App.vue 파일을 열고, 데이터를 가져온 후 내부 data() 메서드로 초기화하세요. 이후 새로 생성한 <Spreadsheet/> 컴포넌트에 props로 데이터를 전달할 수 있습니다:

App.vue
<script>
import Spreadsheet from "./components/Spreadsheet.vue";
import { getData } from "./data";

export default {
components: { Spreadsheet },
data() {
return { data: getData() };
}
};
</script>

<template>
<Spreadsheet :data="data" />
</template>

Spreadsheet.vue 파일로 이동하여 parse() 메서드로 전달된 props를 Spreadsheet에 적용하세요:

Spreadsheet.vue
<script>
import { Spreadsheet } from "@dhx/trial-spreadsheet";
import "@dhx/trial-spreadsheet/codebase/spreadsheet.min.css";

export default {
props: ["data"],

mounted() {
this.spreadsheet = new Spreadsheet(this.$refs.container, {});
this.spreadsheet.parse(this.data);
},

unmounted() {
this.spreadsheet.destructor();
}
};
</script>

<template>
<div ref="container" class="widget"></div>
</template>

이제 Spreadsheet 컴포넌트를 사용할 준비가 되었습니다. 페이지에 요소가 추가되면 데이터와 함께 Spreadsheet가 초기화됩니다. 필요한 구성 설정도 제공할 수 있습니다. 사용 가능한 속성의 전체 목록은 Spreadsheet API 문서를 참고하세요.

이벤트 처리

사용자가 Spreadsheet에서 동작을 수행하면 위젯이 이벤트를 호출합니다. 이러한 이벤트를 사용하여 동작을 감지하고 원하는 코드를 실행할 수 있습니다. 이벤트 전체 목록을 참고하세요.

Spreadsheet.vue를 열고 mounted() 메서드를 완성하세요:

Spreadsheet.vue
<script>
// ...
export default {
// ...
mounted: function() {
this.spreadsheet = new Spreadsheet(this.$refs.container, {});

this.spreadsheet.events.on("afterFocusSet", function(cell){
console.log("셀에 포커스가 설정되었습니다");
console.log(cell);
});
}
//...
}
</script>

//...

그런 다음 앱을 시작하면 페이지에 데이터가 로드된 Spreadsheet를 볼 수 있습니다.

샘플 데이터와 함께 Vue 3 애플리케이션에서 초기화된 DHTMLX Spreadsheet

이제 DHTMLX Spreadsheet를 Vue와 통합하는 방법을 알게 되었습니다. 특정 요구 사항에 맞게 코드를 사용자 정의할 수 있습니다. 최종 예제는 GitHub에서 확인할 수 있습니다.