与 Vue 集成
DHTMLX Spreadsheet 与 Vue 兼容。我们已准备了关于如何在 Vue 3 中使用 DHTMLX Spreadsheet 的代码示例。更多信息请参阅对应的 GitHub 示例。
创建项目
在开始创建新项目之前,请先安装 Node.js。
要创建一个 Vue 项目,请运行以下命令:
npm create vue@latest
该命令会安装并执行 create-vue,即官方 Vue 项目脚手架工具。详情请参阅 Vue.js 快速上手。
我们将该项目命名为 my-vue-spreadsheet-app。
安装依赖
进入应用目录:
cd my-vue-spreadsheet-app
安装依赖并启动开发服务器。请使用包管理器执行以下操作:
- 如果您使用 yarn,请运行以下命令:
yarn
yarn start // or yarn dev
- 如果您使用 npm,请运行以下命令:
npm install
npm run dev
应用应在 localhost 上运行(例如 http://localhost:3000)。
创建 Spreadsheet
现在您需要获取 DHTMLX Spreadsheet 的源代码。首先,停止应用并安装 Spreadsheet 包。
第一步:安装包
下载 试用版 Spreadsheet 包 并按照 README 文件中的步骤操作。请注意,试用版 Spreadsheet 仅可使用 30 天。
第二步:创建组件
现在您需要创建一个 Vue 组件,以便将 Spreadsheet 添加到应用中。在 src/components/ 目录中创建一个新文件,命名为 Spreadsheet.vue。
导入源文件
打开 Spreadsheet.vue 文件并导入 Spreadsheet 源文件。请注意:
- 如果您使用 PRO 版本并从本地文件夹安装 Spreadsheet 包,导入路径如下:
<script>
import { Spreadsheet } from 'dhx-spreadsheet-package';
import 'dhx-spreadsheet-package/codebase/spreadsheet.css';
</script>
请注意,根据所使用的包,源文件可能已被压缩。在这种情况下,请确保导入的 CSS 文件为 spreadsheet.min.css。
- 如果您使用试用版 Spreadsheet,请指定以下路径:
<script>
import { Spreadsheet } from '@dhx/trial-spreadsheet';
import '@dhx/trial-spreadsheet/codebase/spreadsheet.min.css';
</script>
本教程将演示如何配置 Spreadsheet 的试用版本。
设置容器并添加 Spreadsheet
要在页面上显示 Spreadsheet,您需要为 Spreadsheet 创建容器,并使用相应的构造函数初始化该组件:
<script>
import { Spreadsheet } from "@dhx/trial-spreadsheet";
import "@dhx/trial-spreadsheet/codebase/spreadsheet.min.css";
export default {
mounted() {
// initialize the Spreadsheet component
this.spreadsheet = new Spreadsheet(this.$refs.container, {});
},
unmounted() {
this.spreadsheet.destructor(); // destruct Spreadsheet
}
};
</script>
<template>
<div ref="container" class="widget"></div>
</template>
添加样式
要正确显示 Spreadsheet,您需要在项目主 CSS 文件中为 Spreadsheet 及其容器指定重要样式:
/* specify styles for initial page */
html,
body,
#app { /* make sure that you use the #app root container */
height: 100%;
padding: 0;
margin: 0;
}
/* specify styles for the Spreadsheet container */
.widget {
height: 100%;
}
加载数据
要向 Spreadsheet 中添加数据,您需要提供一个数据集。您可以在 src/ 目录中创建 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" },
// more cells with data
]
}
}
然后打开 App.vue 文件,导入数据,并使用内部 data() 方法进行初始化。之后,您可以将数据作为 props 传递给新创建的 <Spreadsheet/> 组件:
<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:
<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() 方法:
<script>
// ...
export default {
// ...
mounted: function() {
this.spreadsheet = new Spreadsheet(this.$refs.container, {});
this.spreadsheet.events.on("afterFocusSet", function(cell){
console.log("Focus is set on a cell");
console.log(cell);
});
}
//...
}
</script>
//...
完成后,您可以启动应用,查看加载了数据的 Spreadsheet 页面。

现在您已了解如何将 DHTMLX Spreadsheet 与 Vue 集成。您可以根据具体需求对代码进行自定义。完整示例可在 GitHub 上找到。