Конференция "Corba" » Работа с Excel через XLReport
 
  • Priest (24.08.09 13:19) [0]
    В этом компоненте есть код

    for i := 1 to RowCount do
         for j := 1 to Root.ColCount do
           Formulas[i, j] := FBuff[j, i];
    IRange.Value := Formulas;  

    В последней строке возникает ошибка, если в элементе массива FBuff[j, i] присутствует строка длинной 1000 символов. Как исправить?
  • Сергей М. © (24.08.09 14:42) [1]
    Нихрена себе формула в 1000 символов)

    И, кстати, если вставляешь формулы, а не значения, то почему не

    IRange.FormulaLocal := Formulas

    ?
  • Priest (24.08.09 15:00) [2]
    Пробовал не помогло. Всё равно валит ошибку

    raised exception class EOleException with message 'OLE error 800A03EC'.
  • Сергей М. © (24.08.09 16:02) [3]

    > Priest   (24.08.09 15:00) [2]


    Выше штанов не прыгнуть)

    Excel 7.0 имеет ограничение на длину текста формулы в ячейке - не более 1000 символов.

    В Excel 2007 это ограничение увеличено до 8000 символов
  • Сергей М. © (24.08.09 16:03) [4]
    И все же любопытно - что это за формулы такой чудовищной длины ?)
  • Priest (25.08.09 09:53) [5]
    У меня Эксел 2003. А там не формулы. А значения из полей БД. НО тот код, что я привёл это взят из библиотеки XLReport.
  • Сергей М. © (25.08.09 13:42) [6]

    > не формулы. А значения


    Тогда, во избежание недоразумений, и обзывать следовало по-другому:

    for i := 1 to RowCount do
        for j := 1 to Root.ColCount do
          Values[i, j] := FBuff[j, i];
    IRange.Value := Values;


    > У меня Эксел 2003


    А ограничение увеличено начиная c 2007.
  • Priest (25.08.09 16:27) [7]
    Переписал код так
       for i := 1 to RowCount do
         for j := 1 to Root.ColCount do
           IRange.Cells.Item[i, j].Value:=FBuff[j, i];

    И закоментарил строчку вида IRange.Value := Formulas; которая и вызывала ошибку. НО теперь валится в другом месте
    For Row = 1 To R.Rows.Count
       For col = 1 To R.Columns.Count
          Set c = R.Cells(Row, col)
             f = c.FormulaLocal -- Тут валится ошибка

    Что мможно сделать?
  • Сергей М. © (25.08.09 16:54) [8]

    > Тут валится ошибка


    Секретная ?
  • Priest (25.08.09 17:10) [9]
    нет. не секретная. вызывается отладчик ВизуалБэйсика и говорит, что не поддерживается свойство. А до того как я отредактировал код, всё работало. Т.е. когда в IRange.Value присваивался двумерный масив Formulas то FormulaLocal  у ячейки был. а когда я присваиваю все значения так IRange.Cells.Item[i, j].Value:=FBuff[j, i], то  FormulaLocal отсутвтует у ячейки
  • Сергей М. © (25.08.09 17:35) [10]

    > когда присваиваю все значения .. то  FormulaLocal отсутвтует у ячейки


    Ячейка в каждый момент времени может содержать либо значение, либо формулу, расчитывающую это значение, но не и то и другое одновременно.
    Чему же удивляться, если во все ячейки диапазона ты записал именно значения, а не формулы, но после этого требуешь выдать именно формылы, которых там и в помине нет ?
  • Сергей М. © (25.08.09 17:39) [11]
    Вру.
    Если ты записал в ячейку формулу, то после этого ты вправе требовать от нее как формулу, так и значение, расчитанное по этой формуле.

    Если же ты туда записал значение, то после этого ты вправе требовать только значение, но никак не формулу - откуда ей там взяться, если ты ее туда не записывал ?
 
Конференция "Corba" » Работа с Excel через XLReport
Есть новые Нет новых   [118629   +19][b:0][p:0.001]