• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Vue3使用Univer Docs创建在线编辑Excel的示例代码

    发布者: 涵韵 | 发布时间: 2025-6-16 07:42| 查看数: 110| 评论数: 0|帖子模式

    一、Univer Docs 简介

    Univer 是一套企业文档与数据协同解决方案,包括电子表格、文档和幻灯片三大文档类型,高可扩展性设计使得开发者可以在 Univer 的基础上定制个性化功能。
    它的前身是Luckysheet ,Luckysheet 是一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。
    下面附上两个版本的官网地址:
    Luckysheet :https://mengshukeji.gitee.io/LuckysheetDocs/zh/
    Univer Docs :https://univer.ai/guides/introduction/

    二、安装Univer

    推荐使用 npm >= 8.0.0,以便自动安装 peerDependencies。
    1. //执行下面的命令
    2. npm install @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-ui @univerjs/ui
    复制代码
    三、在页面中使用


    1、在页面中引入对应的文件
    1. <script setup>
    2. import "@univerjs/design/lib/index.css";
    3. import "@univerjs/ui/lib/index.css";
    4. import "@univerjs/sheets-ui/lib/index.css";
    5. import "@univerjs/sheets-formula/lib/index.css";

    6. import { Univer } from "@univerjs/core";
    7. import { defaultTheme } from "@univerjs/design";
    8. import { UniverDocsPlugin } from "@univerjs/docs";
    9. import { UniverDocsUIPlugin } from "@univerjs/docs-ui";
    10. import { UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
    11. import { UniverRenderEnginePlugin } from "@univerjs/engine-render";
    12. import { UniverSheetsPlugin } from "@univerjs/sheets";
    13. import { UniverSheetsFormulaPlugin } from "@univerjs/sheets-formula";
    14. import { UniverSheetsUIPlugin } from "@univerjs/sheets-ui";
    15. import { UniverUIPlugin } from "@univerjs/ui";
    16. import { onBeforeUnmount, onMounted, ref } from "vue";
    17. </script>
    复制代码
    2、创建一个 Univer 实例,并注册这些插件
    1. <script setup>
    2. const univer = ref(null);
    3. const container = ref(null);
    4. const univer = new Univer({
    5.     theme: defaultTheme,
    6.   });
    7.   univer.value = univer;

    8.   // core plugins
    9.   univer.registerPlugin(UniverRenderEnginePlugin);
    10.   univer.registerPlugin(UniverFormulaEnginePlugin);
    11.   univer.registerPlugin(UniverUIPlugin, {
    12.     container: container.value,//注意!!!container为需要展示图标的容器的ref
    13.     header: true,
    14.     toolbar: true,
    15.     footer: true,
    16.   });

    17.   // doc plugins
    18.   univer.registerPlugin(UniverDocsPlugin, {
    19.     hasScroll: false,
    20.   });
    21.   univer.registerPlugin(UniverDocsUIPlugin);

    22.   // sheet plugins
    23.   univer.registerPlugin(UniverSheetsPlugin);
    24.   univer.registerPlugin(UniverSheetsUIPlugin);
    25.   univer.registerPlugin(UniverSheetsFormulaPlugin);
    26. </script>
    复制代码
    3、创建一个空白的 Univer Sheet
    1. univer.createUniverSheet({});
    复制代码
    4、加载数据与存储


    加载

    通过调用
    1. Univer
    复制代码
    1. createUniverSheet
    复制代码
    方法,可以创建一个新的
    1. Workbook
    复制代码
    实例。方法的第一个参数是一个对象,包含了
    1. Workbook
    复制代码
    的数据,应该符合
    1. IWorkbookData
    复制代码
    接口。
    1. import { IWorkbookData } from "@univerjs/core";

    2. // ... create univer instance and load plugins

    3. const data: IWorkbookData = {};
    4. const workbook = univer.createUniverSheet(data);
    复制代码
    存储

    通过调用
    1. Workbook
    复制代码
    1. save
    复制代码
    方法,可以得到
    1. IWorkbookData
    复制代码
    对象,包含了表格内部的数据。
    1. const savedData = workbook.save();
    复制代码
    5、完整代码(可以直接复制为组件)
    1. <template>
    2.   <div ref="container" class="univer-container"></div>
    3. </template>

    4. <script setup>
    5. import "@univerjs/design/lib/index.css";
    6. import "@univerjs/ui/lib/index.css";
    7. import "@univerjs/sheets-ui/lib/index.css";
    8. import "@univerjs/sheets-formula/lib/index.css";

    9. import { Univer } from "@univerjs/core";
    10. import { defaultTheme } from "@univerjs/design";
    11. import { UniverDocsPlugin } from "@univerjs/docs";
    12. import { UniverDocsUIPlugin } from "@univerjs/docs-ui";
    13. import { UniverFormulaEnginePlugin } from "@univerjs/engine-formula";
    14. import { UniverRenderEnginePlugin } from "@univerjs/engine-render";
    15. import { UniverSheetsPlugin } from "@univerjs/sheets";
    16. import { UniverSheetsFormulaPlugin } from "@univerjs/sheets-formula";
    17. import { UniverSheetsUIPlugin } from "@univerjs/sheets-ui";
    18. import { UniverUIPlugin } from "@univerjs/ui";
    19. import { onBeforeUnmount, onMounted, ref } from "vue";
    20. import { IWorkbookData } from "@univerjs/core";

    21. const data: IWorkbookData = {};

    22. const univer = ref(null);
    23. const workbook = ref(null);
    24. const container = ref(null);

    25. onMounted(() => {
    26.   init(data);
    27. });

    28. onBeforeUnmount(() => {
    29.   destroyUniver();
    30. });

    31. /**
    32. * Initialize univer instance and workbook instance
    33. * @param data {IWorkbookData} document see https://univer.work/api/core/interfaces/IWorkbookData.html
    34. */
    35. const init = (data = {}) => {
    36.   const univer = new Univer({
    37.     theme: defaultTheme,
    38.   });
    39.   univer.value = univer;


    40.   // core plugins
    41.   univer.registerPlugin(UniverRenderEnginePlugin);
    42.   univer.registerPlugin(UniverFormulaEnginePlugin);
    43.   univer.registerPlugin(UniverUIPlugin, {
    44.     container: container.value,
    45.     header: true,
    46.     toolbar: true,
    47.     footer: true,
    48.   });

    49.   // doc plugins
    50.   univer.registerPlugin(UniverDocsPlugin, {
    51.     hasScroll: false,
    52.   });
    53.   univer.registerPlugin(UniverDocsUIPlugin);

    54.   // sheet plugins
    55.   univer.registerPlugin(UniverSheetsPlugin);
    56.   univer.registerPlugin(UniverSheetsUIPlugin);
    57.   univer.registerPlugin(UniverSheetsFormulaPlugin);

    58.   // create workbook instance
    59.   workbook.value = univer.createUniverSheet(data);
    60. };

    61. /**
    62. * Destroy univer instance and workbook instance
    63. */
    64. const destroyUniver = () => {
    65.   univer.value?.dispose();
    66.   univer.value = null;
    67.   workbook.value = null;
    68. };

    69. </script>

    70. <!-- Add "scoped" attribute to limit CSS to this component only -->
    71. <style scoped>
    72. .univer-container {
    73.   width: 100%;
    74.   height: 100%;
    75.   overflow: hidden;
    76. }

    77. /* Also hide the menubar */
    78. :global(.univer-menubar) {
    79.   display: none;
    80. }
    81. </style>
    复制代码
    四、注意事项

    Univer Docs无法直接使用
    1. luckyExcel
    复制代码
    对Excel进行文件的解析,解析出的格式与Univer Docs需要传入的格式不同,需要自己进行格式的转换。使用Univer Docs进行二次开发更为便捷,具体使用情况可以根据个人的需求进行调整。
    以上就是Vue3使用Univer Docs创建在线编辑Excel的示例代码的详细内容,更多关于Vue3 Univer Docs在线编辑Excel的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/javascript/339450akz.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表