找回密码
 立即注册

QQ登录

只需一步,快速开始

wisestar

初级会员

28

主题

83

帖子

301

积分

初级会员

积分
301
QQ
wisestar
初级会员   /  发表于:2021-12-2 09:08  /   查看:2928  /  回复:6
1金币
image.png730444946.png
如图,该模板是使用的SpreadJS Designer画的,我想在vue代码中,获取动态数据来填充12行的数据,并且获取数据长度来增加12行格式到13行14行乃至更多行。
麻烦指导一下,我该如何复制12行的样式并且把该格式新增到12行下边

最佳答案

查看完整内容

把json前面删除即可导进我们的在线表格编辑器 导进去后,可以通过数据-模板去设计对应的字段。这样绑定数据源的时候才能找到对应的位置绑定。 另外你提供的模板之所以无法绑定是因为没有像上图那样去设计模板,右侧的按钮也是可以直接拖到工作簿上的。关于如何设计模板可以参考云盘里面的视频教程。 链接:https://pan.baidu.com/s/1d4EaQ1fi_0q-Iy3Y6qDcMA 提取码:lqak

6 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-2 09:08:13
来自 5#
wisestar 发表于 2021-12-2 11:39
您好,demo我看了,但是我这边有几个疑问,demo中的ssjson我这边无法通过SpreadJS Designer打开,另外我 ...

把json前面删除即可导进我们的在线表格编辑器
image.png78521727.png

导进去后,可以通过数据-模板去设计对应的字段。这样绑定数据源的时候才能找到对应的位置绑定。
image.png931145934.png

另外你提供的模板之所以无法绑定是因为没有像上图那样去设计模板,右侧的按钮也是可以直接拖到工作簿上的。关于如何设计模板可以参考云盘里面的视频教程。
链接:https://pan.baidu.com/s/1d4EaQ1fi_0q-Iy3Y6qDcMA
提取码:lqak

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-2 10:10:24
2#
你好,可以参考这个demo,利用数据绑定实现
image.png526027831.png

绑定.zip

3.51 KB, 下载次数: 205

回复 使用道具 举报
wisestar
初级会员   /  发表于:2021-12-2 11:39:24
3#
Derrick.Jiao 发表于 2021-12-2 10:10
你好,可以参考这个demo,利用数据绑定实现

您好,demo我看了,但是我这边有几个疑问,demo中的ssjson我这边无法通过SpreadJS Designer打开,另外我如何把数据绑定到指定位置呢?我这边目前按下面代码无法绑上去
  1. <template>
  2.   <div class="home">
  3.     <div class="toolbar">
  4.       <input type="file" class="el-button" @change="importExcel($event)" />
  5.       <el-button @click="exportExcel()">导出 Excel</el-button>
  6.       <el-button @click="handelPrint()">打印</el-button>
  7.     </div>

  8.     <div class="spreadWrapper">
  9.       <gc-spread-sheets
  10.         class="spreadHost"
  11.         @workbookInitialized="workbookInitialized($event)"
  12.       >
  13.         <gc-worksheet></gc-worksheet>
  14.       </gc-spread-sheets>
  15.     </div>
  16.   </div>
  17. </template>

  18. <script>
  19. import Vue from "vue";
  20. import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css";

  21. import * as GC from "@grapecity/spread-sheets";
  22. import "@grapecity/spread-sheets-vue";
  23. import * as ExcelIO from "@grapecity/spread-excelio";
  24. import FileSaver from "file-saver";
  25. import "@grapecity/spread-sheets-charts";
  26. import "@grapecity/spread-sheets-resources-zh";
  27. import "@grapecity/spread-sheets-barcode";
  28. import json from "./../data/xsdj.json";
  29. import '@grapecity/spread-sheets-print';
  30. import moment from "moment";
  31. GC.Spread.Common.CultureManager.culture("zh-cn");
  32. // GC.Spread.Sheets.LicenseKey = ExcelIO.LicenseKey = "your key";

  33. export default class SpreadSheets extends Vue {
  34.   /*data(){
  35.     return{
  36.       tableData:[{ xh: 1, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },
  37.         { xh: 2, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },
  38.         { xh: 3, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },],
  39.       loading:false,
  40.       queryParams:{

  41.       },
  42.       source:null
  43.     }
  44.   }*/

  45.   constructor() {
  46.       super();
  47.       this.spread = null;
  48.       this.tableData=[{ xh: 1, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },
  49.       { xh: 2, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },
  50.       { xh: 3, cp: '手机', gg: '台', xhao: 'A15',dw:'A',sl:99, cjj:5499, zk:499, sj:5000,bz:'' },];
  51.   }
  52.   mounted() {
  53.     console.log("tableData:"+this.tableData)
  54.   }
  55.   //
  56.   // constructor() {
  57.   //     super();
  58.   //     this.spread = null;
  59.   // }
  60.   workbookInitialized(spread) {
  61.     console.log("this:"+this)
  62.     console.log("tableData:"+this.tableData)
  63.     this.spread = spread;
  64.     spread.fromJSON(json);

  65.     var sheet = spread.getActiveSheet();
  66.     sheet.getRange(12, 3, 1, 1).text("ssss")
  67.     // sheet.copyTo(12,0,13,0,17,10,GC.Spread.Sheets.CopyToOptions.value);
  68.     var fromRange = [new GC.Spread.Sheets.Range(12, 3, 1, 1)];
  69.     var toRanges  = [new GC.Spread.Sheets.Range(13, 3, 1, 1)];
  70.     //去除无用网格线
  71.     sheet.options.gridline = {showVerticalGridline: false, showHorizontalGridline: false};
  72.     sheet.options.showVerticalScrollbar = false;// y不显示滚动条
  73.     sheet.options.showHorizontalScrollbar = false; // x不显示滚动条
  74.     sheet.options.colHeaderVisible = false;//隐藏列头
  75.     sheet.options.rowHeaderVisible = false;//隐藏行头
  76.     spread.options.allowContextMenu = false;//禁用右键
  77.     sheet.options.isProtected = true;
  78.     console.log(this.tableData)
  79.     this.source =  new GC.Spread.Sheets.Bindings.CellBindingSource(this.tableData);
  80.     console.log(this.source)
  81.     sheet.setDataSource(this.source);
  82.     for (let i = 0; i < 3; i++) {

  83.     }
  84.     spread.commandManager().execute({cmd: "clipboardPaste", sheetName: "Sheet1", fromSheet: sheet, fromRanges: fromRange,
  85.       pastedRanges: toRanges, isCutting: false, clipboardText: "", pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all});
  86.     spread.resumePaint();
  87.     }
  88.   importExcel(event) {
  89.     const file = event.target.files[0];
  90.     let self = this;
  91.     let excelIO = new ExcelIO.IO();
  92.     excelIO.open(file, (spreadJSON) => {
  93.       if (self.spread) {
  94.         self.spread.fromJSON(spreadJSON);
  95.       }
  96.     });
  97.   }
  98.   exportExcel() {
  99.     let self = this;
  100.     if (self.spread) {
  101.       let spreadJSON = JSON.stringify(self.spread.toJSON());
  102.       let excelIO = new ExcelIO.IO();
  103.       excelIO.save(spreadJSON, (blob) => {
  104.         FileSaver.saveAs(blob, "export.xlsx");
  105.       });
  106.     }
  107.   }
  108.   handelPrint() {
  109.     this.setPrintInfo(this.spread)
  110.     this.spread.print();
  111.     let sheet = this.spread.getActiveSheet();
  112.     sheet.addColumns(0,3);
  113.   }
  114.   setPrintInfo(spread) {
  115.     let sheet = spread.getActiveSheet();
  116.     sheet.deleteColumns(0,3);
  117.     let printInfo = sheet.printInfo();
  118.     printInfo.showBorder(false);
  119.     printInfo.margin({
  120.       top: 10,
  121.       bottom: 30,
  122.       left: 5,
  123.       right: -50,
  124.       header: 0,
  125.       footer: 0,
  126.     });
  127.     let fontsObj = window.fonts
  128.     var fonts = {
  129.       normal: fontsObj["simsun.ttf"],
  130.     };
  131.     printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape)
  132.     // printInfo.showBorder(true);
  133.     printInfo.showGridLine(false);
  134.     printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
  135.     printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
  136.     printInfo.centering(GC.Spread.Sheets.Print.PrintCentering.horizontal);
  137.   }
  138.   async query() {
  139.     this.loading = true
  140.     try {
  141.       this.queryParams.sendTime = moment(this.queryParams.sendTime).format("YYYY-MM") + "-01"
  142.       const {page, lastMonthDataNum} = await getList(this.queryParams)
  143.       this.tableData = page.data.map(item => {
  144.         item.year = moment(item.sendTime).format("YYYY年")
  145.         item.month = moment(item.sendTime).format("MM月")
  146.         return item
  147.       })
  148.     } catch {

  149.     } finally {
  150.       this.loading = false
  151.     }
  152.   }

  153. }
  154. </script>
  155. <!-- Add "scoped" attribute to limit CSS to this component only -->
  156. <style scoped>
  157. .home,
  158. .spreadWrapper {
  159.   height: 100%;
  160. }
  161. .spreadHost {
  162.   height: 100%;
  163.   width: 100%;
  164. }
  165. .toolbar {
  166.   padding-bottom: 10px;
  167. }
  168. .el-button {
  169.   /*padding-bottom: 5px;*/
  170.   height: 50px;
  171. }
  172. a {
  173.   float: right;
  174.   text-decoration: none;
  175.   margin-right: 10px;
  176.   line-height: 56px;
  177. }
  178. </style>
复制代码
回复 使用道具 举报
wisestar
初级会员   /  发表于:2021-12-2 11:40:39
4#
这个是我这边的模板

xsdj.ssjson

40.22 KB, 阅读权限: 50, 下载次数: 1

回复 使用道具 举报
wisestar
初级会员   /  发表于:2021-12-2 14:21:40
6#
Derrick.Jiao 发表于 2021-12-2 09:08
把json前面删除即可导进我们的在线表格编辑器

非常感谢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-2 14:24:52
7#

应该的,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部