Einzelnen Beitrag anzeigen

verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#1

Hat Jemand eine Ahnung wie ich diese Datei in ein Stringgrid bekomme.

  Alt 1. Apr 2018, 16:32
Ich schreibe zur Zeit ein Programm, das Messprotokolle auswertet. Dabei bekomme ich von einem Aufzeichnungsgerät diese angehängte Dateien.
Mit Excel bekomme ich sie ohne Probleme, in eier Tabellenstruktur geöffnet. Es ist aber keine CSV-Datei. Bis jetzt lade ich sie über Excel in ein Stringgrid, entnehme für mich nötige Informationen und füge diese in ein Listview. Das dauert bei 2000 Dateien aber ewig lange. Andere Messdateien die in CSV vorliegen kann ich direkt ins Stringgrid laden, das
dauert nur ein paar Sekunden.

Delphi-Quellcode:
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;
  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;
    x := XLApp.ActiveCell.Row;
    y := XLApp.ActiveCell.Column;
    AGrid.RowCount := x;
    AGrid.ColCount := y;
    RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
    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;
    RangeMatrix := Unassigned;
  finally
    if not VarIsEmpty(XLApp) then
    begin
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
      Result := True;
    end;
  end;
end;
Angehängte Dateien
Dateityp: zip Testdatei.zip (34,5 KB, 15x aufgerufen)

Geändert von TBx ( 2. Apr 2018 um 08:59 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat