Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в экзеле открыть новый лист / 5 сообщений из 5, страница 1 из 1
13.06.2007, 13:00
    #34591450
Silvery_star
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в экзеле открыть новый лист
Variant App,Books,Sheet,cell;
OleVariant v1;
App=Variant::CreateObject("Excel.Application");

Books=App.OlePropertyGet("Workbooks");
Books.OleFunction("Add");
Sheet= App.OlePropertyGet("ActiveWorkbook");
Sheet=App.OlePropertyGet("WorkSheets",1);

int i=2;
//bool flag(true);

Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",1).OlePropertySet("ColumnWidth", 18);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",2).OlePropertySet("ColumnWidth", 18);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",3).OlePropertySet("ColumnWidth", 13);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",4).OlePropertySet("ColumnWidth", 11);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",5).OlePropertySet("ColumnWidth", 18);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",6).OlePropertySet("ColumnWidth", 10);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",7).OlePropertySet("ColumnWidth", 10);
Sheet.OlePropertyGet("Columns").OlePropertyGet("Item",8).OlePropertySet("ColumnWidth", 40);

cell=Sheet.OlePropertyGet("Cells",1,1);
cell.OlePropertySet("Value","Íîìåð");

cell=Sheet.OlePropertyGet("Cells",1,2);
cell.OlePropertySet("Value","Äàòà");

cell=Sheet.OlePropertyGet("Cells",1,3);
cell.OlePropertySet("Value","Òèï çâîíêà");

cell=Sheet.OlePropertyGet("Cells",1,4);
cell.OlePropertySet("Value","Êàòåãîðèÿ");

cell=Sheet.OlePropertyGet("Cells",1,5);
cell.OlePropertySet("Value","Âûç.Íîìåð");

cell=Sheet.OlePropertyGet("Cells",1,6);
cell.OlePropertySet("Value","Ïðîäîëæ.");

cell=Sheet.OlePropertyGet("Cells",1,7);
cell.OlePropertySet("Value","Ñóììà");

cell=Sheet.OlePropertyGet("Cells",1,8);
cell.OlePropertySet("Value","Íàïðàâëåíèå");


LocalMSQuery->First();
while(!LocalMSQuery->Eof)
{
cell=Sheet.OlePropertyGet("Cells",i,1);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Íîìåð")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,2);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Äàòà")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,3);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Òèï_çâîíêà")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,4);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Êàòåãîðèÿ")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,5);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Âûç_íîìåð")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,6);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Ïðîäîëæ")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,7);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Ñóììà")->AsString.c_str());

cell=Sheet.OlePropertyGet("Cells",i,8);
cell.OlePropertySet("Value",LocalMSQuery->FieldByName("Íàïðàâëåíèå")->AsString.c_str());
i++ ;
LocalMSQuery->Next();

}

App.OlePropertySet("Visible",true);
С помощю этого скрипта я загружаю данные из GridEh в exel.
Мне нужно чтобы другой такой же скрип експортировал данные в другом листе.., Лист нужно создать..., Т.е. если если возможность то создать новый лист, переименовать его и экспортировать туда данные...(Проблема у меня только с создание нового листа..)
...
Рейтинг: 0 / 0
13.06.2007, 19:49
    #34593075
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в экзеле открыть новый лист
гдето из манов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
SheetsInNewWorkbook задает количество листов в создаваемой книге, пусть в первой книге их будет  3 (Кстати по умолчани тоже создается книга, содержащая три листа).

vVarApp.OlePropertySet("SheetsInNewWorkbook", 3 );

Добавляем книгу из  3  листов в объект vVarBooks.

vVarBooks.OleProcedure("Add");

Количество листов во второй создаваемой книге, пусть будет  5 .

vVarApp.OlePropertySet("SheetsInNewWorkbook", 5 );

Добавляем книгу из  5  листов в объект

vVarBooks.OleProcedure("Add");

Переменная vVarBook содержит ссылку на текущую книгу. (Пусть текущая книга  1 ).

vVarBook=vVarBooks.OlePropertyGet("Item", 1 );

Переменной vVarSheets присваиваем значение Worksheets - свойство объекта Excel.Application, содержащее набор страниц книги Excel.

vVarSheets=vVarBook.OlePropertyGet("Worksheets") ;

Присвоение имен листам книги. Т.е, необходимо взять лист выбранной книги и дать ему имя. Заодно и покрасим листы, для чего в любом графическом редакторе создадим два файла с именами a.gif и b.gif размером в несколько пиаселей и соответственно с желтой и красной заливкой. Размер сумарный файлов менее 1к, но приятнее работать не с белым листом. Файлы должны быть помещены в текущую директорию.

vVarSheet=vVarSheets.OlePropertyGet("Item", 1 );
vVarSheet.OlePropertySet("Name","Желтый лист");
AnsiString vAsCurDir=GetCurrentDir();
AnsiString vAsCurDir1=vAsCurDir+"\\a.gif";
vVarSheet.OleProcedure("Activate");
vVarBook.OlePropertyGet("ActiveSheet").
  OleFunction("SetBackgroundPicture",vAsCurDir1.c_str());
vVarSheet=vVarSheets.OlePropertyGet("Item", 2 );
vVarSheet.OlePropertySet("Name","Краснай лист");
vAsCurDir1=vAsCurDir+"\\b.gif";
vVarSheet.OleProcedure("Activate");
vVarBook.OlePropertyGet("ActiveSheet").
  OleFunction("SetBackgroundPicture",vAsCurDir1.c_str());
vVarSheets.OlePropertyGet("Item", 3 ).
                   OlePropertySet("Name","Пустой лист");
...
Рейтинг: 0 / 0
14.06.2007, 12:41
    #34594287
Silvery_star
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в экзеле открыть новый лист
Спасибо огромное.!!! Попробую... По идее должно получится...
...
Рейтинг: 0 / 0
22.06.2007, 15:33
    #34614056
Silvery_star
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в экзеле открыть новый лист
Как потом можно этот лист сохранить ???
...
Рейтинг: 0 / 0
22.06.2007, 15:39
    #34614083
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в экзеле открыть новый лист
рекомендую - всё доходчиво расписано и направления дальнейших поисков указано
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в экзеле открыть новый лист / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]