出现此问题,是因为两个工作表具有不同的样式“ _builtInStyle51”,“ _ builtInStyle52”,并且在ExcelIO中sheet2在sheet1中使用相同的名称样式。这需要一定的时间修复。
这边给您提供一个绕开此问题的方法- sheet1 = spread.sheets[0];
- sheet2 = spread.sheets[1];
- var renamedStyles = {};
- var styles = sheet2.getNamedStyles();
- spread.suspendPaint();
- //Clone & rename the same name styles.
- for (var i=0; i<styles.length; i++) {
- var style = styles[i];
- if (sheet1.getNamedStyle(style.name)) {
- style = style.clone();
- renamedStyles[style.name] = 1;
- style.name = "sheet2" + style.name;
- sheet2.addNamedStyle(style);
- }
- }
- //Change the usage.
- var r = sheet2.getRowCount();
- var c = sheet2.getColumnCount();
- for (var i=0; i<r; i++) {
- var style = sheet2.getStyle(i, -1);
- if (renamedStyles[style] || renamedStyles[style&&style.name]) {
- sheet2.setStyle(i, -1, "sheet2" + style.name);
- }
- for (var j=0; j<c; j++) {
- var style = sheet2.getStyle(i, j);
- if (renamedStyles[style] || renamedStyles[style&&style.name]) {
- sheet2.setStyle(i, j, "sheet2" + style.name); }
- }
- }
- for (var j=0; j<c; j++) {
- var style = sheet2.getStyle(-1, j);
- if (renamedStyles[style] || renamedStyles[style&&style.name]) {
- sheet2.setStyle(-1, j, "sheet2" + style.name); }
- }
- //Delete the duplicated styles
- var s = Object.keys(renamedStyles);
- for (var i = 0; i<s.length; i++) {
- sheet2.removeNamedStyle(s[i]);}
- spread.resumePaint();
复制代码
|