Commit 191bf6f8 authored by Alexander.Trofimov's avatar Alexander.Trofimov

Правка бага http://bugzserver/show_bug.cgi?id=21709

Если есть стиль, но нет описания, то уберем этот стиль (Excel делает также)

Но нужно сделать несколько правок (пока сделал заглушку на получение не существующего стиля)
ToDo нужно все компоновать в общий список стилей (для того, чтобы не было проблем с добавлением стилей и отсутствия имени стиля)
ToDo при отсутствии имени все не очень хорошо будет!
ToDo При отсутствии Id в списке стилей, мы должны сбросить на 0 (Normall)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@51173 954022d7-b5bf-4e40-9824-e11837661b57
parent 5307df8f
...@@ -4009,54 +4009,15 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs) ...@@ -4009,54 +4009,15 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs)
}; };
this.InitStyleManager = function (oStyleObject) this.InitStyleManager = function (oStyleObject)
{ {
for(var i = 0, length = oStyleObject.aCellXfs.length; i < length; ++i) {
var xfs = oStyleObject.aCellXfs[i];
var oNewXfs = new CellXfs();
if(null != xfs.borderid)
{
var border = oStyleObject.aBorders[xfs.borderid];
if(null != border)
oNewXfs.border = border.clone();
}
if(null != xfs.fillid)
{
var fill = oStyleObject.aFills[xfs.fillid];
if(null != fill)
oNewXfs.fill = fill.clone();
}
if(null != xfs.fontid)
{
var font = oStyleObject.aFonts[xfs.fontid];
if(null != font)
oNewXfs.font = font.clone();
}
if(null != xfs.numid)
{
var oCurNum = oStyleObject.oNumFmts[xfs.numid];
if(null != oCurNum)
oNewXfs.num = this.ParseNum(oCurNum, oStyleObject.oNumFmts);
else
oNewXfs.num = this.ParseNum({id: xfs.numid, f: null}, oStyleObject.oNumFmts);
}
if(null != xfs.QuotePrefix)
oNewXfs.QuotePrefix = xfs.QuotePrefix;
if(null != xfs.align)
oNewXfs.align = xfs.align.clone();
if (null !== xfs.XfId)
oNewXfs.XfId = xfs.XfId;
if(0 == this.aCellXfs.length)
this.oStyleManager.init(oNewXfs);
this.minimizeXfs(oNewXfs);
this.aCellXfs.push(oNewXfs);
}
for (var nIndex in oStyleObject.aCellStyles) { for (var nIndex in oStyleObject.aCellStyles) {
if (!oStyleObject.aCellStyles.hasOwnProperty(nIndex)) if (!oStyleObject.aCellStyles.hasOwnProperty(nIndex))
continue; continue;
var oCellStyle = oStyleObject.aCellStyles[nIndex]; var oCellStyle = oStyleObject.aCellStyles[nIndex];
var oCellStyleXfs = oStyleObject.aCellStyleXfs[oCellStyle.XfId]; var oCellStyleXfs = oStyleObject.aCellStyleXfs[oCellStyle.XfId];
// Если есть стиль, но нет описания, то уберем этот стиль (Excel делает также)
if (null == oCellStyleXfs)
continue;
oCellStyle.xfs = new CellXfs(); oCellStyle.xfs = new CellXfs();
// Border // Border
...@@ -4107,8 +4068,54 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs) ...@@ -4107,8 +4068,54 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs)
if (null !== oCellStyleXfs.ApplyNumberFormat) if (null !== oCellStyleXfs.ApplyNumberFormat)
oCellStyle.ApplyNumberFormat = oCellStyleXfs.ApplyNumberFormat; oCellStyle.ApplyNumberFormat = oCellStyleXfs.ApplyNumberFormat;
// ToDo при отсутствии имени все не очень хорошо будет!
this.wb.CellStyles.CustomStyles.push(oCellStyle); this.wb.CellStyles.CustomStyles.push(oCellStyle);
} }
for(var i = 0, length = oStyleObject.aCellXfs.length; i < length; ++i) {
var xfs = oStyleObject.aCellXfs[i];
var oNewXfs = new CellXfs();
if(null != xfs.borderid)
{
var border = oStyleObject.aBorders[xfs.borderid];
if(null != border)
oNewXfs.border = border.clone();
}
if(null != xfs.fillid)
{
var fill = oStyleObject.aFills[xfs.fillid];
if(null != fill)
oNewXfs.fill = fill.clone();
}
if(null != xfs.fontid)
{
var font = oStyleObject.aFonts[xfs.fontid];
if(null != font)
oNewXfs.font = font.clone();
}
if(null != xfs.numid)
{
var oCurNum = oStyleObject.oNumFmts[xfs.numid];
if(null != oCurNum)
oNewXfs.num = this.ParseNum(oCurNum, oStyleObject.oNumFmts);
else
oNewXfs.num = this.ParseNum({id: xfs.numid, f: null}, oStyleObject.oNumFmts);
}
if(null != xfs.QuotePrefix)
oNewXfs.QuotePrefix = xfs.QuotePrefix;
if(null != xfs.align)
oNewXfs.align = xfs.align.clone();
if (null !== xfs.XfId) {
oNewXfs.XfId = xfs.XfId;
// ToDo При отсутствии Id в списке стилей, мы должны сбросить на 0 (Normall)
}
if(0 == this.aCellXfs.length)
this.oStyleManager.init(oNewXfs);
this.minimizeXfs(oNewXfs);
this.aCellXfs.push(oNewXfs);
}
for(var i in oStyleObject.oCustomTableStyles) for(var i in oStyleObject.oCustomTableStyles)
{ {
var item = oStyleObject.oCustomTableStyles[i]; var item = oStyleObject.oCustomTableStyles[i];
......
...@@ -6295,7 +6295,10 @@ Range.prototype.getXfId=function(){ ...@@ -6295,7 +6295,10 @@ Range.prototype.getXfId=function(){
return g_oDefaultXfId; return g_oDefaultXfId;
}; };
Range.prototype.getStyleName=function(){ Range.prototype.getStyleName=function(){
return this.worksheet.workbook.CellStyles.getStyleNameByXfId(this.getXfId()); var res = this.worksheet.workbook.CellStyles.getStyleNameByXfId(this.getXfId());
// ToDo убрать эту заглушку (нужно делать на открытии) в InitStyleManager
return res || this.worksheet.workbook.CellStyles.getStyleNameByXfId(g_oDefaultXfId);
}; };
Range.prototype.getNumFormat=function(){ Range.prototype.getNumFormat=function(){
return oNumFormatCache.get(this.getNumFormatStr()); return oNumFormatCache.get(this.getNumFormatStr());
......
...@@ -1205,6 +1205,7 @@ Align.prototype = ...@@ -1205,6 +1205,7 @@ Align.prototype =
function CCellStyles() { function CCellStyles() {
this.CustomStyles = []; this.CustomStyles = [];
this.DefaultStyles = []; this.DefaultStyles = [];
// ToDo нужно все компоновать в общий список стилей (для того, чтобы не было проблем с добавлением стилей и отсутствия имени стиля)
this.AllStyles = {}; this.AllStyles = {};
} }
CCellStyles.prototype = { CCellStyles.prototype = {
...@@ -1395,7 +1396,7 @@ function StyleManager(){ ...@@ -1395,7 +1396,7 @@ function StyleManager(){
this.oDefaultQuotePrefix = null; this.oDefaultQuotePrefix = null;
//стиль ячейки по умолчанию, может содержать не все свойства //стиль ячейки по умолчанию, может содержать не все свойства
this.oDefaultXfs = new CellXfs(); this.oDefaultXfs = new CellXfs();
}; }
StyleManager.prototype = StyleManager.prototype =
{ {
init : function(oDefaultXfs) init : function(oDefaultXfs)
...@@ -1423,14 +1424,14 @@ StyleManager.prototype = ...@@ -1423,14 +1424,14 @@ StyleManager.prototype =
}, },
_prepareSetFont : function(oItemWithXfs) _prepareSetFont : function(oItemWithXfs)
{ {
xfs = this._prepareSet(oItemWithXfs); var xfs = this._prepareSet(oItemWithXfs);
if(null == xfs.font) if(null == xfs.font)
xfs.font = new Font(); xfs.font = new Font();
return xfs; return xfs;
}, },
_prepareSetAlign : function(oItemWithXfs) _prepareSetAlign : function(oItemWithXfs)
{ {
xfs = this._prepareSet(oItemWithXfs); var xfs = this._prepareSet(oItemWithXfs);
if(null == xfs.align) if(null == xfs.align)
xfs.align = new Align(); xfs.align = new Align();
return xfs; return xfs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment