CodeTyphon en Lazarus in Windows 10.
Kan men mij de code doorsturen om via een button een Stringgrid te exporteren naar Excel(xlsx)?
Heb reeds een procedure om een Stringgrid te exporteren naar CSV
Meeste dank.
CodeTyphon en Lazarus in Windows 10.
Kan men mij de code doorsturen om via een button een Stringgrid te exporteren naar Excel(xlsx)?
Heb reeds een procedure om een Stringgrid te exporteren naar CSV
Meeste dank.
Misschien kan je hier iets mee:
https://www.swissdelphicenter.ch/en/showcode.php?id=379
Tevens een csv file kan je toch ook gewoon importeren in Excel of heb je specifieke celopmaak nodig (denk aan kleuren, font en/of berekeningen)?
FPSpreadsheet wellicht?
Bart
Bedankt voor de info.
Wegens mijn laag niveau in programmeren zal ik even tijd nodig hebben om het uit te proberen.
Het pakket FPSpreadsheet is geïnstalleerd in Lazarus 2.0.10.
Op de form staat een Stringgrid met enkele gegevens.
Heb echt steun nodig hoor !
OLE of geen OLE ?
Op mijn pc staat LibreOffice.
Code:nit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, fpspreadsheetctrls; type { TForm1 } TForm1 = class(TForm) btnEXIT: TButton; btnEXPORT: TButton; StringGrid1: TStringGrid; sWorkbookSource1: TsWorkbookSource; procedure btnEXITClick(Sender: TObject); procedure btnEXPORTClick(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.btnEXITClick(Sender: TObject); begin Application.Terminate; end; procedure TForm1.btnEXPORTClick(Sender: TObject); begin if SaveAsExcelFile(StringGrid1,'c:\TEMP\MyExcelFile.xls') then ShowMessage('StringGrid saved!'); end; procedure*XlsWriteCellLabel(XlsStream:TStream;const ACol,ARow: Word; const AValue:string); var L: Word; const {$J+} CXlsLabel:array[0..5] of Word=($204,0,0,0,0,0); {$J-} begin L:=Length(AValue); CXlsLabel[1]:=8+L; CXlsLabel[2]:=ARow; CXlsLabel[3]:=ACol; CXlsLabel[5]:=L; XlsStream.WriteBuffer(CXlsLabel,SizeOf(CXlsLabel)); XlsStream.WriteBuffer(Pointer(AValue)^,L); end; function SaveAsExcelFile(AGrid:TStringGrid;AFileName:string):Boolean; const {$J+}CXlsBof:array[0..5] of Word=($809,8,00,$10,0,0);{$J-} CXlsEof:array[0..1] of Word=($0A,00); var FStream:TFileStream; I,J:Integer; begin Result:=False; FStream:=TFileStream.Create(PChar(AFileName),fmCreate or fmOpenWrite); try CXlsBof[4]:=0; FStream.WriteBuffer(CXlsBof,SizeOf(CXlsBof)); for i:=0 to AGrid.ColCount-1 do for j:=0 to AGrid.RowCount-1do XlsWriteCellLabel(FStream,I,J,AGrid.cells[i,j]); FStream.WriteBuffer(CXlsEof,SizeOf(CXlsEof)); Result:=True; finally FStream.Free; end; end; end.
Op het Lazarus forum kun denk ik sneller hulp krijgen hiervoor.
De maintainer van FPSpreadsheet is gebruiker "wp", hij antwoord meestal snel op vragen hierover.
Bart
Seghele,
Wanneer je gebruik maakt van FPSpreadsheet hoef je in het geheel niet met OLE te werken. Het zou ook niet werken tenzij je 'iets' van Microsoft extra installeert. Niet nodig, want met FPSpreadsheet kan je direct een werkblad vullen en bewaren.
Laten we eerst eens kijken of we je kunnen helpen.
Ik begrijp dat je een StringList hebt die je als spreadsheet wil bewaren.
Zit je 'vast' aan de StringList of zou je ook een werkblad (binnen Lazarus) kunnen vullen?
Ik heb enige jaren geleden met succes met FPSpreadsheet gewerkt. Ik moet eens zien hoe ik dat deed.
Wanneer ik weet wat je precies wilt (dus niet hoe je het programmeert) kan ik / kunnen we je verder helpen.
Maarten.
MaartenW bedankt voor je inzet.
Heb een programma, dank zij het forum NLDelphi(Lazarus), dat goed werkt.
Het hoofddeel van deze applicatie is een Stringgrig.
Deze kan ik reeds exporteren naar een CSV bestand.
Maar het zou boeiend zijn om rechtstreeks een 'xlsx' bestand te genereren.
Kan persoonlijk een klein beetje programmeren zolang het zeer eenvoudig blijft.
De code in mijn vorig bericht was een copy/paste en hoeft aangepast te worden.
Reeds dank.
Leo
Mijn adresboek heeft een export naar xls (dus geen xlsx) functie.
Het betreft de units XlsConvert en SimpleBiff2Writer (de laatse geschreven door wp).
Misschien kun je er iets mee.
Bart
Bart,
Heel vriendelijk, maar te complex voor mijn niveau.Misschien kun je er iets mee.
Zonder aanpassing van mijn "unit1" zal het niet lukken.
Deze soort code en de inplanting ervan is voor volwaardige programmeurs en niet voor liefhebbers.
Dank voor de moeite.
Ik ben ook maar een liefhebber hoor, geen volwaardige programmeur (d.w.z. programmeren is een hobby voor mij, ik heb een volslagen niet aan informatica gerelateerde baan).
Heel lang geleden had ik een DOS/TP6 unit die naar Excel versie 2 kon schrijven.
Allemaal procedureel, geen OOP.
Ben bang dat ik die broncode nergens meer heb.
Maakte toen ook onderdeel uit van mijn adresboek, dus kun je nagaan hoe lang dat ding al meegaat
Bart
Ik ben ook maar een liefhebber
Maar dan toch met een hoog IQ.
Misschien kan de toekomst mij meer geluk opbrengen om een goede ziel te vinden die een mini programma wil coderen.
Er hoeft enkel een TStringgrid, met twee ingevulde lijnen en een TButton om de actie 'export naar xlsx' ui te voeren.
Hoop doet leven !
Bedankt Bart B.
Bart B,
Heb alle bestanden van jouw programma in een map van mijn pc geplaatst.
Bij het compileren krijg ik errors:
Enig idee wat er mis loopt ?Code:Hint: (11030) Start of reading config file C:\Lazarus\fpc\3.2.0\bin\x86_64-win64\fpc.cfg Hint: (11031) End of reading config file C:\Lazarus\fpc\3.2.0\bin\x86_64-win64\fpc.cfg Free Pascal Compiler version 3.2.0 [2020/07/07] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others (1002) Target OS: Win64 for x64 (3104) Compiling adres.lpr (3104) Compiling main.pp (3104) Compiling ControlledAddressBook.pp C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(152,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(190,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(191,60) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(192,25) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(204,5) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(210,5) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(223,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(231,5) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(251,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(271,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(296,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(356,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(358,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(365,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(367,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(373,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(391,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(519,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(525,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(531,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(537,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(546,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(562,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(573,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(582,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(598,3) Note: (6058) Call to subroutine "function GetDebugLogger:TLazLogger;" marked as inline is not inlined C:\LAZARUS_PROGS\TEST-Adres\ControlledAddressBook.pp(726,4) Fatal: (2013) Cannot open include file "navbuttons.lrs" Fatal: (1018) Compilation aborted Error: C:\Lazarus\fpc\3.2.0\bin\x86_64-win64\ppcx64.exe returned an error exitcode
In de 'foutmeldingen' wordt onderscheid gemaakt tussen 'warnings' en 'fatal errors'. Zo te zien moet er een file met de naam navbuttons.lrs worden geopend, maar wordt die file niet gevonden. De andere meldingen hebben te maken met code die op dit moment 'niet optimaal' is, maar niet onbruikbaar. Misschien dat Bart de file navbuttons.lrs ergens op zijn pc nog kan localiseren.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks