找回密码
 立即注册

QQ登录

只需一步,快速开始

零℃秋风

金牌服务用户

1

主题

1

帖子

8

积分

金牌服务用户

积分
8
  • 20

    金币

  • 1

    主题

  • 1

    帖子

最新发帖
零℃秋风
金牌服务用户   /  发表于:2024-4-22 16:20  /   查看:363  /  回复:3
本帖最后由 Joestar.Xu 于 2024-4-22 16:28 编辑

spreadjs 项目页面中应用模板后,后台接口获取数据,通过setDataSource方式绑定数据问题

1.对于模板单元格格式是日期型的数据,YYYY-MM-DD格式没有自动转换为YYYY/MM/DD.
2.对于模板单元格格式是数值型的数据,也没有按照模板设置的单元格格式改为数值型

3 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 18:07:45
沙发
本帖最后由 Richard.Huang 于 2024-4-24 14:10 编辑

您好,经过调研我们发现这是因为您的单元格中的日期是字符串,例如“2024-10-10”,这个是无法自动转换成日期类型的,

而我们手动输入的值自动转换成日期的单元格的值是日期型数据,例如:Thu Oct 10 2024 00:00:00 GMT+0800 (中国标准时间),
因此为了保证您期望转换成YYYY/MM/DD的样式,两种办法,一种是调用代码将单元格设置成日期格式,第二种就是修改您数据库中的日期存储的值,让他变成能够被SpreadJS转换的值类型。

对于您的第二个问题,主要是由于您的模板文件中单元格里已经被设置好了style,而单元格的style优先级是最高的,因此没有自动继承您表格前一行的样式。

综上,您可以在setDataSource之后通过copyTo方法将您的所有样式进行统一,以下是示例代码;
  1. sheet.resumePaint() // 挂起绘制提升性能
  2. sheet.setDataSource(source); // 设置了数据源
  3. sheet.tables.all().forEach(function (table, index) {
  4.   var range = table.range();
  5.   var sampleRange = {
  6.     // 第一行是我们的样式示例
  7.     row: range.row + 1,
  8.     col: range.col,
  9.     rowCount: 1,
  10.     colCount: range.colCount,
  11.   };
  12.   var dataRange = {
  13.     // 下面行沿用第一行数据行的样式
  14.     row: range.row + 2,
  15.     col: range.col,
  16.     rowCount: range.rowCount - 2,
  17.     colCount: range.colCount,
  18.   };
  19.   for (var i = 0; i < dataRange.rowCount; i++) {
  20.     sheet.copyTo(
  21.       sampleRange.row,
  22.       sampleRange.col,
  23.       dataRange.row + i,
  24.       dataRange.col,
  25.       1,
  26.       dataRange.colCount,
  27.       GC.Spread.Sheets.CopyToOptions.style
  28.     );
  29.   }
  30. });
  31. sheet.resumePaint()// 恢复绘制
复制代码


回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-25 09:50:31
板凳
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-9 10:06:50
地板
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有其他新的问题,欢迎继续发新帖询问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部