sheet_creater.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * Created by CSL on 2017-05-19.
  3. * 通用的SpreadSheet创建显示接口,应用数据源绑定列、脏数据等。
  4. * var colDef = [{name: "coeType", displayName: "类型", size: 100, hAlign: "center"},..,{} ];
  5. * var datas = [{},..,{}];
  6. */
  7. sheetObj = {
  8. spread: null,
  9. create: function (container, colDef, datas){
  10. var me = this;
  11. me.spread = new GC.Spread.Sheets.Workbook(container, {sheetCount:1});
  12. me.spread.options.tabStripVisible = false;
  13. me.spread.options.showHorizontalScrollbar = false;
  14. var sheet = me.spread.getSheet(0);
  15. sheet.suspendPaint();
  16. sheet.suspendEvent();
  17. var sheetArea = GC.Spread.Sheets.SheetArea;
  18. sheet.setRowCount(20, sheetArea.viewport);
  19. sheet.setRowHeight(0, 25, sheetArea.colHeader);
  20. sheet.autoGenerateColumns = false;
  21. sheet.setDataSource(datas);
  22. sheet.addRows(sheet.getRowCount(), 1); // 扩展1行,用于直接输入以新增记录。
  23. sheet.bindColumns(colDef);
  24. me.setColAlign(colDef);
  25. me.lockCols(colDef);
  26. me.setRowHeight(datas, 23);
  27. sheet.resumeEvent();
  28. sheet.resumePaint();
  29. return me.spread;
  30. },
  31. setColAlign: function(colDef){
  32. var me = this;
  33. var sheet = me.spread.getSheet(0);
  34. for (var col = 0; col < colDef.length; col++) {
  35. var ha = colDef[col].hAlign;
  36. var va = colDef[col].vAlign;
  37. var area = sheet.getRange(-1, col, -1, GC.Spread.Sheets.SheetArea.viewport);
  38. if (ha === "right") {
  39. area.hAlign(GC.Spread.Sheets.HorizontalAlign.right);
  40. } else if (ha === "center") {
  41. area.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
  42. } else {
  43. area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
  44. };
  45. if (va === "top") {
  46. area.vAlign(GC.Spread.Sheets.VerticalAlign.top);
  47. } else if (va === "bottom") {
  48. area.vAlign(GC.Spread.Sheets.VerticalAlign.bottom);
  49. } else {
  50. area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
  51. };
  52. };
  53. },
  54. lockCols: function(colDef){
  55. var me = this;
  56. var sheet = me.spread.getSheet(0);
  57. sheet.options.isProtected = true;
  58. sheet.options.isProtected = true;
  59. sheet.getRange(-1, 0, -1, colDef.length, GC.Spread.Sheets.SheetArea.viewport).locked(false);
  60. for (var col = 0; col < colDef.length; col++) {
  61. if (colDef[col].readOnly == undefined) {
  62. var ro = false
  63. }else{
  64. var ro = colDef[col].readOnly;
  65. };
  66. sheet.getRange(-1, col, -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(ro);
  67. };
  68. },
  69. setRowHeight: function(datas, hValue){
  70. var me = this;
  71. var sheet = me.spread.getSheet(0);
  72. for (var row = 0; row < datas.length; row++) {
  73. sheet.setRowHeight(row, hValue, GC.Spread.Sheets.SheetArea.viewport);
  74. }
  75. }
  76. };