gifts2017

Native ВК для 1CV8: независимое чтение файлов *.xls и *.xlsx

Опубликовал Аркадий Кучер (Abadonna) в раздел Программирование - Инструментарий

Не требует установленного в системе Microsoft Office (Excel) и Open Office.
Технология Native, не требует регистрации в реестре

ВК предназначена для считывания значений ячеек файлов *.xls и *.xlsx.
Не требует установленного в системе Microsoft Office (Excel) и Open Office.

Технология Native, не требует регистрации в реестре.


Подключение ВК:


ПодключитьВнешнююКомпоненту(ПолноеИмяФайлаВК,"ExcelNative",AddInType.Native);
//-- создание экземпляра класса--
XLS =Новый("AddIn.ExcelNative.V8Excel"); // слева - любая переменная
Вызов методов ВК: ваш экземпяр (например,XLS ) - точка - имя метода (параметры)

Методы ВК:

ОткрытьФайл(ПолноеИмяФайлаXLS{XLSX})
Возвращает количество Листов

КоличествоСтрок(НомерЛиста)
НомерЛиста - номер листа предварительно открытого файла, отсчет с единицы (по умолчанию =1)
Возвращает количество строк выбранного листа

КоличествоКолонок(НомерЛиста)
НомерЛиста - номер листа предварительно открытого файла, отсчет с единицы
(по умолчанию =1)
Возвращает количество колонок выбранного листа

ЗначениеЯчейки(НомерЛиста,НомерСтроки,НомерКолонки,ОпределятьДату)
Отсчет всех значений НомерЛиста,НомерСтроки,НомерКолонки с единицы
ОпределятьДату- булево, имеет смысл только для файлов *.xlsx, по умолчанию ЛОЖЬ
Если ИСТИНА и число в ячейке соответствует ТекущаяДата плюс-минус 2 года, будет возвращено
строковое представление даты
Возвращает значение выбранной ячейки

ЧислоВДату(Число)
Возвращает строковое представление даты по числу

Например, ЧислоВДату(41501)="15.08.2013"

РелевантностьСтрок(Строка1,Строка2,КтоЭталон)
Строка1, Строка2 - строки для сравнения
КтоЭталон - булево, если ИСТИНА, то эталон Строка1, иначе эталон Строка2
По умолчанию = ИСТИНА
Возвращает численное значение релевантности (схожести) строк.
100 - полностью тождественны
Может пригодиться при загрузке прайсов, например: релевантность строк "Майка мужская" и "Мужская майка" равна 88, что дает возможность сопоставить номенклатуру в справочнике и прайсе с достаточной достоверностью.

Тестировалась на:

Windows Server 2008 R2 Standard х 64
Windows 7 Professional Service Pack 1 х 32
Windows 7 Ultimate х 32
Windows ХР

Архив содержит саму ВК и файл описания

Версия 1.0.0.4

Добавлены проверки на правильность параметров НомерЛиста, НомерСтроки, НомерКолонки

По просьбе StepByStep добавлено получение номера (индекса) листа по его имени, метод ИндексЛистаПоИмени

Нюансы: для файлов XLS русские названия листов определяет только в том случае, если в них нет пробелов.

Версия 1.0.0.7

Подправлено по замечанию из комментария 109

Скачать файлы

Наименование Файл Версия Размер
Версия 1.0.0.11 239
.zip 397,50Kb
05.10.13
239
.zip 397,50Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Аркадий Кучер (Abadonna) 15.08.13 08:49
ВК предназначена для считывания значений ячеек файлов *.xls и *.xlsx
Не требует установленного в системе Microsoft Office (Excel)
Технология Native, не требует регистрации в реестре
Подключение ВК:
ПодключитьВнешнююКомпоненту(ПолноеИмяФайлаВК,"ExcelNative",AddInType.Native);
//-- создание экземпляра класса--
XLS =Новый("AddIn.ExcelNative.V8Excel"); // слева - любая переменная
Вызов методов ВК: ваш экземпяр (например,XLS ) - точка - имя метода (параметры)

Методы ВК:

ОткрытьФайл(ПолноеИмяФайлаXLS{XLSX})
Возвращает количество Листов

КоличествоСтрок(НомерЛиста)
НомерЛиста - номер листа предварительно открытого файла, отсчет с единицы
(по умолчанию =1)
Возвращает количество строк выбранного листа

КоличествоКолонок(НомерЛиста)
НомерЛиста - номер листа предварительно открытого файла, отсчет с единицы
(по умолчанию =1)
Возвращает количество колонок выбранного листа

ЗначениеЯчейки(НомерЛиста,НомерСтроки,НомерКолонки,ОпределятьДату)
Отсчет всех значений НомерЛиста,НомерСтроки,НомерКолонки с единицы
ОпределятьДату- булево, имеет смысл только для файлов *.xlsx, по умолчанию ЛОЖЬ
Если ИСТИНА и число в ячейке соотвествует ТекущаяДата плюс-минус 2 года, будет возвращено
строковое представление даты
Возвращает значение выбранной ячейки

ЧислоВДату(Число)
Возвращает строковое представление даты по числу

РелевантностьСтрок(Строка1,Строрка2,КтоЭталон)
Строка1, Строкак2 - строки для сравнения
КтоЭталон - булево, если ИСТИНА, то эталон Строка1, иначе эталон Строка2
По умолчанию = ИСТИНА
Возвращает численное значение релевантности (схожести) строк.
100 - полностью тождественны
Может пригодиться при загрузке прайсов, например:
релевантность строк "Майка мужская" и "Мужская майка" равна 88, что дает
возможность сопоставить номенклатуру в справочнике и прайсе с достаточной достоверностью

Пример:
КаталогИБ = СтрокаСоединенияИнформационнойБазы();
КаталогИБ = Сред(КаталогИБ,7,СтрДлина(КаталогИБ)-8) + "";
ПутьDll=КаталогИБ+"ExcelNative.dll";
ПодключитьВнешнююКомпоненту(ПутьDLL,"ExcelNative",AddInType.Native);
//-- создание экземпляра класса--
XLS =Новый("AddIn.ExcelNative.V8Excel");
Листов=XLS.ОткрытьФайл("d:\ТестовыйXLXS1.xlsx");
Строк=XLS.КоличествоСтрок(1);
Колонок=XLS.КоличествоКолонок(1);
Сообщить("Листов "+Листов);
Сообщить("Строк "+Строк);
Сообщить("Колонок "+Колонок);
Я11=XLS.ЗначениеЯчейки(1,1,1);
Я12=XLS.ЗначениеЯчейки(1,1,2);
Я14=XLS.ЗначениеЯчейки(1,1,4,Истина);
Сообщить("Я11 "+Я11);
Сообщить("Я12 "+Я12);
Сообщить("Я14 "+Я14);
Рел=XLS.РелевантностьСтрок("Майка мужская","Мужская майка");
Сообщить("Релевантность "+Рел);


Обработка

Процедура КнопкаВыполнитьНажатие(Кнопка)
ИмяФайла=ОбщСМ.КаталогИБ()+"Тест.xls";
// ИмяФайла=ОбщСМ.КаталогИБ()+"Тест.xlsx";
Листов=XLS.ОткрытьФайл(ИмяФайла);
Строк=XLS.КоличествоСтрок(1);
Колонок=XLS.КоличествоКолонок(1);
Сообщить("Размер матрицы: "+Строк+" х "+Колонок);
Сообщить("Старт: "+ТекущаяДата());
ТЗВ=Новый ТаблицаЗначений;
Для
А=1 По Колонок Цикл
ТЗВ.Колонки.Добавить();
КонецЦикла;
Для
Стр=1 По Строк Цикл
СтрТЗ=ТЗВ.Добавить();
Для
Кол=1 По Колонок Цикл
ЗначениеЯчейки=XLS.ЗначениеЯчейки(1,Стр,Кол,Истина);
Если
Кол=3 Тогда
ЗначениеЯчейки=XLS.ЧислоВДату(ЗначениеЯчейки);
КонецЕсли;

ТЗВ[Стр-1][Кол-1]=ЗначениеЯчейки;
КонецЦикла;
КонецЦикла;
ТЗ=ТЗВ;
ЭлементыФормы.ТЗ.СоздатьКолонки();
Сообщить("Финиш: "+ТекущаяДата());
КонецПроцедуры
2. Андрей М. (StepByStep) 15.08.13 10:40
Для наглядности было бы хорошо оперировать не номерами листов, а их именами.
3. Аркадий Кучер (Abadonna) 15.08.13 10:48
(2) StepByStep, если файл вообще нигде не просматривать (не на чем), номера удобнее.
И возни мне с именами больше, пока даже не знаю как...
К тому же в 99% случаев имена такие: Лист1, Лист2, Лист3
4. Андрей М. (StepByStep) 15.08.13 10:56
(3) Abadonna,

Практика у всех разная.
Моя практика такова: получаемые файлы - просматриваются.

Пользователь получает по почте файл.
Сохраняет на сетевом ресурсе.
На своем ПК открывает, просматривает его на предмет соответствия присланным документам.
И только после этого производится загрузка.
5. Андрей М. (StepByStep) 15.08.13 10:57
(3) Abadonna,
Да, в большинстве случаев именно такие имена, а то и вовсе только Лист1.
6. Аркадий Кучер (Abadonna) 15.08.13 11:07
Eugeneer даже не качая минус поставил. Как же - в его прайсовую вотчину вторгнулись :)))
7. Eugeneer (Eugeneer) 15.08.13 11:09
Ставлю минус, тк уже просто надоело что каждый день кому то неймется.

По поводу компоненты:

Как насчет 95 формата эксель?
Судя по описанию еще работать и работать. Номера листов..циклические выборки..... Некачественно.
Качественно - это когда ВК возвращает полный массив всех считанных листов с полными данными, по порядку одним махом. Безо всяких считываний в циклах и поячеистом и так далее.
8. Аркадий Кучер (Abadonna) 15.08.13 11:13
(7) Eugeneer, а с чего ты взял, что не будет работать в 95 формате эксель?
Насчет массивов, картинку смотрел? Матрица 5000 строк х 9 столбцов за 3 секунды
Соответственно, 50000 тыс строк - 30 секунд. У тебя быстрее через буффер заполнится?
9. Eugeneer (Eugeneer) 15.08.13 11:14
(8) какой буфер? у меня компонента ВК. Nativ под все режимы работы 1С, всех операционок, линукс и все остальное.
4 месяца назад написали, ну и постоянно поддерживаем. Тк как уже прожевали и жуем постоянно разные ситуации.
Недавно с кодировками разных осей разрулили ситуацию. У нас есть клиенты с украинскими, даже у одного клиента чешская винда.
Прикрепленные файлы:
10. Аркадий Кучер (Abadonna) 15.08.13 11:17
(9) Eugeneer,
у меня компонента ВК.

И ты её всем подарил? ;) Сомневаюсь, равно как сомневаюсь, что это тобой писанная ВК.
11. Eugeneer (Eugeneer) 15.08.13 11:19
(10) мой сотрудник в команде работает на всех языках.
По поводу атеизма обсуждать не будем. Компоненты такая же вещь как и все остальное - их надо поддерживать и развивать.
За бесплатно работать ты не будешь.
Это такая же постоянная кропотливая работа, человек должен быть мотивирован чтобы регулярно вкладывать труд.
12. Сергей Марченко (MarSeN) 15.08.13 11:20
(7) Eugeneer,
просто надоело что каждый день кому то неймется.

Именно так и рождаются лучшие решения. Это называется конкуренцией
BigB; arteast; nnn; marsohod; EdmundoAlvares; ivanov660; andrewks; TSSV; pt_olga; +9 Ответить 1
13. Eugeneer (Eugeneer) 15.08.13 11:23
(12) далеко не лучшие. Когда появляются поддельники, то мы не стоим на месте а делаем два шага вперед.
Хочешь потягаться - попробуй. На интузиазме долго не протянешь. Одно дело когда ты день посидел покайфовал как сделать то что у Маньяка есть. Другое дело когда мы работаем по 12 часов каждый день.
14. Аркадий Кучер (Abadonna) 15.08.13 11:28
(7)
уже просто надоело что каждый день кому то неймется.

Если ты посмотришь, в каких ВК и когда у меня появилось чтение xls, то еще надо посмотреть, кому неймется.
А то тут мне по поводу Форматтера один написал "Очередной велосипед? Все на Снегопат"
А между тем, первая версия форматтера появилась аж в 2009-ом году, когда никаких Снегопатов и в помине не было.
И я, без ложной скромности, пожалуй, вообще первый был, кто начал работать с Конфигуратором V8
15. DZENN (Dzenn) 15.08.13 11:30
Маня, ты зачем минуснул? ;-)
16. Eugeneer (Eugeneer) 15.08.13 11:30
(14) ну ладно хорош уже. Что вы так набросились на один минусик. Заработаешь свои 200 рейтинга и 2000 скачек маней.
Радуйся.
17. Eugeneer (Eugeneer) 15.08.13 11:33
(15) принципиально против халявы на таких вещах.
18. Аркадий Кучер (Abadonna) 15.08.13 11:37
(17) Eugeneer,
принципиально против халявы на таких вещах

Я тоже не любитель, но
1. На 1С писать мне влом - это работа
2. ВК продать - дело безнадежное. Плавали-знаем
19. DZENN (Dzenn) 15.08.13 11:41
(17) Eugeneer, ну дык такую узконаправленную компоненту и не продать :-) а так - с миру по нитке :-)
20. Eugeneer (Eugeneer) 15.08.13 11:42
(18) значит не те компоненты продавал что надо. Либо нет маркетинговой жилки. Публикацию мало разместить.
У нас есть проекты для которых нужны руки, тк как моего напарника одного мало. Могу поделится.
На вэб-сервисы надо ориентироваться.
21. Алексей Голосеев (Aleksey81) 15.08.13 11:48
(13) Eugeneer, Судя по вашим публикациям и постоянным покупкам $m (похоже на рекламу) - вы действительно профессиональный разработчик (а скорее даже - команда разработчиков). Ваше мнение должно быть услышано, даже если это мнение - жесткая критика. Мне кажется, что выбран НЕ корректный тон. Видимо вас задел тот факт что бесплатно выкладываются "относительно сырые" разработки, конкурирующие с вашим продуктом.
Давайте с уважением относиться к работе друг друга. Да, работы можно минусовать, если вы считаете это заслуженным. Но при этом можно ведь и помочь разработчику делать качественный продукт. Ведь от доверия к Инфостарту в целом зависит и наша с вами выгода!
Я сам недавно начал выкладывать разработки. И пока только пытаюсь понять, что востребовано, а что нет. Если у вас есть опыт, которым вы готовы поделиться - you are welcome! Но огульно очернять разработки - бросает тень и на вас тоже...
Исключение; TbSasha; mkostya; vlad.frost; dddxddd; andy23; EdmundoAlvares; ivanov660; 1cmax; MarSeN; pt_olga; +11 Ответить 1
22. Аркадий Кучер (Abadonna) 15.08.13 11:50
(19) DZENN,
такую узконаправленную компоненту и не продать :-)

Её и широконаправленную не продать.
Пример прям отсюда:
http://infostart.ru/public/178717/ - рейтинг 65,
а http://infostart.ru/public/125913/, от которой первая - просто жалкий кусок, рейтинг 43
Кроме того, последняя почти год лежала триальная, никто не изъявил желания "растриалить".
23. Аркадий Кучер (Abadonna) 15.08.13 12:00
(21) Aleksey81, мы нашли с ним консенсус, так что все ОК ;)
24. noprogrammer (noprogrammer) 15.08.13 12:03
Кое в чем Eugeneer прав, а именно в том, что пользоваться данной компонентой (как впрочем и другими подобными разработками автора) можно только на свой страх и риск ибо сегодня она автору интересна а завтра он ее забросит (ибо интерес иссяк).
25. DZENN (Dzenn) 15.08.13 12:05
(22) Abadonna, плохая предпродажная подготовка потому что ;-)
1. узконаправленные
2. не указано, какие проблемы решает
3. требует специалиста для установки и запуска
4. плохое описание, по диагонали ничего не понятно

короче, слон не отполирован ;-)
26. Аркадий Кучер (Abadonna) 15.08.13 12:05
(24)
ибо сегодня она автору интересна а завтра он ее забросит

СВЯТАЯ ПРАВДА :))).
Другое дело, ежели она работает и устраивает - чего ее сопровождать?
Это ж не конфа 1С в свете постоянно меняющегося законодательства.
P.S. Я публикую только то, что писал для себя и под себя.
27. Серж Иванов (adminfo2002) 15.08.13 12:51
(7) Eugeneer, вы просто переживаете, что у вас кусок хлеба забирают. На мисте, помнится, хвалились, что такое есть только у вас )
28. Eugeneer (Eugeneer) 15.08.13 13:06
(27) нет не только у меня. Есть три решения коммерческих в которых используется натив. И на ИС это не первая компонента.
Есть публикация - искать не буду.
Также еще встречал. в просторах интернета.
Отличительная проблема уже сказана - их можно использовать только на свой страх и риск.
Я до последнего не подключал ничего в разработки. Пока ко мне в команду не пришел мой давний товарищ с которым работали много лет.

В отличие от меня тупого 1Сника, он специалист программирующий на высокоуровневых языках. И именно только с ним связана разработка компоненты и подключение ее в прикладные решения. Грубо говоря мы работаем вместе в тандеме. Он пишет на высокоуровневых языках, я это использую для функциональности решений. Оба имеют мотивацию чтобы работать, сопровождать и так далее.

Конкуренции нашей ВК пока нет и не предвидется. Данная совершенно не то, тк как когда у меня стояла задача к напарнику то мне требовалось чтобы он мне просто вернул мне компонентой вообще ВСЕ одним готовым массивом (только имея исходный код, можно его сопровождать и отвечать за работу).
Я этот массив уже колбасю как мне надо. Моя задача уже предметная. Взять все это обработать и загрузить в 1С одним махом.
Поэтому моя загрузка умеет получать многоличтовые таблицы и грузить их все с общими или индивидуальными настройками.
В моей обработке нет такого - указать лист, загрузить. Потом юзер следующий указывает, опять настраивает и так далее.
Все происходит сразу. Одна кнопка читает все листы - данные со всех листов обрабатываются импортом.

Он в доле от бизнеса и результатов продаж.
Не будет продаж - у нас также все просто затихнет и умрет. Не будет развиваться и сопровождаться.

Выкинем все в свободный доступ - будем сидеть балдеть от рейтингов и скачек, а питаться воздухом.
29. Eugeneer (Eugeneer) 15.08.13 13:27
Кому интересно вот мой напарник на ИС http://infostart.ru/profile/4456/public/
Он не сильно много уделяет внимания ИС. Всего порядка 10 публикаций но 500 рейтинга.
Аналогично автору, за много лет не смог найти коммерческого применения свои работам.
А вот такая штука для семерки в свое время была прорывом) Вы знакомы)
http://infostart.ru/public/15116/
30. noprogrammer (noprogrammer) 15.08.13 13:47
(26) Abadonna, в любой компоненте могут быть ошибки,недочеты и т.д. (думаю, что твоя не исключение). Вот попросят тебя, что нить в ней добавить,изменить,исправить - будешь делать? думаю, что все будет зависеть от твоего настроения\желания и т.д. (захочешь - сделаешь а нет так нет). Поэтому строить свои разработки (как коммерческие так и не коммерческие) на подобный "не поддерживаемых" компонентах лично я бы не стал.
31. Сергей Марченко (MarSeN) 15.08.13 14:02
(13) Eugeneer,
Когда появляются поддельники, то мы не стоим на месте а делаем два шага вперед.

О чем я и говорю. Конкуренция. Только у тебя работа на опережение.
Хочешь потягаться - попробуй. На интузиазме долго не протянешь.

Я не люблю делать работу на спор. Да и повторяться в решениях не люблю. Практически все мои решения и пуликации на инфостарте не имеют аналогов.
Много чего я делал, но не выкладываю по соображениям этики, так как делал для компаний в которых работал. До сих пор эти решения являются конкурентным преимуществом конфигураций при при продажах.
Как пример - Динамические бизнес процессы, это что-то подобное тому что опубликовано на инфостарте под названием "простые процессы" но - настраиваются без куч закладок а в панели сбоку карты, имеют неограниченое количество вложенных бизнес-процессов, настраиваемые легенды для каждого элемента, возмодность сохранять и проверять значения в любом уровне вложенности, изменения статусов основных объектов при прохождении точек маршрута, автоматического создания и заполнения объектов (докментов, отчетов/ обработок) на основании предыдущих или сохраненных точек маршрута. Много чего.
Но я посему-то не валю всех подряд минусами лишь на том основании что у меня есть решения покруче.
Думаю твои минусы - это просто маркетинговый ход. Скорее всего ты на самом деле боишься конкуренции. Но к счастью - она не избежна )
Прикрепленные файлы:
32. Аркадий Кучер (Abadonna) 15.08.13 14:05
(30) noprogrammer,MiracleV8 я абсолютно нахаляву дорабатывал года 2, причем именно по хотелкам, мне оно уже было не надо. Даже по хотелкам семерочников, когда уже сама 7.7 мне абсолютно неинтересна стала. Я и эту могу по хотелкам доработать, но уже лично хотельщику и не нахаляву ;)
33. Eugeneer (Eugeneer) 15.08.13 14:07
(31) маркетинговый? я уже давно убрал минус и сверху поставил плюс)
За последние полтора часа 2 заказа по загрузке отгрузил по 8 тысяч. И еще один члеовек в личку за обработкой для Далион стукнулся.

Боятся то чего уже навалом несколько лет? - да нет уже как то даже и не боюсь. На ИС 349 конкурентов загрузке. А учитывая что и без натив в 3 года торгую, и только несколько месяцев назад внедрили. Моя сила - предметное использование и знание тповых конфигураций, задач и проблем в бизнесе. Вот это сила.
34. Аркадий Кучер (Abadonna) 15.08.13 14:08
(31) Сергей, мы с Инженером уже пришли к согласию. Тем более он минус на плюс переправил.
Давай, плиз, тут эту тему закроем. А за поддержку тебе огромное спасибо
35. Павел Толкачев (ltfriend) 15.08.13 14:09
(11) Eugeneer
По поводу атеизма обсуждать не будем

может все таки имелось в виду альтруизм?

В отличие от меня тупого 1Сника, он специалист программирующий на высокоуровневых языках

Вообще то, язык программирования 1С тоже является высокоуровневым.
36. Eugeneer (Eugeneer) 15.08.13 14:10
(35) вчерашнее пиво дало о себе знать)
37. Сергей Марченко (MarSeN) 15.08.13 14:14
(34) Abadonna,
(33)Eugeneer,

Ок, тема закрыта.
38. Серж Иванов (adminfo2002) 15.08.13 16:29
(28) Eugeneer, никакого страха и риска тут нет. Формат экселя майкрософт давно не скрывает - пакованный xml. Так что никакого открытия ваш разработчик не сделал. Давно уже в других языках программирования без экселя работают.
40. Eugeneer (Eugeneer) 15.08.13 16:37
(38) разные уровни открытий. мы тут говорим применительно к 1С и только к 1С: к конкретным, предметным задачам в учете.
41. andrewks 15.08.13 16:56
какая библиотека используется в этой компоненте?
42. Андрей М. (StepByStep) 15.08.13 23:32
ОШИБКА:

Конструкция:
Листов=XLS.ОткрытьФайл("d:\ТестовыйXLXS1.xlsx");

Метод ОткрытьФайл(ФайлEXCEL) для файлов с расширением XLS возвращает Неопределено.
Для расширения XLSX - правильное число.
43. Аркадий Кучер (Abadonna) 16.08.13 02:23
(42) StepByStep, Ни разу в жизни не встречал, чтобы "правильный" XLS не вернул количество листов, а пользуюсь уже давным-давно. Может твой XLS записан как схема xml? Тогда да, не сработает.
И еще: 7.7 при сохранении отчета в XLS формирует его не как книгу. Это еще Арчибальд заметил

Блинннн! Когда разделял процедуру открытия на XLS и XLXS просто забыл вернуть в 1С значение Листов для XLS.
Она определяла, просто не возвращала значение.
Перезалил. Спасибо за замечание
Заодно добавил проверку на параметр НомерЛиста в КоличествоСтрок и КоличествоКолонок
StepByStep; +1 Ответить 1
44. Аркадий Кучер (Abadonna) 16.08.13 02:49
(41) andrewks, компоненты Дельфи:
Zexmlss (xlsx), XLSReadWriteII (xls), FWZipReader (распаковка XLSX в указанный каталог)
45. Борис Моренко (BorisMor) 16.08.13 04:59
чистое любопытство: на чем написан ВК?
46. Аркадий Кучер (Abadonna) 16.08.13 05:01
(45) BorisMor,
andrewks, компоненты Дельфи:
Zexmlss (xlsx), XLSReadWriteII (xls), FWZipReader (распаковка XLSX в указанный каталог)

Delphi 7
LordMatrix; BorisMor; +2 Ответить
47. Иван (SinglCOOLer) 16.08.13 09:06
В 8.3 при открытии файла, 1С падает с дампом
48. Аркадий Кучер (Abadonna) 16.08.13 09:16
(47) SinglCOOLer, я именно на 8.3 и тестил.
В какой момент падает?
Прикрепленные файлы:
49. Андрей М. (StepByStep) 16.08.13 09:44
(43) Abadonna,
Возвращаясь к вопросу "Имена листов" в дополнение к "Номера листов".
Скажите, пожалуйста, можно ожидать?
50. Аркадий Кучер (Abadonna) 16.08.13 09:52
(49) StepByStep, в компонентах, которые использую, насколько помню, нет обращения к листу по имени.
Если там этого нет - ожидать не стоит. Но вопрос пока не закрываю, гляну...
51. Иван (SinglCOOLer) 16.08.13 09:59
ПодключитьВнешнююКомпоненту(ПолноеИмяФайлаВК,"ExcelNative",AddInType.Native);
XLS =Новый("AddIn.ExcelNative.V8Excel");
XLS.ОткрытьФайл("Путь");

1С:Предприятие 8.3 (8.3.3.658)
52. Аркадий Кучер (Abadonna) 16.08.13 10:04
(51)
XLS.ОткрытьФайл("Путь");

Хм... что это за имя файла "Путь"??????
Если Путь заранее определен - то на фига его в кавычки?
Вот так, например, надо:
Путь="d:\Тест.xls";
XLS.ОткрытьФайл(Путь); // Без кавычек!!!!
или
XLS.ОткрытьФайл("d:\Тест.xls");
53. Андрей М. (StepByStep) 16.08.13 10:07
(50) Abadonna,
СПАСИБО.
PS: Для XLS теперь правильно.
54. Иван (SinglCOOLer) 16.08.13 10:22
(52) Abadonna, ыыы, естественно я не пишу там "путь", просто как пример, зачем вам именно мой путь, у меня был такой "D:\Задачи.xlsx"
55. Аркадий Кучер (Abadonna) 16.08.13 10:31
56. Виталий Жуланов (VZhulanov) 16.08.13 14:54
До сих пор для чтения Excel файлов пользовался Йокселем.
Чем лучше данная разработка, только Native технологией или еще чем-то?
57. Аркадий Кучер (Abadonna) 16.08.13 15:03
(56)
Чем лучше данная разработка,

VZhulanov, откуда я знаю? Я Йоксель в глаза не видал. К тому же чужими не пользуюсь, если свою написать могу.
Кроме того: Плагин к Total Commander для просмотра xls-файлов, дата публикации 24.02.2008.
ВК для 7.7,дата публикации 06.09.2008
Так что XLS я без всяких Йокселей давным-давно читаю.
andrey-prog; MarSeN; +2 Ответить 1
58. Eugeneer (Eugeneer) 16.08.13 16:49
(57) под линукс писать будешь?
59. Аркадий Кучер (Abadonna) 16.08.13 16:57
(58) Не пробовал ни разу, но теперь Embarcadero есть - надо будет попробовать. Но не обещаю, что это скоро будет
60. Игорь Иванов (paybaseme) 19.08.13 13:35
(59) Abadonna, во времена Borland у них была IDE Kylix, которая позволялf открывать CLX-проекты, созданный в виндах в дельфях, при условии что весь проект использует clx компоненты, вместо vcl.

Среди прочих, можно было доставить специальные clx-компоненты, которые позволяли нативно читать *.xls из под *nix'ов. Так что, если эмбаркодерщики не по прибивали это все, то скорее всего все это там уже есть. Я правда сейчас совсем не в курсе, какой аналог Kylix есть в текущей студии, и как с этим всем работать. Раньше все было просто. Сидишь в винде, лабаешь на clx. Переоткрылся в kylix в *nix'ах, скомпилировал проект и вуаля! Единственный минус всех этих танцев: для создания инсталлятора нужен отдельный человек, т.к. все взаимосвязи библиотек Kylix, знал похоже сам великий г-н Кайликс :) По факту, методом проб и ошибок, включая/исключая разные версии файлов, собирался этот самый инстялятор. Все сорцы я не дельфи-киндоме выкладывал в свое время. Не знаю вообще, живо ли это все.

Хотя слышал в последней студии, можно приложения под андрюшку собирать ;)
61. Hany (Hany) 20.08.13 16:39
Ув. разработчик!

Скачала dll
Пробую открыть маленький xls (5 строк 5 колонок) - все работает.
Пробую открыть файл xls, где 77000 строк - валится с дампом.
Платформа 8.2.17.169.

Подскажите, что еще можно попробовать, чтобы прочитать файл xls (не xlsx) с кол-вом строк 77000..

Excel не установлен (политика фирмы такова, что на сервер Офис не ставят). А мне нужно читать xls регламентно, т.е. с пом. регл. заданий, выполнение будет идти в модулях с директивой &наСервере.

варианты:
1) Microsoft.ACE.OLEDB через COMОбъект
2) с пом. "excel.reader" не подошли:(
62. Аркадий Кучер (Abadonna) 20.08.13 16:49
(61) Hany, компонент для чтения xls "заточен" под максимальное количество строк (Excel 97-2003) 65 536.
63. Hany (Hany) 20.08.13 17:15
(62) Abadonna,
Спасибо, так и думала.
А что посоветуете?:)
64. Аркадий Кучер (Abadonna) 20.08.13 17:22
(63) Hany, а в xlsx его пересохранить нельзя? он частоменяемый?
65. Hany (Hany) 20.08.13 18:26
(64) Abadonna,

файл апдейтится/меняется раз в сутки какой-то программой, написанной 100 лет назад, и которая вне моих должностных обязанностей.

Поэтому, как обычно, в таких случаях, гнем 1С, а не ее (стороннюю программу).

В xlsx сохранить, конечно, можно, но это ж ручная работа, а я хочу, чтобы все автоматом по регл. заданию делалось, терпеть не могу "ручную поддержку" бизнес-процессов:)
Спасибо.
66. andrewks 20.08.13 18:33
(59) Abadonna, разве дельфя поддерживает линухи в качестве целевых систем?
67. andrewks 20.08.13 18:34
68. Hany (Hany) 20.08.13 18:45
(67) andrewks,
с помощью ...Provider=Microsoft.Jet.OLEDB.4.0;... ?

Собстенно, сам excel не установлен. И как-то этот способ тоже не помог.
69. andrewks 20.08.13 18:59
(68) Hany, эксель и не нужен. выкладывал пример в ветке http://forum.infostart.ru/forum26/topic75363/ 5-й пост
70. Аркадий Кучер (Abadonna) 20.08.13 19:01
(68) Hany, всё, что могу пообещать, попробовать покопаться в "родном" коде компонента...
Но есть у меня подозрение: если прога написана "100 лет назад", может там и "неправильный" xls, а построенный на чем-то вроде:
xml.ЗаписатьСтроку("<?xml version=""1.0"" encoding=""windows-1251""?>
|<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet""
| xmlns:o=""urn:schemas-microsoft-com:office:office""
| xmlns:x=""urn:schemas-microsoft-com:office:excel""
| xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet""
| xmlns:html=""http://www.w3.org/TR/REC-html40"">
| <DocumentProperties xmlns=""urn:schemas-microsoft-com:office:office"">
| <Author>Roman Cornelius</Author>
| </DocumentProperties>
| <OfficeDocumentSettings xmlns=""urn:schemas-microsoft-com:office:office"">
| </OfficeDocumentSettings>
| <ExcelWorkbook xmlns=""urn:schemas-microsoft-com:office:excel"">
| </ExcelWorkbook>");

Так мы из 7.7 раньше xls формировали как раз для больших размеров
71. Eugeneer (Eugeneer) 20.08.13 22:42
(68) Можем модифицировать нашу компоненту под вас если хотите под заказ.
Можете выслать ваши файлы для проверки, тк даже в рамках xls попадаются всякие бяки.
Выдадим чисто компоненту с методами (без конечного решения те не будет обработки), но будет привязана к юрлицу.
С гарантией в течении года. Исходники будут закрыты.
72. LordMatrix (LordMatrix) 21.08.13 08:07
Спасибо автору классная компонента.
73. Серега (serezhick) 21.08.13 10:47
картинки обрабатываются в ячейках?
74. Hany (Hany) 21.08.13 10:52
(70) Abadonna,

да, скорее всего вы правы, там xls видимо корявый.
И никакие способы его "не берут", т.к. видимо формат подгулял. Хотя COMObject родного MS OFFICE читает его на ура и даже спасибо говорит:)
Но увы, я COMОбъект("Excel.Application") использовать не могу, т.к. на сервере его нет:(
Пробовала ставить OpenOffice, тоже не взяло подключение к нему через COMОбъект.

4andrewks : Microsoft.Jet.OLEDB.4.0 увы, тоже не "осилил" мой корявый многотысячный xls ....

Поэтому нашла в компании php программера, который написал регламентную переброску этого xls в базу MySQL...А далее дело техники.

Спасибо огромное за вашу ВК, буду ее использовать для pure xls :)))))
75. Аркадий Кучер (Abadonna) 21.08.13 11:03
(73)
картинки обрабатываются в ячейках?

serezhick, проблем приделать нет, но это уже как спец-заказ будет
76. Данила Елистратов (CagoBHuK) 21.08.13 11:42
Однозначный плюс за старание и знание технологии ВК.
77. Eugeneer (Eugeneer) 22.08.13 10:57
Мне тут мой напарник, который прогит на дельфи и питоне, сказал что используемые в этой ВК компоненты(а) платная.
И стоят 300 баксов за лицензию.
Абадонна в курсе ?)
78. Аркадий Кучер (Abadonna) 22.08.13 11:04
(77) Eugeneer, которую я качал - там ничего не было насчет платности. было это давным-давно.
И не компонентЫ, а одна компонента
______________________________________
Твой "напарник, который прогит на дельфи и питон" как-то плохо тебе объяснил, что такое компонента в Дельфи. Это кусок кода на той же Дельфи. И платной там является возможность разработчика использовать этот кусок в своих разработках. Даже если бы использовался платный вариант компоненты, откуда ты можешь быть уверен, что компилировалось не в среде, где эти компоненты честно куплены и установлены?
79. Евгений Стоянов (quick) 23.08.13 11:43
(66) andrewks, делфя только вроде научилась поддерживать мак, а с линухом пока что lazarus, kylix не предлагать.
80. andrewks 23.08.13 11:55
(79) quick, у меня такие же сведения. потому и удивился
81. Михаил Усков (MMF) 23.08.13 22:15
я для дофигищастрочных таблиц использовал http://sm-software.com/txlsfile.htm - замечательно работает.
82. Eugeneer (Eugeneer) 24.08.13 00:04
(79) Джонни, раз так пьянка - давай засветим все небо звездами, и предоставим сообществу нашу ВК с готовым кодом и одной кнопкой.
А то тут рейтинги прут, а мы не пользуемся пиаром.
Обсудим на неделе.
83. Аркадий Кучер (Abadonna) 24.08.13 07:21
(81) MMF, спасибо за наколку ;) не встречал раньше
84. Аркадий Кучер (Abadonna) 24.08.13 07:23
(82) Eugeneer,
нашу ВК с готовым кодом и одной кнопкой.

DLL с кнопкой - это круто :)))
Кстати, как ты там говорил: не фиг читать ячейки в цикле, надо считывать весь лист?
Спроси напарника как он загоняет лист в память, у будешь шибко удивлен, когда он тебе скажет, что внутри ВК он как раз и считывает "поячеесто" в циклах и загоняет их в память. Только на фига столько в памяти держать?
85. Михаил Усков (MMF) 24.08.13 08:52
(84) передача данных из ВК в 1С в виде двумерного массива все-таки принесет выигрыш в быстродействии - сократив тысячи вызовов FindMethod+CallAsFunction (вспомним про TurboMD.dll), поскольку в типовом шаблоне ВК FindMethod - это тупо сравнение всех вариантов написания всех методов компоненты с переданным через ILanguageExtender названием.
Конечно, выигрыш будет невелик, сравнительно с передачей range-ами при обмене данными с Excell по ОЛЕ.
86. Михаил Усков (MMF) 24.08.13 08:54
(83) обрати внимание на платность компоненты
87. Аркадий Кучер (Abadonna) 24.08.13 09:02
(85) MMF,
передача данных из ВК в 1С в виде двумерного массива все-таки принесет выигрыш в быстродействии - сократив тысячи вызовов FindMethod+CallAsFunction

А ты глянь, ради интереса вот это Создание внешних компонент 1С для начинающих
У меня там нигде не используются FindMethod и CallAsFunction. Причем, я всегда так компоненты писал.
P.S. А вызвать метод по аглицки - руки не отвалятся ;)
88. andrewks 24.08.13 09:44
(87)
А ты глянь, ради интереса вот это Создание внешних компонент 1С для начинающих
У меня там нигде не используются FindMethod и CallAsFunction. Причем, я всегда так компоненты писал.


м-м-м... какая-то профанация. там же COM, а не NativeAPI
89. Аркадий Кучер (Abadonna) 24.08.13 09:51
(87)Ну я про COM и говорил... Какой к 77 Native может быть? Там-то тоже "по фирме" и FindMethod, и CallAsFunction.
А насчет скорострельности - тут же, на картинке матрица 5000х9 за три секунды.
Куда спешить? ;) В моей практике ёксели больше 10 тыс. строк и не встречались...
Потестю ради интереса на 65 тыс. строк, посмотрим за сколько. Причем, не вывод в ТЗ на форме, а просто загрузку в ТЗ
90. Eugeneer (Eugeneer) 24.08.13 11:07
(89) могу прислать эксель с миллионом строк. Причем не виртуальный каокй то, а реально клиент прислал.
91. Аркадий Кучер (Abadonna) 24.08.13 11:14
(90) Eugeneer, пришли, тестанем. Ради интереса... Только данная не возьмет больше 65 тыс. строк. Но принцип (ячейки или лист в память) можно и на xlsx проверить, если не возражаешь.
92. Аркадий Кучер (Abadonna) 24.08.13 13:00
(85),(90) Результаты тестирования на моём достаточно слабом компе
Процессор: Intel® Core™2 Duo CPU E6550 @ 2.33GHz частота 1866
Операционная система: Windows 7 Ultimate
Оперативная память, MB: 2146

Матрица 65 тыс. строк х 50 колонок (что равносильно 650 тыс. строк х 5 колонок) - чуть меньше 5-ти минут.
Прикрепленные файлы:
93. Eugeneer (Eugeneer) 24.08.13 13:10
(92) нормальная скорость. Когда речь идет о 500к строк то 5-6 или даже 8 минут уже значения не имеют.
По сравнению с тем что с этим дальше в 1С надо делать (синхронизация, создание номенклатуры и прочее) - считывание - семочки.
94. Аркадий Кучер (Abadonna) 24.08.13 13:23
(93) Eugeneer, я вспомнил молодость, когда в НИИ делал расшифровку неметрических зубчатых колес (по замерам, чертежей фиг). Там многоступенчатые формулы с коэффициентами, быстро освоил Basic и на нем слепил. Плюс расчет профиля фрез неметрических под их изготовление.
А наш математик Саня Пинкин взялся ее на Fortran переводить.
- Саня, на фига?
- Раз в 10 быстрее считать будет.
- Слушай, она сейчас считает 5 секунд, а на ввод всевозмонжных параметров у меня уходит 30 секунд. Ладно, твоя будет считать 0.5 сек, но я же за 3 сек. вводить не смогу! :)))

P.S. Так он, кстати, и не сделал, ибо образование ущербное - математическое, а не нормальный инженер-механик, как я ;)
95. Аркадий Кучер (Abadonna) 24.08.13 13:50
(86) MMF,
обрати внимание на платность компоненты

Распаковал xf40_unr_d7.exe в папку, потом содержимое папок ...\xf40_unr_d7\UNREG_D7\Bpl\ и
...\xf40_unr_d7\UNREG_D7\DCU\ перекинул в ...\Delphi 7\Projects\Bpl\ и все заработало ;)
Заметь! НИЧЕГО НЕ ЛОМАЛ!!! ;))) Но, похоже, это только в Delphi прокатит.
Доступа к исходникам, естественно, - фиг.
Прикрепленные файлы:
96. Михаил Усков (MMF) 24.08.13 15:31
(95) Мда уж...
Demo version
All features of the registered version are also available in the demo version!
The only demo limitation is that Borland Delphi IDE must be running.

А за "Создание внешних компонент 1С для начинающих" вобще банить нужно, как вредителя
97. Аркадий Кучер (Abadonna) 24.08.13 15:44
(96) MMF,
АMiracleV8: Расширенная версия за "Создание внешних компонент 1С для начинающих" вобще банить нужно, как вредителя

Это из каких же соображений? Из тех, что все мои COM-компоненты работают безотказно?
Из тех, что MiracleV8: Расширенная версия имеет рейтинг
240 и более 2 тыс. скачиваний?
И все написаны по принципу, изложенному в статье. Мне надо было достучаться до "ЗагрузитьВнешнююКомпоненту", я и достучался. А дальше зачем мне их ТСВК?
98. Олег Шалимов (CaSH_2004) 27.08.13 23:43
(0) Abadonna если выполнить метод ЗначениеЯчейки() то при чтении листа который не существует 1С (8.2.18.109) вылетает в с дампом. А можно чтобы просто ругалось и не читало?
99. Аркадий Кучер (Abadonna) 28.08.13 02:19
(98) CaSH_2004, вообще-то в версии 1.0.0.4 стоит проверка

if SheetCount = 0 then begin
V8SetWString(RetValue, 'не считан файл XLS-XLSX');
RESULT := true;
exit;
end;
if Sheet < 1 then Sheet := 1;
if Sheet > SheetCount then Sheet := SheetCount;

У тебя на какой версии падает?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа