WWWovan
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору jONES1979 Цитата: при помощи "той же самой кнопочки" ты можешь не только эскпортировать, но и заранее сохранить файл с выбранным именем, ДО того как юзеру этот счет выскочит для правки в excele... | В том то и дело, что заранее файл сохранять не нужно. Нужно просто чтобы каким-то образом при вызове сохранения пользователем подставлялось нужное имя файла. Ниже код... Цитата: void __fastcall TBillForm::sbCopyToExcelClick(TObject *Sender) { TKeyboardState KeyState; GetKeyboardState(KeyState); bool SendEMail = KeyboardStateToShiftState(KeyState).Contains(ssCtrl); if(ActiveControl==BillTGrid) BillTGrid->OnExit(Sender); ToBillRecord(); CConfigEntry *CfgRec = new CConfigEntry; CfgRec->Load("TEMPLPATH"); String TemplateName = CfgRec->Value + String("\\BILL.XLT"); delete CfgRec; Variant App, Sh; App = ExcelInit(); if(App.IsNull()) { Application->MessageBox("Невозможно открыть Microsoft Excel. " "Возможно, это приложение на компьютере не установлено.","Ошибка",MB_OK+MB_ICONERROR); return; } Sh = ExcelAddWB(App,TemplateName); if(Sh.IsNull()) { Application->MessageBox("Ошибка при создании книги Microsoft Excel.","Ошибка",MB_OK+MB_ICONERROR); return; } toExcel(App,"НомерСчета","Рахунок-фактура "+BillRec.Num+" від "+DateToStr(BillRec.Date)+"."); CClientEntry *ClRec = new CClientEntry; ClRec->Load(BillRec.Client); toExcel(App,"Плательщик",ClRec->LegalName); toExcel(App,"ТелПлательщика",ClRec->Tel); toExcel(App,"ФаксПлательщика",ClRec->Fax); String ClEMail = Trim(ClRec->EMail); delete ClRec; if(Trim(ClEMail)!="") ExcelHyperLink(App,"Плательщик","mailto:"+Trim(ClEMail)); toExcel(App,"ИтогоБезНДС",FloatToStrMExcel(BillRec.Amount/NDS_Mul)); toExcel(App,"НДС",FloatToStrMExcel(BillRec.Amount-BillRec.Amount/NDS_Mul)); toExcel(App,"Итого",FloatToStrMExcel(BillRec.Amount)); toExcel(App,"ИтогоПрописью",CurrToStrM(BillRec.Amount)); toExcel(App,"Исполнитель",BillRec.AutorName); ExcelAddRows(App,"НомТовара",BillRec.Recs->Count-1); CBillTEntry *BillTRec; for(int i=0;i<BillRec.Recs->Count;i++) { BillTRec = BillRec.Recs->Item(i); toExcel(App,"НомТовара",i,(IntToStr(i+1)+".").c_str()); toExcel(App,"НазвТовара",i,BillTRec->WareName.c_str()); toExcel(App,"ЦенаТовара",i,FloatToStrMExcel(BillTRec->Price/NDS_Mul)); toExcel(App,"КолТовара",i,BillTRec->Count); toExcel(App,"СуммаТовара",i,FloatToStrMExcel(BillTRec->Amount/NDS_Mul)); } App.OlePropertySet("Visible",true); } |
---------- Не несу ответственность за случайно допущенные орфографические ошибки. |
| Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 13:57 27-12-2006 | Исправлено: WWWovan, 13:59 27-12-2006 |
|