[ shpiki @ 28.03.2018. 10:37 ] @
Pozdrav svima,
potrebna mi je pomoc oko optimizacije pretrage .XLS i .XLSX fajlova, naime, program ucitava jedan XLS(X) dokument (1 worksheet) u kome se u jednom redu nalaze podaci koji sluze za kriterijum za pretragu u 10 razlicitih XLS(X) fajlova (takodje svaki ima po 1 worksheet) od po 150.000 unosa.
Bukvalno, program treba da uzme podatke iz prvog otvorenog dokumenta iz celije Ax, da taj podatak koristi kao kriterijum za pretragu u ostalih 10 dokumenata, kada pronadje poklapanje, iz dokumenta u kom je nasao poklapanje iz celije Cx treba da kopira podatak u prvi otvoreni dokument u celiju Bx...

Nadam se da sam priblizno objasnio sta aplikacija treba da radi.

Zanima me ideja, pseudokod ili neki primer kako najbrze pretraziti ove fajlove i upisivati pronadjene podatke.

Unapred hvala na odgovorima.
[ glorius @ 29.03.2018. 14:47 ] @
Za pocetak ce ti za otvaranje, citanje i upis u .xls biti potrebna tehnologija koja se naziva Automation.

https://www.codeproject.com/Ar...ssing-Excel-Spreadsheets-via-C

Kod generalno nije komplikovan, malo proucis neke primercice vezane za operacije sa fajlom...

Neka generalna ideja je da imas, gledajuci primer:

Excel::_WorkbookPtr pBookWithSearchCells;
Excel::_WorkbookPtr pBookWithCellsWhereAreWeSearch[10];

Pootvaras sve te fajlove i za svaki cell iz pBookWithSearchCells fajla pretrazujes ovih 10 pBookWithCellsWhereAreWeSearch fajlova...
Kada nadjes matching cell, prekopiras sadrzaj iz Cx u Bx pBookWithSearchCells.

Malo prouci API kako da citas i upisujes u odredjene celije, ne bi trebalo biti tesko (ne znam koliko si iskusan u programiranju, do duse...)

-----------------------------

Sorry, tek sad vidim da je problem u OPTIMIZACIJI, prevideo sam tekst....

Anyway, za pocetak pootvaraj sve fajlove i ucitaj podatke u memoriju i onda operisi nad njima i posle samo izjednom upisi u .xls fajl gde Bx vrednosti.
Ta struktura podataka sa nadjenim vrednostima koje treba na kraju upisati bi imala i indexe celija .xls fajla u koje bi posle upisivao:


std::map<int, int> BxValues;

Prvi int je index celije a drugi vrednost procitana iz celije Cx.





[Ovu poruku je menjao glorius dana 29.03.2018. u 16:02 GMT+1]

[Ovu poruku je menjao glorius dana 29.03.2018. u 16:04 GMT+1]