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;