找回密码
 立即注册

QQ登录

只需一步,快速开始

HJ-LY

注册会员

7

主题

19

帖子

66

积分

注册会员

积分
66
HJ-LY
注册会员   /  发表于:2023-10-30 19:52  /   查看:1591  /  回复:3
1金币

导出CSV的时候,要做一些特殊处理需要克隆一个spread,但是克隆的spread数据丢失了,所以我重新设置了一下。为什么会丢失呢?有特殊对象的原因?
export function spreadJsCsvDownload(spread, fileName,data,colInfos,flg) {
  if (!fileName) {
    return false;
  }
  if (!spread) {
    return false;
  }
  var newSpread = new GC.Spread.Sheets.Workbook();
  newSpread.fromJSON(JSON.parse(JSON.stringify(spread.toJSON())));
  let sheet = newSpread.getActiveSheet();
  //sheet.setDataSource(data);
  //sheet.bindColumns(colInfos);
  sheet.addRows(0, 1);
  sheet.setRowVisible(0, false, GC.Spread.Sheets.SheetArea.viewport);
  for (var col = 0; col < sheet.getColumnCount(); col++) {
    sheet.setValue(
      0,
      col,
      sheet.getText(0, col, GC.Spread.Sheets.SheetArea.colHeader)
    );
    if(flg){
      if(!sheet.getColumnVisible(col)){
        sheet.deleteColumns(col, 1);
      }
    }
  }
  let options = {
    columnHeadersAsFrozenRows: false,
    encoding: "UTF-8",
    rowDelimiter: "\r\n",
    columnDelimiter: ",",
    sheetIndex: 0,
  };
  options.fileType = GC.Spread.Sheets.FileType.csv;
  newSpread.export(
    function (blob) {
      saveAs(blob, fileName);
    },
    function () {},
    options
  );
}spread对象: image.png303815612.png 下在的CSV:
image.png617631835.png
datasourceModel:[
                { name: 'CODE', age: 27,account:210,subject:">>", birthday: '19850820', position: '0',check:true},
                { name: 'CODE', age: 27,account:80,subject:null, birthday: '19850820', position: '1',check:true},
                { name: 'CODE', age: 27,account:70,subject:"数", birthday: '19850820', position: '1',check:true},
                { name: 'CODE', age: 27,account:60,subject:"语", birthday: '19850820', position: '1',check:true},
]
colInfos: [
                { name: 'name', displayName: 'CODE', size: 120},
                { name: 'account', displayName: '隐藏列', size: 120, visible: false},
                { name: 'subject', displayName: '科目', size: 80,},
                { name: 'position', displayName: '时间', size: 100,},
                { name: 'birthday', displayName: '日期', formatter: 'yy/MM/dd', size: 120 },
                { name: 'age', displayName: '数据', size: 120, formatter: '0.00%',resizable: false },
                { name: 'check', displayName: '選択', size: 120,},
        ],






最佳答案

查看完整内容

您这边的数据是通过数据绑定绑定上的,所以在导出为json的时候要设置includeBindingSource为true才可将数据保留。 按照下图的代码设置,即可在导出时保留数据:

3 个回复

正序浏览
HJ-LY
注册会员   /  发表于:2023-10-31 13:16:55
3#
本帖最后由 HJ-LY 于 2023-10-31 13:19 编辑

我在这上面改了一下,是同样的现象,出力的CSV是空数据。是还需要什么设置吗?
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/spreadjs-file-format/overview/vue

features_spreadjs-file-format_overview_Vue.zip

35.16 KB, 下载次数: 124

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-31 10:40:55
2#
您好,从您提供的代码上看不出问题的原因,请您这边提供一个可以复现此问题的Demo,我们这边根据实际代码调研一下。
回复 使用道具 举报
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-10-30 19:52:30
来自 4#
您这边的数据是通过数据绑定绑定上的,所以在导出为json的时候要设置includeBindingSource为true才可将数据保留。

按照下图的代码设置,即可在导出时保留数据:

image.png514093932.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部