powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шаблон .xlt и как с ним работать...???
7 сообщений из 7, страница 1 из 1
Шаблон .xlt и как с ним работать...???
    #32355796
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим есть Excel шаблон: sablon.xlt

Как к нему обратиться???
Я пишу такую вешь:
AnsiString sFile = GetCurrentDir()+"\\Shablt.xlt";
App = Variant::GetActiveObject("Excel.Application");
App.OlePropertyGet("Workbooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh = App.OlePropertyGet("Worksheets",1);
Builder 6 ругается на строку App = Variant::GetActiveObject("Excel.Application");
И говорит "Невозможная операция"

Помогите пожалуйста....

Заранее спасибо...)))
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32355867
Я пишу на VC++. и открываю ехель так:
Код: plaintext
1.
2.
3.
4.
_ApplicationPtr excel( "Excel.Application" );
		excel->Visible[ 0 ] = false;
		_WorkbookPtr  book  = excel->Workbooks->Open(_bstr_t(oStrFilePath));//oStrFilePath - путь к файлу + его имя
		_WorksheetPtr sheet = book->GetActiveSheet();
		
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32355881
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как на Biulder'е ето сделать???
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32356239
SAnatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот где-то на сайте находил.
кусок кода:
Разумеется это крайне обрезанный и упрощенный вариант, удобный для примера.

Variant App, Sh;
TDate Today = Now();

// устанавливаем путь к файлу шаблона
AnsiString sFile = GetCurrentDir()+"\\NaclSf.xlt";

// инициализируем Excel, открываем этот шаблон
try {
App=Variant::GetActiveObject("Excel.Application");
} catch(...) {
try { App=Variant::CreateObject("Excel.Application"); }
catch (...) {
Application->MessageBox("Невозможно открыть Microsoft Excel!"
" Возможно этого приложения на компьютере не установлено.","Ошибка",MB_OK+MB_ICONERROR);
}}
try {
App.OlePropertyGet("WorkBooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh=App.OlePropertyGet("WorkSheets",1);
} catch(...) {
Application->MessageBox("Ошибка открытия книги Microsoft Excel!","Ошибка",MB_OK+MB_ICONERROR);
}

// выводим в шаблон данные
// сначала заголовок
toExcel(App,"НомерНАКЛ",SaleManID->Value);
toExcel(App,"ДатаНАКЛ",Today.DateString());
toExcel(App,"ПоставщикНАКЛ",SaleManOrg->Value.c_str());
toExcel(App,"ИННПНАКЛ",SaleManInn->Value.c_str());

toExcel(App,"НомерСФ",SaleManID->Value);
toExcel(App,"ДатаСФ",Today.DateString());
toExcel(App,"АдресПСФ",SaleManAddr->Value.c_str());
toExcel(App,"ПоставщикСФ",SaleManOrg->Value.c_str());
toExcel(App,"ИННПСФ",SaleManInn->Value.c_str());

// определяем в n количество товара (строк для ввода в шаблон)
Goods->First();
int n = 0; while(!Goods->Eof) { n++; Goods->Next(); }
// или int n = Goods->RecordCount;

// вставляем в шаблон нужное количество строк
Variant C;
App.OlePropertyGet("WorkSheets",1).OleProcedure("Select");
C=App.OlePropertyGet("Range","ТоварСФ");
C=App.OlePropertyGet("Rows",(int) C.OlePropertyGet("Row")+1);
for(int i=1;i<n;i++) C.OleProcedure("Insert");

App.OlePropertyGet("WorkSheets",2).OleProcedure("Select");
C=App.OlePropertyGet("Range","ТоварНАКЛ");
C=App.OlePropertyGet("Rows",(int) C.OlePropertyGet("Row")+1);
for(int i=1;i<n;i++) C.OleProcedure("Insert");

// вывод данных из накладной в эти строки
Goods->First();
int i = 0;
while(!Goods->Eof){
toExcel(App,"ТоварСФ",i,GoodsName->Value.c_str());
toExcel(App,"ТоварНАКЛ",i,GoodsName->Value.c_str());
toExcel(App,"НомерППНАКЛ",i,i+1);
toExcel(App,"СтранаСФ",i,"Россия");
toExcel(App,"ЕдизмСФ",i,GoodsIzmer->Value.c_str());
toExcel(App,"ЕдизмНАКЛ",i,GoodsIzmer->Value.c_str());
toExcel(App,"КолСФ",i,GoodsCount->Value);
toExcel(App,"КолНАКЛ",i,GoodsCount->Value);
toExcel(App,"ЦенаСФ",i,GoodsPrice->Value);
toExcel(App,"ЦенаНАКЛ",i,GoodsPrice->Value);
toExcel(App,"СтоимСФ",i,GoodsPrice->Value*GoodsCount->Value);
toExcel(App,"СтоимостьСНДССФ",i,(GoodsPrice->Value*GoodsCount->Value*5)/100.);
toExcel(App,"ВсегоНАКЛ",i,GoodsPrice->Value*GoodsCount->Value);
toExcel(App,"СуммаНДССФ",i,(GoodsPrice->Value*GoodsCount->Value*5)/100.);
toExcel(App,"СуммаНДСНАКЛ",i,(GoodsPrice->Value*GoodsCount->Value*5)/100.);
i++; Goods->Next();
}

// и наконец, делаем Excel видимым
App.OlePropertySet("Visible",true);


Тут сделано просто перебором в цикле, можно сделать наподобие в массиве.
Я не разобрался как в массив это сделать.

Если что пиши на мыло. amyulet@yandex.ru, с темой для s.a.a.
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32356363
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тоже это находил...вот как это не работает...(((

Я так подумал (ещё не проверял) что можно сделать так:
AnsiString sFile = GetCurrentDir()+"\\Shablt.xlt";
App=CreateOleObject("Excel.Application");
App.OlePropertyGet("WorkBooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh=App.OlePropertyGet("WorkSheets",1);
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32357808
SAnatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что не работает?

У меня все работает.

Скажи, что не работает у тебя и как пишешь, что хочешь в итоге.

Давольно удобно все, вот только при выгрузки записей из БД больше 1 000 000, долго ждать. Нужно переписывать в массив.

Если что пиши на мыло: amyulet@ yandex . ru (слитно все:))
...
Рейтинг: 0 / 0
Шаблон .xlt и как с ним работать...???
    #32358070
fatso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SAnatoliy
Все работает ... я просто написал вот так...)))
AnsiString sFile = GetCurrentDir()+"\\Shablt.xlt";
App=CreateOleObject("Excel.Application");
App.OlePropertyGet("WorkBooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh=App.OlePropertyGet("WorkSheets",1);
И все заработало....))))
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шаблон .xlt и как с ним работать...???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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