请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

莫莫 讲师达人认证
金牌服务用户   /  发表于:2019-4-17 10:16  /   查看:3568  /  回复:3




setArray方法在从当前活动的单元格开始填充数据,如果活动的单元格是在表格默认的行/列边缘,数据很多的时候,会出现数据展示不完整,如图

  1. var sheet = spread.getActiveSheet();
  2.         sheet.setColumnWidth(1, 100);

  3.         // 这是后端返回的原本的数据格式
  4.         let data = [
  5.                       [
  6.                         {
  7.                           'value': 'last_upload_time(year)',
  8.                           'type': 'ROW_HEADER_HEADER',
  9.                           'properties': {
  10.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  11.                             'dimension': 'f_drug_sales',
  12.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  13.                           },
  14.                         },
  15.                         {
  16.                           'value': '金额',
  17.                           'type': 'COLUMN_HEADER',
  18.                           'properties': {
  19.                             'uniquename': '[Measures].[金额]',
  20.                             'hierarchy': '[Measures]',
  21.                             'dimension': 'Measures',
  22.                             'level': '[Measures].[MeasuresLevel]',
  23.                           },
  24.                         },
  25.                         {
  26.                           'value': '数量',
  27.                           'type': 'COLUMN_HEADER',
  28.                           'properties': {
  29.                             'uniquename': '[Measures].[数量]',
  30.                             'hierarchy': '[Measures]',
  31.                             'dimension': 'Measures',
  32.                             'level': '[Measures].[MeasuresLevel]',
  33.                           },
  34.                         },
  35.                       ],
  36.                       [
  37.                         {
  38.                           'value': '2016',
  39.                           'type': 'ROW_HEADER',
  40.                           'properties': {
  41.                             'uniquename': '[f_drug_sales].[last_upload_time].[2016]',
  42.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  43.                             'dimension': 'f_drug_sales',
  44.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  45.                           },
  46.                         },
  47.                         {
  48.                           'value': '20,897,646.95',
  49.                           'type': 'DATA_CELL',
  50.                           'properties': {
  51.                             'position': '0:0',
  52.                             'raw': '2.089764695E7',
  53.                           },
  54.                         },
  55.                         {
  56.                           'value': '7,036,702.00',
  57.                           'type': 'DATA_CELL',
  58.                           'properties': {
  59.                             'position': '1:0',
  60.                             'raw': '7036702.0',
  61.                           },
  62.                         },
  63.                       ],
  64.                       [
  65.                         {
  66.                           'value': '2015',
  67.                           'type': 'ROW_HEADER',
  68.                           'properties': {
  69.                             'uniquename': '[f_drug_sales].[last_upload_time].[2015]',
  70.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  71.                             'dimension': 'f_drug_sales',
  72.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  73.                           },
  74.                         },
  75.                         {
  76.                           'value': '9,671,333.01',
  77.                           'type': 'DATA_CELL',
  78.                           'properties': {
  79.                             'position': '0:1',
  80.                             'raw': '9671333.01',
  81.                           },
  82.                         },
  83.                         {
  84.                           'value': '3,527,057.00',
  85.                           'type': 'DATA_CELL',
  86.                           'properties': {
  87.                             'position': '1:1',
  88.                             'raw': '3527057.0',
  89.                           },
  90.                         },
  91.                       ],
  92.                       [
  93.                         {
  94.                           'value': '2015',
  95.                           'type': 'ROW_HEADER',
  96.                           'properties': {
  97.                             'uniquename': '[f_drug_sales].[last_upload_time].[2015]',
  98.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  99.                             'dimension': 'f_drug_sales',
  100.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  101.                           },
  102.                         },
  103.                         {
  104.                           'value': '9,564,004.34',
  105.                           'type': 'DATA_CELL',
  106.                           'properties': {
  107.                             'position': '0:2',
  108.                             'raw': '9564004.34',
  109.                           },
  110.                         },
  111.                         {
  112.                           'value': '3,474,456.00',
  113.                           'type': 'DATA_CELL',
  114.                           'properties': {
  115.                             'position': '1:2',
  116.                             'raw': '3474456.0',
  117.                           },
  118.                         },
  119.                       ],
  120.                       [
  121.                         {
  122.                           'value': '2015',
  123.                           'type': 'ROW_HEADER',
  124.                           'properties': {
  125.                             'uniquename': '[f_drug_sales].[last_upload_time].[2015]',
  126.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  127.                             'dimension': 'f_drug_sales',
  128.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  129.                           },
  130.                         },
  131.                         {
  132.                           'value': '9,307,649.74',
  133.                           'type': 'DATA_CELL',
  134.                           'properties': {
  135.                             'position': '0:3',
  136.                             'raw': '9307649.74',
  137.                           },
  138.                         },
  139.                         {
  140.                           'value': '3,489,217.00',
  141.                           'type': 'DATA_CELL',
  142.                           'properties': {
  143.                             'position': '1:3',
  144.                             'raw': '3489217.0',
  145.                           },
  146.                         },
  147.                       ],
  148.                       [
  149.                         {
  150.                           'value': '2014',
  151.                           'type': 'ROW_HEADER',
  152.                           'properties': {
  153.                             'uniquename': '[f_drug_sales].[last_upload_time].[2014]',
  154.                             'hierarchy': '[f_drug_sales].[last_upload_time]',
  155.                             'dimension': 'f_drug_sales',
  156.                             'level': '[f_drug_sales].[last_upload_time].[last_upload_time(year)]',
  157.                           },
  158.                         },
  159.                         {
  160.                           'value': '9,113,477.66',
  161.                           'type': 'DATA_CELL',
  162.                           'properties': {
  163.                             'position': '0:4',
  164.                             'raw': '9113477.66',
  165.                           },
  166.                         },
  167.                         {
  168.                           'value': '3,891,354.00',
  169.                           'type': 'DATA_CELL',
  170.                           'properties': {
  171.                             'position': '1:4',
  172.                             'raw': '3891354.0',
  173.                           },
  174.                         },
  175.                       ]
  176.                 ];

  177.         //处理后台返回的数据
  178.         var newData = [];
  179.         for(let item of data){
  180.             let oneData = [];
  181.             for(let oneItem of item){
  182.                 oneItem = oneItem.value;
  183.                 oneData.push(oneItem);
  184.             }
  185.             newData.push(oneData);
  186.         }
  187.         console.log(newData);

  188. $("#btn4").click(function () {
  189.             var sheet = spread.getActiveSheet();
  190.             var seles = sheet.getSelections();

  191.             if(seles.length > 0){
  192.                 var range = seles[0];
  193.                 var row = range.row;
  194.                 var col = range.col;
  195.                 var rowCount = range.rowCount;
  196.                 var colCount = range.colCount;

  197.                 sheet.suspendPaint();
  198.                 for(var i=row; i < row+rowCount; i++){
  199.                     for(var j=col; j<col+colCount; j++){
  200.                         sheet.setArray(i,j,newData);
  201.                     }
  202.                 }
  203.                 sheet.resumePaint();
  204.             }
  205.         });
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-17 15:48:14
沙发
您好,SpreadJS与Excel在机制上有区别,

SpreadJS的行和列是有限的,因此setArray在边界上的逻辑是不向无效区域设置数据。

如果需要解决这个问题也非常的简单,

setArray接收的数组参数,是一个代表行和列的二维数组,每一个元素是一行。

在调用setArray前,可以先判断一下所需的行和列是否足够,如果不够可以用

addRows()

addColumns()

添加对应的行数和列数。

评分

参与人数 1满意度 +5 收起 理由
莫莫 + 5 很给力!

查看全部评分

回复 使用道具 举报
莫莫讲师达人认证
金牌服务用户   /  发表于:2019-4-18 10:31:47
板凳
完美解决
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-18 14:12:20
地板
感谢反馈~ 很高兴解决了您的问题,本帖结贴了~ 有新的问题欢迎发新贴交流~

评分

参与人数 1满意度 +5 收起 理由
莫莫 + 5 赞一个!

查看全部评分

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