Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вставка формул в EXCEL и форматирование ячеек

305
27 января 2007 года
Kashuk
385 / / 21.02.2003
Я вставляю формулу в ячейку, но она почему не срабатывает.
В ячейке отображается "ЗНАЧ!" Но стоит мне просто в неё стать нажать Ф2 и потом энтер и тогда формула срабатывает.

Может её нужно как то отформатировать, что б она поняла формулу?
И как можно программно объединить ячейки и выделить их рамочкой.

Вот код как экспортирую значения:

Код:
Variant v0, Sheet, XL;

  XL = CreateOleObject("Excel.Application");
  v0 = XL.OlePropertyGet("Workbooks");
  v0.OleProcedure("Add");
  Sheet = v0.OlePropertyGet("Item", 1).OlePropertyGet("Worksheets").OlePropertyGet("Item", 1);

str = "=СУММ(R[1]C[-";
str += IntToStr(Long);
str += "]:R[11]C[-4])"
Sheet.OlePropertySet("Cells",l,8,str.c_str());


 XL.OlePropertySet("Visible", true);
247
27 января 2007 года
wanja
1.2K / / 03.02.2003
Есть у клетки такое свойство - formula.
305
28 января 2007 года
Kashuk
385 / / 21.02.2003
Цитата: wanja
Есть у клетки такое свойство - formula.



А как юзать не подскажешь? И как можно обвести ячейки рамкой?

294
29 января 2007 года
Plisteron
982 / / 29.08.2003
Цитата: Kashuk
И как можно обвести ячейки рамкой?



Приблизительно, так

Код:
typedef enum tagXlBordersIndex
{
  xlDiagonalDown = 5,
  xlDiagonalUp = 6,
  xlEdgeLeft = 7,
  xlEdgeTop = 8,
  xlEdgeBottom = 9,
  xlEdgeRight = 10,
  xlInsideVertical = 11,
  xlInsideHorizontal = 12
} XlBordersIndex;

typedef enum tagXlLineStyle
{
  xlContinuous = 1,
  xlDash = -4115,
  xlDashDot = 4,
  xlDashDotDot = 5,
  xlDot = -4118,
  xlDouble = -4119,
  xlSlantDashDot = 13,
  xlLineStyleNone = -4142
} XlLineStyle;

Variant vxlSetBorders(Variant xRange,
                          bool EdgeLt,   bool EdgeTp,
                          bool EdgeBt,   bool EdgeRt,
                          bool InVert,   bool InHorz,
                          bool DiagDn,   bool DiagUp,
                          int Wt,
                          XlLineStyle Style,
                          int ColorIdx
                         )
{
    int i;
    Variant bord;
    char *bds = "Borders";
    char *ls  = "LineStyle";
    char *wgt = "Weight";
    char *ci  = "ColorIndex";

    if(DiagDn)
    {
        bord = xRange.OlePropertyGet(bds, xlDiagonalDown);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(DiagUp)
    {
        bord = xRange.OlePropertyGet(bds, xlDiagonalUp);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(EdgeLt)
    {
        bord = xRange.OlePropertyGet(bds, xlEdgeLeft);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(EdgeRt)
    {
        bord = xRange.OlePropertyGet(bds, xlEdgeRight);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(EdgeTp)
    {
        bord = xRange.OlePropertyGet(bds, xlEdgeTop);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(EdgeBt)
    {
        bord = xRange.OlePropertyGet(bds, xlEdgeBottom);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(InVert)
    {
        bord = xRange.OlePropertyGet(bds, xlInsideVertical);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }

    if(InHorz)
    {
        bord = xRange.OlePropertyGet(bds, xlInsideHorizontal);
        bord.OlePropertySet(ls, Style);
        bord.OlePropertySet(wgt, Wt);
        bord.OlePropertySet(ci, ColorIdx);
        bord = Unassigned;
    }
    return xRange;
}
247
29 января 2007 года
wanja
1.2K / / 03.02.2003
Цитата: Kashuk
А как юзать не подскажешь?


Примерно так:

 
Код:
Variant cell=Sheet.OlePropertyGet("Cells",I1,J1,I2,J2);
cell.OlePropertySet("formula","Твоя формула");
305
06 мая 2007 года
Kashuk
385 / / 21.02.2003
Цитата: wanja
Примерно так:
 
Код:
Variant cell=Sheet.OlePropertyGet("Cells",I1,J1,I2,J2);
cell.OlePropertySet("formula","Твоя формула");



Теперь у меня возникла необходимость делать разрыв страниц.
В екселе записал макрос, что б увидеть какой командой это выполняется, но не знаю как использовать её из билдера, пробовал всяческие варианты OlePropertySet... , но не вышло :(
Но так и не нашел верного. Может кто то уже такое делал, подскажите плиз, что прописать нужно.

Спасибо

263
06 мая 2007 года
koltaviy
816 / / 16.12.2004
Цитата: Kashuk
Теперь у меня возникла необходимость делать разрыв страниц.
В екселе записал макрос, что б увидеть какой командой это выполняется, но не знаю как использовать её из билдера, пробовал всяческие варианты OlePropertySet... , но не вышло :(
Но так и не нашел верного. Может кто то уже такое делал, подскажите плиз, что прописать нужно.

Спасибо


А при чем тут OlePropertySet ? - это OleProcedure!!

305
07 мая 2007 года
Kashuk
385 / / 21.02.2003
Цитата: koltaviy
А при чем тут OlePropertySet ? - это OleProcedure!!



А как именно не подскажеш? :)

263
07 мая 2007 года
koltaviy
816 / / 16.12.2004
Цитата: Kashuk
А как именно не подскажеш? :)


Примерно так:

 
Код:
..
exCell = exSh.OlePropertyGet( "Range", "A10" );
 
hBreak = exSh.OlePropertyGet( "HPageBreaks" );
vBreak = exSh.OlePropertyGet( "VPageBreaks" );
 
hBreak.OleProcedure( "Add", exCell );
vBreak.OleProcedure( "Add", exCell );
..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог