AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Excel-Tabelle in Stringgrid einlesen!

Excel-Tabelle in Stringgrid einlesen!

Ein Thema von Chriss · begonnen am 26. Apr 2003 · letzter Beitrag vom 16. Jan 2023
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Chriss
Chriss

Registriert seit: 6. Aug 2002
Ort: Ahlen
124 Beiträge
 
Delphi 7 Enterprise
 
#1

Excel-Tabelle in Stringgrid einlesen!

  Alt 26. Apr 2003, 10:46
Hi @ all!!

Ich habe folgendes vor:

Ich habe ein Excel-Tabelle mit vorgegebenen Werten (so weit, so gut).
DIESE tabelle soll nun mit Start des Programms in ein Stringrid eingelesen werden! und zwar OHNE die Spaltenüberschriften! WICHTIG ist auch, dass die Formate beibehalten werden müssen!
Ich habe die Tabelle angehängt, damit ihr damit auch was anfangen könnt! (Die rote zeile gibt es später nicht)
Ich habe schon mit memos und so weiter alles durchprobiert, funktionieren tuts, aber ich will hinterher mit den zahlen aus der tabelle auch noch rechnen!!

DANKE

CHRISS
Angehängte Dateien
Dateityp: xls beispiel_tabelle.xls (14,0 KB, 38x aufgerufen)
I'll be right there - I'll never leave - All I ask of you is ~ Believe
(Christopher Michael Oliva ~ 1963-1993 [Savatage]
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#2
  Alt 26. Apr 2003, 11:03
Möglich ist es auf jeden Fall, ich selbst hab mal sowas gemacht.

Damals hat mir googeln nach 'Delphi' und 'Excel' vollkommen ausgereicht ...

Auch wenn man sich in die Materie etwas einarbeiten muss, es gibt recht brauchbare Hilfen im Internet.

Dir alles zu erklären ist viel zu aufwendig, Detailfragen könnten wir hier sicher klären.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Chriss
Chriss

Registriert seit: 6. Aug 2002
Ort: Ahlen
124 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 26. Apr 2003, 11:13
hab ich teils schon versucht, das ergebnis war genau das gegenteil: von einem stringgrid in eine tabelle!!

ich möchte auch nur wissen, wie ich es anstelle, dass die zeilen und spalten in die stringgrid übernommen werden!
I'll be right there - I'll never leave - All I ask of you is ~ Believe
(Christopher Michael Oliva ~ 1963-1993 [Savatage]
  Mit Zitat antworten Zitat
Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#4
  Alt 26. Apr 2003, 11:39
Ich habe es zwar noch nicht ausprobiert, aber vielleicht hilft Dir dieses Posting Daten von Excel nach Delphi und Feldformatierungen für den Start weiter ... Oder dieses Posting in der auch einige Urls drin sind Text im StringGrid formatieren ...
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat
Benutzerbild von Chriss
Chriss

Registriert seit: 6. Aug 2002
Ort: Ahlen
124 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 26. Apr 2003, 11:45
hmm, hat mehr mit der gestaltung zu tun....
ich guck mal weiter
I'll be right there - I'll never leave - All I ask of you is ~ Believe
(Christopher Michael Oliva ~ 1963-1993 [Savatage]
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6
  Alt 26. Apr 2003, 11:46
Hab mal eine Funktion Xls_To_StringGrid() geschrieben:

Code:
uses
  ComObj;

function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
  xlCellTypeLastCell = $0000000B;
var
  XLApp, Sheet: OLEVariant;
  RangeMatrix: Variant;
  x, y, k, r: Integer;
begin
  Result := False;
  // Create Excel-OLE Object
  XLApp := CreateOleObject('Excel.Application');
  try
    // Hide Excel
    XLApp.Visible := False;

    // Open the Workbook
    XLApp.Workbooks.Open(AXLSFile);

    // Sheet := XLApp.Workbooks[1].WorkSheets[1];
    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];

    // In order to know the dimension of the WorkSheet, i.e the number of rows
    // and the number of columns, we activate the last non-empty cell of it

    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
    // Get the value of the last row
    x := XLApp.ActiveCell.Row;
    // Get the value of the last column
    y := XLApp.ActiveCell.Column;

    // Set Stringgrid's row &col dimensions.

    AGrid.RowCount := x;
    AGrid.ColCount := y;

    // Assign the Variant associated with the WorkSheet to the Delphi Variant

    RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
    //  Define the loop for filling in the TStringGrid
    k := 1;
    repeat
      for r := 1 to y do
        AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
      Inc(k, 1);
      AGrid.RowCount := k + 1;
    until k > x;
    // Unassign the Delphi Variant Matrix
    RangeMatrix := Unassigned;

  finally
    // Quit Excel
    if not VarIsEmpty(XLApp) then
    begin
      // XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
      Result := True;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Xls_To_StringGrid(StringGrid1, 'C:\Tabelle.xls') then
    ShowMessage('Table exported!');
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Chriss
Chriss

Registriert seit: 6. Aug 2002
Ort: Ahlen
124 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 26. Apr 2003, 12:11
UFF *platt sei*
da braucht man ja nen doktor für... erstmal danke, mal gucken, was sich damit anstellen lässt *fg*!
I'll be right there - I'll never leave - All I ask of you is ~ Believe
(Christopher Michael Oliva ~ 1963-1993 [Savatage]
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#8
  Alt 30. Jan 2007, 20:12
wenn in der Excel Datei Worksheets enthalten sind, die bis zur letzten Zeile ( 65536) gefüllt sind, stürzt der Code ab bei:

Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
Mit der Meldung: " Die Activate-Methode des Range-Objektes konnte nicht ausgeführt werden."

Weiß jemand warum ?
besten Dank!
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Excel-Tabelle in Stringgrid einlesen!

  Alt 30. Jan 2007, 20:17
Zahlentyp integer hört da auf. Hast Delphi-Version leider vergessen anzugeben. Wird wohl heutzutage als ShortInt deklariert sein. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#10

Re: Excel-Tabelle in Stringgrid einlesen!

  Alt 30. Jan 2007, 20:24
Zitat von Hansa:
Zahlentyp integer hört da auf. Hast Delphi-Version leider vergessen anzugeben. Wird wohl heutzutage als ShortInt deklariert sein. 8)

hmm .. versteh ich jetzt nich ganz, bis zu dieser Zeile wird doch noch gar nix mit integern gemacht ..
Sind ja nur 4 effektive Zeilen mit Excel ....

D2006 hab ich.


Delphi-Quellcode:
  XLApp := CreateOleObject('Excel.Application');
  try
    XLApp.Visible := False;
    XLApp.Workbooks.Open(AXLSFile);
    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz