Hallo!
Ich hatte vor einiger Zeit schon mal dasselbe gefragt, bin aber zwischenzeitlich noch zu keiner besseren Lösung gekommen...
Mein Problem ist folgendes: Ich muss aus einem TStringGrid eine größere Menge Daten in ein Excelsheet übertragen. Dabei geh ich folgendermassen vor:
Das Problem ist: das ganze ist unaussprechlich langsam. Für die knapp 350x20 Zellen brauch das ganze Dingens schätzungsweise 20 sec.
Gibt es irgendwie keine Möglichkeit ganze Arrays zu übertragen, oder das ganze zumindest zu beschleunigen?
Bin für jede Hilfe dankbar...
Bodo
Ich hatte vor einiger Zeit schon mal dasselbe gefragt, bin aber zwischenzeitlich noch zu keiner besseren Lösung gekommen...
Mein Problem ist folgendes: Ich muss aus einem TStringGrid eine größere Menge Daten in ein Excelsheet übertragen. Dabei geh ich folgendermassen vor:
Code:
Variant ExcelWorksheet; unsigned int smom,zmom,s,z; AnsiString txt; try { ExcelApplication->Connect(); } catch(Exception& e) { Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR); return; } ExcelApplication->set_Visible(0,1); ExcelApplication->Workbooks->Add(); tagVARIANT mycol,myrow,myval,mycolwidth; mycol.vt = VT_UINT; mycolwidth.vt=VT_UINT; myrow.vt = VT_UINT; myval.vt=VT_R8; for(z=zmom;z<(maxz+zmom+1);z++){ for(s=smom;s<(maxs+smom+1);s++){ mycol.intVal=s; myrow.intVal=z; txt=(AnsiString)StringGrid1->Cells[s][z]; if(!(txt=="")) ExcelApplication->Cells->set_Item(myrow,mycol,TVariant(txt)); } }
Gibt es irgendwie keine Möglichkeit ganze Arrays zu übertragen, oder das ganze zumindest zu beschleunigen?
Bin für jede Hilfe dankbar...
Bodo
Comment