|
|
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Добрый день. Задача такая, имеется 2 Excel файла с расширением .xlsx. Необходимо узнать имеется ли каждая запись первого файла во втором. В каждом файле порядка 8000 строк. Если сравнитьвать посредством OLE получается долго. Куда копать, как быть? Сильно не ругайте, новичок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:38 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchan Если сравнитьвать посредством OLE получается долго. Куда копать, как быть? Зависит от того, как через ОЛЕ работаете: если через Cells, это одно, а если через Range и все равно медленно, это другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:48 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, Получаю данные с ексель в массив, загружаю в StringGrid. Дальше в счетчиком по строчно проверяю.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:49 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx1ca4064, Получаю данные с ексель в массив Эту часть можно реализовать через Cells (пробегая в цикле) или через Range (сразу вариантный массив) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:51 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Может есть какая то возможность запихать данные во временную таблицу и уже по этой таблице SQL запросами найти что есть, чего нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:51 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, Пример можно, если есть? Хотя бы кусок. Буду благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:52 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx Пример можно, если есть? Хотя бы кусок. Буду благодарен! Все говорят "буду..." :) Готового примера нет (точнее есть,но большой), могу подсказать, что изменить в Вашем коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:59 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:26 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx1ca4064, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. for J:= 7 to StringGrid2.RowCount do ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:27 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx1ca4064, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Короче, кода нет. У Вас скорее всего, тормоза в 2 местах: 1. Получение данных - там поможет Range 2. Поиск данных - там поможет сортировка 2.5 ну и данные храните в массиве, а не в гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:33 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, 1. Данные так и есть, получаю в массив.\ 2. По поводу сортировки, можете поподробней? 3. Понял, не буду грузить в грид. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:35 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx1ca4064, 2. По поводу сортировки, можете поподробней? Вы решаете такую задачу: для каждой строки из Массива1 ищете, есть ли такая же в Массиве2. В текущей реализации для поска в Массиве2 Вы его просматриваете полностью (8000 операций, грубо), а если Массив2 отсортировать, можно будет использовать двоичный поиск (13 операций, примерно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:44 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, Тяжело без примера :( Полезу в help.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:52 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchanx1ca4064, Тяжело без примера :( Полезу в help.. Посмотрите TList, TStringList. У меня осталось подозрение, что тормоза могут быть и в части получения данных: проверьте скорость работы без поиска строк. С другой стороны, отсортировать можно и в Excel :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:56 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Занимался когда то такой ерундой, но плюнул. Задача идиотская. сырцы: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. мануал: Программа для сравнения произвольных *.xls файлов. Сравнивает в длинну, ширину и глубину. Альфа. Параметры запуска: SheetsCompare.exe C:\SheetsCompare\Data\Journal1.xls#Лист1#2#2#Row# C:\SheetsCompare\Data\Journal2.xls#Лист1#2#3#Col# C:\SheetsCompare\Data\Journal3.xls#Лист1#1#1#RnC#654 C:\SheetsCompare\Data\Journal1.xls# - полный путь к файлу Лист1# - имя листа (не работает) 2# - строка 2# - столбец Row# - вектор данных (Row - вниз, Col - вправо, RnC - правониз (диагональ по чухонски), неопознанный вектор устанавливается в Und(efined) программа возьмет только данные стартовой ячейки) Конец - флаг остановки (если не указать этот параметр, прога остановится на первой пустой ячейке, а если указать, но прога его не найдет - вылетит бряк. (щёчик прикрутить штоле...)) Протокол выпадет в *.log файл. Туду: Доработать выбор листа: "Лист1" (пока отрабатывает только первый лист), добавить обработку *.odt, отвязатся от excel`я. Написано на коленке под острой интоксикацией коньяком. Не обессудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 08:57 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
x1ca4064, Получение данных происходит быстро.. Пользователь не будет сам сортировать, выгружаю в Excel и прога должна сразу обработать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 09:00 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
LocksmithPC, Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 09:02 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
MolchanДобрый день. Задача такая, имеется 2 Excel файла с расширением .xlsx. Необходимо узнать имеется ли каждая запись первого файла во втором. В каждом файле порядка 8000 строк. Если сравнитьвать посредством OLE получается долго. Куда копать, как быть? Сильно не ругайте, новичок. Подобную задачу проще решить родными средствами Excel - скриптами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 09:33 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
MolchanПолучаю данные с ексель в массив, загружаю в StringGrid. Дальше в счетчиком по строчно проверяю.. "Твою ж мать..." - (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 09:33 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
defecator, Если бы нужно было просто сравнить, то не написал бы в этой ветке.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 09:59 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchandefecator, Если бы нужно было просто сравнить, то не написал бы в этой ветке.. написано в первом посте, что Molchanимеется 2 Excel файла с расширением .xlsx. Необходимо узнать имеется ли каждая запись первого файла во втором. и больше ничего иного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 10:11 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 10:51 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
Molchan, пробегаешься по первой табличке, берешь текстовое представление каждой строки, помещаешь его в словарь. В качестве ключа используешь строку, в качестве значения - "ничего". Затем пробегаешься по второй табличке, также берешь текстовое представление каждой строки и проверяешь наличие ее в словаре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 11:16 |
|
||
|
Сравнение 2 файлов (.xlsx) посредством Delphi
|
|||
|---|---|---|---|
|
#18+
defecator, Ветка то Delphi, думаю говорит само за себя.. Долой разговоры:) По делу подсказать сможешь что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39845272&tid=2039177]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 462ms |

| 0 / 0 |
