sanat |
Отправлено: 15.01.2007, 06:36 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Стоит задача создавать не одну таблицу в документе ворда
а несколько причем таблицы все разные.
При создании нескольких таблиц остается только последняя ???
работаю через WordApplication и WordDocument
У кого нибудь была такая проблема ???? |
|
grebenyk |
Отправлено: 15.01.2007, 07:00 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 73
|
скорее тебе этот вопрос надо задавать там — Технологии COM/DCOM, ActiveX |
|
Valdemar |
Отправлено: 15.01.2007, 10:05 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
sanat, а как делаешь? Приведи кусок кода. |
|
sanat |
Отправлено: 15.01.2007, 11:31 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Делаю я как описано у Архангельского ну и по нету коечего наскреб
вот что пока делаю :
//------------------------------------------------------------------------------------------
WordApp->Disconnect();
OleVariant ItemIndex =1 ;
WordApp->Documents->Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDoc->ConnectTo(WordApp->Documents->Item(ItemIndex));
// ---- добавляю таблицу ------
WordDoc->Tables->Add(WordDoc->Range(EmptyParam, EmptyParam),3,2);
//---- добавляю просто текст после таблицы ---------
//WordDoc->Range(EmptyParam, EmptyParam)->InsertAfter(StringToOleStr("просто текст \n"));
//-------- тут мне надо например добавить другую таблицу -----
//--------- например 5 на 6 ------
WordApp->set_Visible(true);
//---------------------------------------------------------------------------------
Проблема состоит в ом что нигде не могу найти инфу где описывается как можно в одном документе создавать множество различных таблиц
(например в цикле)
|
|
Valdemar |
Отправлено: 15.01.2007, 15:27 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Когда записываешь данные в документ надо указывать Range с реальными значениями диапазона, куда эти данные будут записаны. А если писать EmptyParam, то следующая запись будет стирать предыдущую.
Вот небольшой пример:
CODE | OleVariant end;
WordApp->Disconnect();
OleVariant ItemIndex =1;
WordApp->Documents->Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDoc->ConnectTo(WordApp->Documents->Item(ItemIndex));
WordDoc->Tables->Add(WordDoc->Range(EmptyParam, EmptyParam),3,2);
end=WordDoc->Tables->Item(1)->Range->End;
WordDoc->Range(end, end)->InsertParagraphAfter();
end+=1;
WordDoc->Tables->Add(WordDoc->Range(end,end),5,2);
WordApp->set_Visible(true); |
Отредактировано Valdemar — 15.01.2007, 17:33 |
|
sanat |
Отправлено: 16.01.2007, 07:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Большое спасибо
получил то что нужно )))
вот так в цикле делаю
OleVariant end;
WordApp->Disconnect();
OleVariant ItemIndex =1;
WordApp->Documents->Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDoc->ConnectTo(WordApp->Documents->Item(ItemIndex));
WordDoc->Tables->Add(WordDoc->Range(EmptyParam, EmptyParam),5,2);
for(int i=1 ; i < 5 ; i++)
{
end=WordDoc->Tables->Item(i)->Range->End;
WordDoc->Range(end, end)->InsertParagraphAfter();
end+=1;
WordDoc->Tables->Add(WordDoc->Range(end,end),5,2);
}
WordApp->set_Visible(true);
|
|
sanat |
Отправлено: 17.01.2007, 05:34 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Возникла еще одна проблема
мне нужно теперь строить множество таблиц разной конфигурации
например в цикле
таб 1. 2 на 3
таб 2. 2 на 2
таб 3. 2 на 3
таб 4. 2 на 2
таб 5. 2 на 3
таб 6. 2 на 2
и т.д.
почемуто у меня таблицы располагаются след. образом
таб 1. 2 на 2
таб 2. 2 на 2
таб 3. 2 на 2
таб 4. 2 на 3
таб 5. 2 на 3
таб 6. 2 на 3
т.е. не вперемешку а сортируются
вот мой код :
void TW_Sotrud::PrintKartochki(int number)
{
OleVariant end;
WordApp->Disconnect();
OleVariant ItemIndex =1;
WordApp->Documents->Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDoc->ConnectTo(WordApp->Documents->Item(ItemIndex));
WordDoc->Tables->Add(WordDoc->Range(EmptyParam, EmptyParam),1,1);
//Задаем формат таблицам
OleVariant tformat=wdTableFormatGrid1;
for(int i=1 ; i <= number ; i++)
{
end=WordDoc->Tables->Item(i)->Range->End;
WordDoc->Range(end, end)->InsertParagraphAfter();
end+=1;
WordDoc->Tables->Add(WordDoc->Range(end,end),2,2);
end=WordDoc->Tables->Item(i)->Range->End;
WordDoc->Range(end, end)->InsertParagraphAfter();
end+=1;
WordDoc->Tables->Add(WordDoc->Range(end,end),2,3);
//WordDoc->Tables->Item(i+1)->AutoFormat(tformat,EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
}
WordApp->set_Visible(true);
}
|
|
sanat |
Отправлено: 17.01.2007, 08:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
up |
|
sanat |
Отправлено: 17.01.2007, 12:12 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
up |
|
|