sheet_creater.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.suspendPaint();
  13. me.spread.options.tabStripVisible = false;
  14. me.spread.options.showHorizontalScrollbar = false;
  15. var sheet = me.spread.getSheet(0);
  16. var sheetArea = GC.Spread.Sheets.SheetArea;
  17. sheet.setRowCount(20, sheetArea.viewport);
  18. sheet.setRowHeight(0, 30, sheetArea.colHeader);
  19. sheet.autoGenerateColumns = false;
  20. sheet.setDataSource(datas);
  21. sheet.addRows(sheet.getRowCount(), 1); // 扩展1行,用于直接输入以新增记录。
  22. sheet.bindColumns(colDef);
  23. me.setColAlign(colDef);
  24. me.lockCols(colDef);
  25. me.setRowHeight(datas, 25);
  26. me.spread.resumePaint();
  27. return me.spread;
  28. },
  29. setColAlign: function(colDef){
  30. var me = this;
  31. var sheet = me.spread.getSheet(0);
  32. for (var col = 0; col < colDef.length; col++) {
  33. var ha = colDef[col].hAlign;
  34. var va = colDef[col].vAlign;
  35. var area = sheet.getRange(-1, col, -1, GC.Spread.Sheets.SheetArea.viewport);
  36. if (ha === "right") {
  37. area.hAlign(GC.Spread.Sheets.HorizontalAlign.right);
  38. } else if (ha === "center") {
  39. area.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
  40. } else {
  41. area.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
  42. };
  43. if (va === "top") {
  44. area.vAlign(GC.Spread.Sheets.VerticalAlign.top);
  45. } else if (va === "bottom") {
  46. area.vAlign(GC.Spread.Sheets.VerticalAlign.bottom);
  47. } else {
  48. area.vAlign(GC.Spread.Sheets.VerticalAlign.center);
  49. };
  50. };
  51. },
  52. lockCols: function(colDef){
  53. var me = this;
  54. var sheet = me.spread.getSheet(0);
  55. sheet.options.isProtected = true;
  56. sheet.options.isProtected = true;
  57. sheet.getRange(-1, 0, -1, colDef.length, GC.Spread.Sheets.SheetArea.viewport).locked(false);
  58. for (var col = 0; col < colDef.length; col++) {
  59. if (colDef[col].readOnly == undefined) {
  60. var ro = false
  61. }else{
  62. var ro = colDef[col].readOnly;
  63. };
  64. sheet.getRange(-1, col, -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(ro);
  65. };
  66. },
  67. setRowHeight: function(datas, hValue){
  68. var me = this;
  69. var sheet = me.spread.getSheet(0);
  70. for (var row = 0; row < datas.length; row++) {
  71. sheet.setRowHeight(row, hValue, GC.Spread.Sheets.SheetArea.viewport);
  72. }
  73. }
  74. };