И так, если для объединенной ячейки поставить к примеру толстую рамку вокруг (без пересечения), то при считывании файла а потом его сохранения получаем такой баг.
Гриница остается слева и вверху, а низ и правая сторона остаются без границы.
Это все происходит из-за того, то для объединенной области всем ячейкам присваивается стиль верхней левой ячейки. Но так как у этой верхней левой ячейки стиль не содержит границ снизу и справа, получаем такой эффект.
вся проблема кроется вот в этом куске кода:
_in_merge_not_top := false;
k := _sheet.MergeCells.InMergeRange(j, i);
if (k >= 0) then
_in_merge_not_top := _sheet.MergeCells.InLeftTopCorner(j, i) < 0;
if (_in_merge_not_top) then
begin
k1 := _sheet.MergeCells.Items[k].Left;
k2 := _sheet.MergeCells.Items[k].top;
end
else
begin
k1 := j;
k2 := i;
end;
if (_sheet.Cell[k1, k2].CellStyle >= -1) and (_sheet.Cell[k1, k2].CellStyle < XMLSS.Styles.Count) then
s := IntToStr(_sheet.Cell[k1, k2].CellStyle + 1)
else
s := '0';
_xml.Attributes.Add('s', s, false);
если его заменить на этот, все заработает:
if (_sheet.Cell[j, i].CellStyle >= -1) and (_sheet.Cell[j, i].CellStyle < XMLSS.Styles.Count) then
s := IntToStr(_sheet.Cell[j, i].CellStyle + 1)
else
s := '0';
_xml.Attributes.Add('s', s, false);
Суть в том, что у ячеек должны оставаться свои же стили, ничего подменять не надо, так делает и сам офис.
И так, если для объединенной ячейки поставить к примеру толстую рамку вокруг (без пересечения), то при считывании файла а потом его сохранения получаем такой баг. Гриница остается слева и вверху, а низ и правая сторона остаются без границы.
Это все происходит из-за того, то для объединенной области всем ячейкам присваивается стиль верхней левой ячейки. Но так как у этой верхней левой ячейки стиль не содержит границ снизу и справа, получаем такой эффект.
вся проблема кроется вот в этом куске кода:
если его заменить на этот, все заработает:
Суть в том, что у ячеек должны оставаться свои же стили, ничего подменять не надо, так делает и сам офис.