OLE관련 함수들이 델파이랑 빌더랑 많이 틀려서 변환을 할수가 없네요
동일하게 변환이 아니더라도, 참조할수 있는 정보만이라도 리플 달아주시면 감사하겠습니다.
목적은 엑셀 대량의 셀을 빠르게 읽어오려고 합니다. 단순 루프로는 무지하게 느려서 쓸수가 없어요...
아니면 해당시트를 CSV나 TXT로 저장할 수 있는 함수명이라도 알려주시면 더욱 감사하겠습니다.
차라리 csv로 저장해서 씨함수로 읽어버리는게 천배는 빠를거 같습니다.
var
xls, wb, Range: OLEVariant;
arrData: Variant;
begin
{create variant array where we'll copy our data}
arrData := VarArrayCreate([1, yourStringGrid.RowCount, 1, yourStringGrid.ColCount], varVariant);
{fill array}
for i := 1 to yourStringGrid.RowCount do
for j := 1 to yourStringGrid.ColCount do
arrData[i, j] := yourStringGrid.Cells[j-1, i-1];
{initialize an instance of Excel}
xls := CreateOLEObject('Excel.Application');
{create workbook}
wb := xls.Workbooks.Add;
{retrieve a range where data must be placed}
Range := wb.WorkSheets[1].Range[wb.WorkSheets[1].Cells[1, 1],
wb.WorkSheets[1].Cells[yourStringGrid.RowCount, yourStringGrid.ColCount]];
{copy data from allocated variant array}
Range.Value := arrData;
{show Excel with our data}
xls.Visible := True;
end;
|