03. februar 2010 - 08:11Der er
4 kommentarer og 1 løsning
Udskrive graf fra Excel ark
Jeg har et Excel regneark som jeg åbner fra mit Delphi program og indsætter nogle værdier i sheet 'Data'. Disse værdier er grundlag for en graf på sheet 'Graph' Efterfølgende vil jeg gerne udskrive den graf, men der hopper kæden af for mig.
xlApp.Workbooks.Open(sWorkbook); HandleDataDay(sWorkbook); //Fylder tal i Excel arket xlSheets := XLApp.Sheets; xlSheets.Item['Graph'].Select; xlApp.ActiveSheet.ChartObjects(1).Activate; xlApp.ActiveSheet.PrintOut; xlApp.ActiveWorkBook.Save; if not VarIsEmpty(xlApp) then begin xlApp.DisplayAlerts := False; xlApp.Quit; end; end;
Måske ikke så elegant, men det virker. Eneste catch er at jeg ikke kan greje vordan jeg sender printer oplysninger med som jeg normalt gør i VBA for at skrive ud på en betemt printer. Men det er en detalje.
procedure SetDefaultPrinter(const PrinterName: String); var I: Integer; Device: PChar; Driver: PChar; Port: PChar; HdeviceMode: THandle; aPrinter: TPrinter; begin Printer.PrinterIndex := -1; GetMem(Device, 255); GetMem(Driver, 255); GetMem(Port, 255); aPrinter := TPrinter.Create; try for I := 0 to Printer.Printers.Count - 1 do begin if Printer.Printers[i] = PrinterName then begin aprinter.PrinterIndex := i; aPrinter.getprinter(device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver); StrCat(Device, Port); WriteProfileString('windows', 'device', Device); StrCopy(Device, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; finally aPrinter.Free; end; FreeMem(Device, 255); FreeMem(Driver, 255); FreeMem(Port, 255); end;
Gem evt current først: FtempPrinter:=Printer.Printers[Printer.PrinterIndex];
Og sæt FtempPrinter tilbage bagefter vha: SetDefaultPrinter(FtempPrinter);
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.