PDA

Visualizza la versione completa : [DELPHI] Stampare un foglio Excel


Ned Hanster
21-06-2007, 10:44
ciao a tutti, avrei un piccolo problema...

nel mio programma ho creato un ExcelApplication utilizzando un variant...
ho compilato tutte le caselle che mi servivano prelevando i dati da un altro file...
Salvo il file di excel... e dopo non so piu come stamparlo... ho provato a cercare in giro e nel help di delphi, ma non ho trovato molti aiuti, tranne che nel help che c'è un esempio per Word, ma che non riesco ad applicare a Excel...

Se c'è qualcuno che può aiutarmi, ti prego fatti avanti... :ciauz: :ciauz:

alka
21-06-2007, 12:53
Riporta anche il codice che hai scritto, per avere un riferimento pratico su cui basarsi per eventuali suggerimenti.

Ned Hanster
21-06-2007, 13:59
il codice è moooolto lungo... cmq adesso posto i passaggi principali...

Ned Hanster
21-06-2007, 14:07
procedure TForm5.btnstampaClick(Sender: TObject);
var Rec:TBase;
NL:TFile;
Pag:TPagina;
Sorgente,Destinazione: file of Byte;
By:Byte;
ExcelAppl:Variant;
begin
//inizio copia file ---------
AssignFile(Sorgente,'modulo_f23.xls');
Reset(Sorgente);
AssignFile(Destinazione,'temp.xls');
Rewrite(Destinazione);
while not eof(Sorgente) do begin
read(sorgente,By);
write(Destinazione,By);
progbar.StepIt;
end;
closefile(Sorgente);
closefile(Destinazione);
// fine copia file ----------

ExcelAppl:=CreateOleObject('Excel.Application');
ExcelAppl.WorkBooks.Open('E:\Domus\PROGRAMMA\temp. xls');

//inserisco tutti i vari campi
.
.
.
//fine inserimento

//inizio data
Bazze:=DateToStr(Date);
ExcelAppl.Range[Ix+'44']:=bazze[4];
ExcelAppl.Range[Kx+'44']:=bazze[5];

ExcelAppl.Range['M44']:=bazze[7];
ExcelAppl.Range['O44']:=bazze[8];
ExcelAppl.Range['Q44']:=bazze[9];
ExcelAppl.Range['S44']:=bazze[10];
//fine data

if printdialog.Execute
then begin
//qui non so cosa mettere
end;

AssignFile(Destinazione,'temp.xls');
Erase(Destinazione);


in questo codice io copio un file di excel, sostituisco i campi che mi servono, lo mando in stampa (che però non so come fare), e poi elimino il file temporaneo cosi creato

Nikk11
22-06-2007, 08:14
Io quando ero nella tua situazione e non sapevo che fare, registravo una macro in excel facendo quello che mi serviva fare, e poi ricopiavo il codice nel mio programma.
Nel tuo caso il comando che viene eseguito da excel è "ActiveWindow.SelectedSheets.PrintOut".

Prova a farlo anche tu e poi fammi sapere.

Ciao :ciauz:

Ned Hanster
22-06-2007, 08:43
Originariamente inviato da Nikk11
Io quando ero nella tua situazione e non sapevo che fare, registravo una macro in excel facendo quello che mi serviva fare, e poi ricopiavo il codice nel mio programma.
Nel tuo caso il comando che viene eseguito da excel è "ActiveWindow.SelectedSheets.PrintOut".

Prova a farlo anche tu e poi fammi sapere.

Ciao :ciauz:

SIIIII... FUNZIONA... :unz: ti adoro.. 6 un grande, mi hai tolto questo pensiero che mi assillava di notte... grazie ancora...

:mame: :mame:

Ned Hanster
22-06-2007, 11:00
scusate se rompo ancora, ma qualcuno sa come si fa a leggere la stampante selezionata nella print dialog??? so come farlo da excel, ma prima devo sapere il nome, nell'help di delphi non ho trovato niente in proposito :master: :master: ...

Nikk11
22-06-2007, 16:03
Prova con "ActiveWindow.SelectedSheets.PrintOut.ActivePrinter" o qualcosa del genere...

Hei ho visto adesso che 6 di AVIO :oVVoVe:
pure io lo sono :fighet: :)

Io sono Nicola Menolli, ci conosciamo?

Ciao :ciauz:

Ned Hanster
22-06-2007, 17:00
Originariamente inviato da Nikk11
Prova con "ActiveWindow.SelectedSheets.PrintOut.ActivePrinter" o qualcosa del genere...

Hei ho visto adesso che 6 di AVIO :oVVoVe:
pure io lo sono :fighet: :)

Io sono Nicola Menolli, ci conosciamo?

Ciao :ciauz:

:unz: :unz: vai AVIO... conquisteremo tutto il globo... :fighet:

cmq apparte scherzi io sono Flavio Cristoforetti, del '89...

Nikk11
22-06-2007, 17:15
Originariamente inviato da Ned Hanster
:unz: :unz: vai AVIO... conquisteremo tutto il globo... :fighet:

cmq apparte scherzi io sono Flavio Cristoforetti, del '89...

:D :D

Io invece sono 1 "vecchietto" del '79... mi sa che è x quello che non ci conosciamo.
Beata gioventù :D

Ciao :ciauz:

Loading