Vue集成SpreadJS实现Excel(高级详解)

news2024/11/25 18:40:18

在这里插入图片描述

文章目录

  • SpreadJS介绍
  • 安装 SpreadJS
  • 具体使用
    • 设置值和公式
    • 设置样式
    • 绑定数据

更多相关内容可查看

SpreadJS介绍

附官网地址:https://www.grapecity.com.cn/developer/spreadjs

附在线编辑地址:https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html

附SpreadJS示例地址:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/

SpreadJS 是一款由GrapeCity开发的 JavaScript 电子表格库。它提供了类似于 Microsoft Excel 的功能,可以在 Web 应用程序中创建、编辑和展示复杂的电子表格。SpreadJS 可以用于创建各种类型的应用程序,包括企业级数据分析、财务报告、计算和数据可视化等。

SpreadJS 提供了丰富的功能,包括但不限于:

  • 数据绑定和格式化:支持从各种数据源(如 JSON、XML、CSV 等)加载数据,并支持数据格式化和显示。
  • 公式和计算:类似于 Excel,SpreadJS 允许在单元格中使用公式进行计算,以及使用内置函数执行各种操作。
  • 样式和格式:提供了丰富的样式选项,可以自定义单元格的外观,包括字体、颜色、背景等。
  • 图表和图形:支持在电子表格中创建各种类型的图表和图形,用于数据可视化。
  • 数据验证和保护:支持数据验证规则,以确保数据的有效性和一致性,并提供单元格级别的保护。
  • 导出和打印:可以将电子表格导出为 Excel、PDF 等格式,并支持打印功能。

SpreadJS 是一个功能强大且灵活的工具,适用于各种类型的 Web 应用程序,特别是需要展示和处理大量数据的应用场景。

安装 SpreadJS

创建一个Vue应用程序 - 通过使用 Vue脚手架创建一个新的Vue应用程序。 在命令行或终端运行以下命令,使用默认选项创建Vue应用程序。更多细节请参考Vue官网。

npm init vue@latest //给予项目名称: sjs-vue-app, 选择不同的项目选项。
cd sjs-vue-app

安装SpreadJS npm包 - 我们通过使用 @grapecity-software/spread-sheets-vue 来分发Vue SpreadJS 控件. 最主要的 @grapecity-software/spread-sheets 包是功能模块核心。在应用程序根目录运行下列命令来安装这些包最新的版本。

npm install @grapecity-software/spread-sheets-vue
npm install @grapecity-software/spread-sheets

在应用程序内添加SpreadJS Vue控件/初始化SpreadJS电子表格
打开 main.ts 并用下列代码替换文件内容。

import { createApp } from 'vue'
import App from './App.vue'
import { GcSpreadSheets, GcWorksheet, GcColumn } from '@grapecity-software/spread-sheets-vue'
import './assets/main.css'

let app = createApp(App);
app.component('gc-spread-sheets', GcSpreadSheets);
app.component('gc-worksheet', GcWorksheet);
app.component('gc-column', GcColumn);
app.mount("#app");

打开src\App.vue并用下列代码替换文件内容。

<template>
  <div id="spread-host">
    <gc-spread-sheets hostClass="spreadHost" @workbookInitialized="initWorkbook">
    </gc-spread-sheets>
  </div>
</template>

<script setup>
import "@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2016colorful.css";
import * as GC from "@grapecity-software/spread-sheets";
import "@grapecity-software/spread-sheets-vue";

function initWorkbook(spread) {
   let sheet = spread.getActiveSheet();
   sheet
     .getCell(0, 0)
     .vAlign(GC.Spread.Sheets.VerticalAlign.center)
     .value("Hello SpreadJS");
}
</script>

<style>
.spreadHost {
  width: 800px;
  height: 800px;
}
</style>

具体使用

设置值和公式

使用 setValue 方法来给指定单元格设置值,使用 setFormula 方法来设置计算公式。
在这里插入图片描述

function initWorkbook(spread) {
  let sheet = spread.getActiveSheet();
  //Setting Values - Text
  sheet.setValue(1, 1, "Setting Values");
  //Setting Values - Number
  sheet.setValue(2, 1, "Number");
  sheet.setValue(2, 2, 23);
  sheet.setValue(3, 1, "Text");
  sheet.setValue(3, 2, "GrapeCity");
  sheet.setValue(4, 1, "Datetime");
  //Setting Values - DateTime
  sheet.getCell(4, 2).value(new Date(2020, 10, 7)).formatter("mm-dd-yyyy");
}

设置样式

在这里插入图片描述

function initWorkbook(spread) {
   /initialize the spread
   let sheet = spread.getActiveSheet();
   //Setting Values - Text
   sheet.setValue(1, 1, "Setting Values");
   //Setting Values - Number 
   sheet.setValue(2, 1, "Number");
   sheet.setValue(2, 2, 23)
   sheet.setValue(3, 1, "Text");
   sheet.setValue(3, 2, "GrapeCity")
   sheet.setValue(4, 1, "Datetime");
   //Setting Values - DateTime
   sheet.getCell(4, 2).value(new Date(2020, 10, 7)).formatter("mm-dd-yyyy");
   //Setting style
   sheet.setColumnWidth(1, 200);
   sheet.setColumnWidth(2, 200);
   sheet.getRange(1, 1, 1, 2).backColor("rgb(130, 188, 0)").foreColor("rgb(255, 255, 255)");
   sheet.getRange(3, 1, 1, 2).backColor("rgb(211, 211, 211)");
   sheet.addSpan(1, 1, 1, 2);
   sheet.getRange(1, 1, 4, 2).setBorder(new GC.Spread.Sheets.LineBorder("Black", GC.Spread.Sheets.LineStyle.thin), {
     all: true
   });
   sheet.getRange(1, 1, 4, 2).setBorder(new GC.Spread.Sheets.LineBorder("Black", GC.Spread.Sheets.LineStyle.dotted), {
     inside: true
   });
   sheet.getRange(1, 1, 1, 2).hAlign(GC.Spread.Sheets.HorizontalAlign.center);
}

绑定数据

使用 getSheet 方法来获取您正在使用的表单。通过使用 “new GC.Spread.Sheets.Bindings.CellBindingSource(person);” 来添加单元格需要绑定的数据源。 之后使用 setBindingPath 方法来给指定表单区域的指定单元格绑定数据。最后使用setDataSource方法来给指定表单添加数据源。
在这里插入图片描述

function initWorkbook(spread) {
   var sheet = spread.getSheet(0);
   var person = { name: 'Peter Winston', age: 25, gender: 'Male', address: { postcode: '10001' } };
   var source = new GC.Spread.Sheets.Bindings.CellBindingSource(person);
   sheet.setBindingPath(2, 2, 'name');
   sheet.setBindingPath(3, 2, 'age');
   sheet.setBindingPath(4, 2, 'gender');
   sheet.setBindingPath(5, 2, 'address.postcode');
   sheet.setDataSource(source);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型:分本分割模型

目录 一、文本分割 二、BERT文本分割模型 三、部署模型 3.1 下载模型 3.2 安装依赖 3.3 部署模型 3.4 运行服务 四、测试模型 一、文本分割 文本分割是自然语言处理中的一项基础任务&#xff0c;目标是将连续的文本切分成有意义的片段&#xff0c;这些片段可以是句子、…

流量控制和差错控制

流量控制是一种协调发送站和接收站工作步调的技术&#xff0c;其目的是避免由于发送速度过快&#xff0c;使得接收站来不及处理而丢失数据。通常&#xff0c;接收站有一定大小的接收缓冲区&#xff0c;当接收到的数据进入缓冲区后&#xff0c;接收器要进行简单的处理&#xff0…

探索Dagster:现代数据编排的利器

探索Dagster&#xff1a;现代数据编排的利器 在如今数据驱动的世界&#xff0c;数据工程和数据处理的复杂度不断增加&#xff0c;不仅需要管理各种数据源和数据流&#xff0c;还需要确保数据处理管道的可靠性、可维护性和可扩展性。Dagster作为一个现代化的数据编排平台&#x…

java:使用shardingSphere访问mysql的分库分表数据

# 创建分库与分表 创建两个数据库【order_db_1、order_db_2】。 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。 建表sql请参考&#xff1a; CREATE TABLE orders_1 (id bigint NOT NULL,order_type varchar(255) NULL DEFAULT NULL,customer_id bigi…

运算符和表达式

基本概念 运算符&#xff1a;根据特定的算法对操作数执行运算&#xff0c; 并返回计算结果的符号 操作数&#xff1a;参与运算的对象 表达式&#xff1a;计算的式子 1.算术运算 针对数字&#xff1a;加法。针对字符串&#xff1a;连接。针对复合型数据&#xff1a;合并。…

【需求设计】软件概要设计说明怎么写?概要设计说明书实际项目案例(63页Word直接套用)

软件概要设计说明书书写要点可以归纳为以下几个方面&#xff0c;以确保文档的准确性、完整性和可读性&#xff1a; 引言 目的&#xff1a;介绍编写该文档的目的、主要内容及目标读者。 背景&#xff1a;说明被开发软件的名称、项目提出者、开发者等背景信息。 需求概述&#xf…

【第3章】ComfyUI界面介绍(新增节点的3种方式/主工作区/工作流/设置/插件管理界面)ComfyUI基础入门教程

🥽主界面介绍 ComfyUI的工作界面,我们在上章节中已经见过了(如上所示)。 【注意】大家在网盘下载的comfyui版本,已经内置了很多实用节点,所以跟原始开源版本不一致,不过当前阶段不需要太在意这些。 这里我们快速了解下,界面上的这些区域,都分别是做什么的? 总体…

openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步

一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本&#xff0c;该版本生命周期为0.5年。根据openGauss官网介绍&#xff0c;6.0.0-RC1与之前的版本特性功能保持兼容,另外&#xff0c;在和之前版本兼容的基础上增加了很多新功能&#xff0c;比如分区表性能优化…

为什么有的网站接口有traceid,有的网站接口没有?

背景&#xff1a;打开百度&#xff0c;输入任意内容&#xff0c;点击百度一下。我们从左侧可以看到有2个接口是有TraceID的 -其他接口是没有的 下面分享我的理解&#xff1a; 对于高并发的业务&#xff08;访问频繁&#xff09;的接口&#xff0c;系统会生成非常多的数据&…

Playwright+Python+Pytest:基础方法二次封装简化及链式调用

引言 随着Web应用的日益复杂化&#xff0c;自动化测试成为了确保软件质量的关键环节。Playwright 是一个强大的自动化库&#xff0c;它支持在 Chromium、Firefox 和 WebKit 中运行自动化脚本。本文将介绍如何使用 Playwright 的 Python 同步 API 来简化点击和填充操作&#xf…

【护网急训2】帕鲁杯应急响应靶场

应急响应靶场 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 前段时间更新过一次应急响应靶场&am…

讯飞星火模型-语音转文字实现

目录 项目结构 准备音频 接口Demo 准备代码&#xff08;完整修改后&#xff09; 测试提取中文文字代码 结果 下载链接&#xff1a; 这是上周打算试试&#xff0c;提取视频文字之后&#xff0c;制作视频字幕&#xff0c;从而想用大模型来实现&#xff0c;基本的demo可以在…

Linux和Windows下查看CPU运行频率的方法

文章目录 0.前言1.Linux系统中查看CPU运行频率的方法&#xff08;经测试在UnRaid中适用的&#xff09;1.1.最简单的lscpu命令1.2.查看CPU实时运行频率的watch -n 1 cpufreq-info命令 2.WIndows系统中查看CPU运行频率的方法2.1.系统属性大法2.2.任务管理器大法2.3.CPU-Z等硬件检…

MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过

这是一个轻松赚钱的项目。 短视频时代&#xff0c;谁掌握了流量谁就掌握了Money! 所以给大家分享这个经过精心打造的MoneyPrinterPlus项目。 它可以&#xff1a;使用AI大模型技术,一键批量生成各类短视频。 它可以&#xff1a;一键混剪短视频&#xff0c;批量生成短视频不是…

计算机网络(3) 字节顺序:网络字节序与IPv4

一.小端与大端 小端&#xff08;Little endian&#xff09;&#xff1a;低字节保存在内存低地址&#xff0c;高字节保存在内存高地址。 大端&#xff08;Big endian&#xff09;&#xff1a;低字节保存在内存高地址&#xff0c;高字节保存在内存低地址。 例如&#xff08;14…

FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外&#xff0c;还有比较两种比较新的流媒体协议&#xff0c;分别是SRT和RIST。 其中SRT全称为Secure Reliable Transport&#xf…

计算机相关专业的探讨

目录 一、计算机相关专业是否仍是“万金油”选择 二、计算机行业的未来发展态势 三、从专业与个人的匹配度判断选择计算机相关专业 四、对于高考生的建议 一、计算机相关专业是否仍是“万金油”选择 计算机相关专业在过去很长一段时间内确实被视为“万金油”专业&#xff0…

中文藏文翻译怎么在线翻译?通过这些方法

中文藏文翻译怎么在线翻译&#xff1f;随着全球化的加速和跨文化交流的日益频繁&#xff0c;中文与藏文之间的翻译需求逐渐增加。为了满足这一需求&#xff0c;各种在线翻译工具和方法应运而生。下面&#xff0c;本文将详细介绍三种中文藏文在线翻译的方法&#xff0c;帮助用户…

[数据集][目标检测]攀墙攀越墙壁数据集VOC格式-701张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;701 标注数量(xml文件个数)&#xff1a;701 标注类别数&#xff1a;1 标注类别名称:["fq"] 每个类别标…

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件&#xff0c;它常用于捕获用户生成的单击事件&#xff0c;其最明显的用途是触发绑定到一个处理函数。 wxPython类…