Commit 5d8b642d authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by 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 c5f7820f
......@@ -4009,54 +4009,15 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs)
};
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) {
if (!oStyleObject.aCellStyles.hasOwnProperty(nIndex))
continue;
var oCellStyle = oStyleObject.aCellStyles[nIndex];
var oCellStyleXfs = oStyleObject.aCellStyleXfs[oCellStyle.XfId];
// Если есть стиль, но нет описания, то уберем этот стиль (Excel делает также)
if (null == oCellStyleXfs)
continue;
oCellStyle.xfs = new CellXfs();
// Border
......@@ -4107,8 +4068,54 @@ function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs)
if (null !== oCellStyleXfs.ApplyNumberFormat)
oCellStyle.ApplyNumberFormat = oCellStyleXfs.ApplyNumberFormat;
// ToDo при отсутствии имени все не очень хорошо будет!
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)
{
var item = oStyleObject.oCustomTableStyles[i];
......
......@@ -6295,7 +6295,10 @@ Range.prototype.getXfId=function(){
return g_oDefaultXfId;
};
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(){
return oNumFormatCache.get(this.getNumFormatStr());
......
......@@ -1205,6 +1205,7 @@ Align.prototype =
function CCellStyles() {
this.CustomStyles = [];
this.DefaultStyles = [];
// ToDo нужно все компоновать в общий список стилей (для того, чтобы не было проблем с добавлением стилей и отсутствия имени стиля)
this.AllStyles = {};
}
CCellStyles.prototype = {
......@@ -1395,7 +1396,7 @@ function StyleManager(){
this.oDefaultQuotePrefix = null;
//стиль ячейки по умолчанию, может содержать не все свойства
this.oDefaultXfs = new CellXfs();
};
}
StyleManager.prototype =
{
init : function(oDefaultXfs)
......@@ -1423,14 +1424,14 @@ StyleManager.prototype =
},
_prepareSetFont : function(oItemWithXfs)
{
xfs = this._prepareSet(oItemWithXfs);
var xfs = this._prepareSet(oItemWithXfs);
if(null == xfs.font)
xfs.font = new Font();
return xfs;
},
_prepareSetAlign : function(oItemWithXfs)
{
xfs = this._prepareSet(oItemWithXfs);
var xfs = this._prepareSet(oItemWithXfs);
if(null == xfs.align)
xfs.align = new Align();
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