procedure TForm1.ConnectToExcel; var strConn : widestring; begin strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + Edit1.Text + ';' + 'Extended Properties=Excel 8.0;';
AdoConnection1.Connected:=False; AdoConnection1.ConnectionString:=strConn; try AdoConnection1.Open; AdoConnection1.GetTableNames(ComboBox1.Items,True); except ShowMessage('Unable to connect to Excel, make sure the workbook ' + Edit1.Text + ' exist!'); raise; end; end;(*ConnectToExcel*)
procedure TForm1.FetchData; begin StatusBar1.SimpleText:='';
ConnectToExcel;
AdoQuery1.Close; AdoQuery1.SQL.Text:=Edit2.Text; try AdoQuery1.Open; except ShowMessage('Unable to read data from Excel, make sure the query ' + Edit1.Text + ' is meaningful!'); raise; end;
end;
I min Edit2, skriver jeg min select command, som jeg får data ind med. Den ser således ud: SELECT * FROM [Sheet1$]
Det virker også ved små filer, men jeg har et sheet med over 250 kolonner i breden, og nok 1000 rows nedaf.
Jeg leder efter en måde at bede om et bestemt område, f.eks A21:D21, eller hele A-D og bare indtil slut af sheet'et.
WOW!!!! Det var advanceret... Damn.... Det ser cool nok ud...
Men skal slet ikke bruge alt det der smarte designet noget lige pt.. Jeg er i test fase, og skal først lære en masse om hvordan data kommer ind og ud igennem excel...
Kan du give mig en lille hurtig forklaring? Når jeg skriver min select kommando, hvordan beder jeg den så om at tage et bestemt range?
kort fortalt, så du måske kan hjælpe mig på rette vej, uden at spilde for meget af din egen tid :)
Jeg har en excel fil, den skal jeg bare åbne, behøver slet ikke starte excel op i baggrunden eller noget. I den fil, er der et sheet, og kun et sheet til rådighed. Der skal jeg f.eks. selecte A21:D21, altså det data som ligger i de 4 rækker, og udskrive dem i det DBgrid, ved hjælp af et DataSource objekt...
Har ingen idé om hvordan jeg gør... Har jeg søgt og søgt og søgt....
Excel.Connect; { Same as Excel.Connected := True; } MacroFile := ExtractFilePath(ParamStr(0)) + 'Mappe2.xls'; (* Filen der skal åbnes og læses fra *) if FileExists(Macrofile) then Excel.OpenMacroFile(MacroFile, False);
(* Ex. [SELECT("R1C1:R11C4")] Læses som Select FRA : Row 1, Cell 1 TIL : ROW 11, Cell 4 *)
Memo.Lines.Clear; Reply := Excel.Request('Selection'); i := Pos(#9, Reply);
while i > 0 do begin Memo.Lines.Add(Copy(Reply, 1, i - 1)); Delete(Reply, 1, i); i := Pos(#9, Reply); end;
Memo.Lines.Add(Reply); (* Tilføj HVAD der er selected ! *) Range := TStringList.Create; Excel.GetRange(Rect(ColStart, RowStart, ColEnd, RowEnd), Range); Memo.Lines.AddStrings(Range); (* Tilføj DATA fra hvadder er selected ! *)
Min compiler laver en fejl, den siger: Excels.dru - file not found.
De tutorials jeg har prøvet på nettet, har de brugt ADOQuery, og ADOConnection. Er det den helt forkerte måde at gå frem? Fordi det eneste jeg faktisk mangler, er bare hvordan jeg i min Query får et bestemt range selected...
Fra min demo fra før skal du ligge Excels.pas sammen med dit nye projekt ... Jeg har bare vist hvordan man får fat i det tekst der er selected. Du må selv komme det i databasen.
okay... Jeg takker... Må se om jeg kan få det til at virke... Mange mange tak for din tid... :)
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.