Технология 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
Для наглядности было бы хорошо оперировать не номерами листов, а их именами.
(2) StepByStep, если файл вообще нигде не просматривать (не на чем), номера удобнее.
И возни мне с именами больше, пока даже не знаю как…
К тому же в 99% случаев имена такие: Лист1, Лист2, Лист3
(3)
Практика у всех разная.
Моя практика такова: получаемые файлы — просматриваются.
Пользователь получает по почте файл.
Сохраняет на сетевом ресурсе.
На своем ПК открывает, просматривает его на предмет соответствия присланным документам.
И только после этого производится загрузка.
(3)
Да, в большинстве случаев именно такие имена, а то и вовсе только Лист1.
Eugeneer даже не качая минус поставил. Как же — в его прайсовую вотчину вторгнулись :)))(7) Eugeneer, а с чего ты взял, что не будет работать в 95 формате эксель?
Насчет массивов, картинку смотрел? Матрица 5000 строк х 9 столбцов за 3 секунды
Соответственно, 50000 тыс строк — 30 секунд. У тебя быстрее через буффер заполнится?
(9) Eugeneer,
И ты её всем подарил? 😉 Сомневаюсь, равно как сомневаюсь, что это тобой писанная ВК.
(7) Eugeneer,
Именно так и рождаются лучшие решения. Это называется конкуренцией
(7)
Если ты посмотришь, в каких ВК и когда у меня появилось чтение xls, то еще надо посмотреть, кому неймется.
А то тут мне по поводу Форматтера один написал «Очередной велосипед? Все на Снегопат»
А между тем, первая версия форматтера появилась аж в 2009-ом году, когда никаких Снегопатов и в помине не было.
И я, без ложной скромности, пожалуй, вообще первый был, кто начал работать с Конфигуратором V8
Маня, ты зачем минуснул? 😉
(17) Eugeneer,
Я тоже не любитель, но
1. На 1С писать мне влом — это работа
2. ВК продать — дело безнадежное. Плавали-знаем
(17) Eugeneer, ну дык такую узконаправленную компоненту и не продать 🙂 а так — с миру по нитке 🙂
(13) Eugeneer, Судя по вашим публикациям и постоянным покупкам $m (похоже на рекламу) — вы действительно профессиональный разработчик (а скорее даже — команда разработчиков). Ваше мнение должно быть услышано, даже если это мнение — жесткая критика. Мне кажется, что выбран НЕ корректный тон. Видимо вас задел тот факт что бесплатно выкладываются «относительно сырые» разработки, конкурирующие с вашим продуктом.
Давайте с уважением относиться к работе друг друга. Да, работы можно минусовать, если вы считаете это заслуженным. Но при этом можно ведь и помочь разработчику делать качественный продукт. Ведь от доверия к Инфостарту в целом зависит и наша с вами выгода!
Я сам недавно начал выкладывать разработки. И пока только пытаюсь понять, что востребовано, а что нет. Если у вас есть опыт, которым вы готовы поделиться — you are welcome! Но огульно очернять разработки — бросает тень и на вас тоже…
(19) DZENN,
Её и широконаправленную не продать.
http://infostart.ru/public/178717/ — рейтинг 65,
http://infostart.ru/public/125913/ , от которой первая — просто жалкий кусок, рейтинг 43
Пример прям отсюда:
а
Кроме того, последняя почти год лежала триальная, никто не изъявил желания «растриалить».
(21) Aleksey81, мы нашли с ним консенсус, так что все ОК 😉
Кое в чем Eugeneer прав, а именно в том, что пользоваться данной компонентой (как впрочем и другими подобными разработками автора) можно только на свой страх и риск ибо сегодня она автору интересна а завтра он ее забросит (ибо интерес иссяк).
(22) плохая предпродажная подготовка потому что 😉
1. узконаправленные
2. не указано, какие проблемы решает
3. требует специалиста для установки и запуска
4. плохое описание, по диагонали ничего не понятно
короче, слон не отполирован 😉
(24)
СВЯТАЯ ПРАВДА :))).
Другое дело, ежели она работает и устраивает — чего ее сопровождать?
Это ж не конфа 1С в свете постоянно меняющегося законодательства.
P.S. Я публикую только то, что писал для себя и под себя.
(7) Eugeneer, вы просто переживаете, что у вас кусок хлеба забирают. На мисте, помнится, хвалились, что такое есть только у вас )
(26) в любой компоненте могут быть ошибки,недочеты и т.д. (думаю, что твоя не исключение). Вот попросят тебя, что нить в ней добавить,изменить,исправить — будешь делать? думаю, что все будет зависеть от твоего настроенияжелания и т.д. (захочешь — сделаешь а нет так нет). Поэтому строить свои разработки (как коммерческие так и не коммерческие) на подобный «не поддерживаемых» компонентах лично я бы не стал.
(13) Eugeneer,
О чем я и говорю. Конкуренция. Только у тебя работа на опережение.
Я не люблю делать работу на спор. Да и повторяться в решениях не люблю. Практически все мои решения и пуликации на инфостарте не имеют аналогов.
Много чего я делал, но не выкладываю по соображениям этики, так как делал для компаний в которых работал. До сих пор эти решения являются конкурентным преимуществом конфигураций при при продажах.
Как пример — Динамические бизнес процессы, это что-то подобное тому что опубликовано на инфостарте под названием «простые процессы» но — настраиваются без куч закладок а в панели сбоку карты, имеют неограниченое количество вложенных бизнес-процессов, настраиваемые легенды для каждого элемента, возмодность сохранять и проверять значения в любом уровне вложенности, изменения статусов основных объектов при прохождении точек маршрута, автоматического создания и заполнения объектов (докментов, отчетов/ обработок) на основании предыдущих или сохраненных точек маршрута. Много чего.
Но я посему-то не валю всех подряд минусами лишь на том основании что у меня есть решения покруче.
Думаю твои минусы — это просто маркетинговый ход. Скорее всего ты на самом деле боишься конкуренции. Но к счастью — она не избежна )
(30) noprogrammer,MiracleV8 я абсолютно нахаляву дорабатывал года 2, причем именно по хотелкам, мне оно уже было не надо. Даже по хотелкам семерочников, когда уже сама 7.7 мне абсолютно неинтересна стала. Я и эту могу по хотелкам доработать, но уже лично хотельщику и не нахаляву 😉
(31) Сергей, мы с Инженером уже пришли к согласию. Тем более он минус на плюс переправил.
Давай, плиз, тут эту тему закроем. А за поддержку тебе огромное спасибо
(11) Eugeneer
может все таки имелось в виду альтруизм?
Вообще то, язык программирования 1С тоже является высокоуровневым.
(34)
(33)Eugeneer,
Ок, тема закрыта.
(28) Eugeneer, никакого страха и риска тут нет. Формат экселя майкрософт давно не скрывает — пакованный xml. Так что никакого открытия ваш разработчик не сделал. Давно уже в других языках программирования без экселя работают.
какая библиотека используется в этой компоненте?
ОШИБКА:
Конструкция:
Листов=XLS.ОткрытьФайл(«d:ТестовыйXLXS1.xlsx»);
Метод ОткрытьФайл(ФайлEXCEL) для файлов с расширением XLS возвращает Неопределено.
Для расширения XLSX — правильное число.
(42) StepByStep,
Ни разу в жизни не встречал, чтобы «правильный» XLS не вернул количество листов, а пользуюсь уже давным-давно. Может твой XLS записан как схема xml? Тогда да, не сработает.
И еще: 7.7 при сохранении отчета в XLS формирует его не как книгу. Это еще Арчибальд заметил
Блинннн! Когда разделял процедуру открытия на XLS и XLXS просто забыл вернуть в 1С значение Листов для XLS.
Она определяла, просто не возвращала значение.
Перезалил. Спасибо за замечание
Заодно добавил проверку на параметр НомерЛиста в КоличествоСтрок и КоличествоКолонок
(41) andrewks, компоненты Дельфи:
Zexmlss (xlsx), XLSReadWriteII (xls), FWZipReader (распаковка XLSX в указанный каталог)
чистое любопытство: на чем написан ВК?
(45) BorisMor,
Zexmlss (xlsx), XLSReadWriteII (xls), FWZipReader (распаковка XLSX в указанный каталог)
Delphi 7
В 8.3 при открытии файла, 1С падает с дампом
(47) SinglCOOLer, я именно на 8.3 и тестил.
В какой момент падает?
(43)
Возвращаясь к вопросу «Имена листов» в дополнение к «Номера листов».
Скажите, пожалуйста, можно ожидать?
(49) StepByStep, в компонентах, которые использую, насколько помню, нет обращения к листу по имени.
Если там этого нет — ожидать не стоит. Но вопрос пока не закрываю, гляну…
ПодключитьВнешнююКомпоненту(ПолноеИмяФайлаВК,»ExcelNative»,AddInType.Native);
XLS =Новый(«AddIn.ExcelNative.V8Excel»);
XLS.ОткрытьФайл(«Путь»);
1С:Предприятие 8.3 (8.3.3.658)
(51)
Хм… что это за имя файла «Путь»??????
Если Путь заранее определен — то на фига его в кавычки?
Вот так, например, надо:
Путь=»d:Тест.xls»;
XLS.ОткрытьФайл(Путь); // Без кавычек!!!!
или
XLS.ОткрытьФайл(«d:Тест.xls»);
(50)
СПАСИБО.
PS: Для XLS теперь правильно.
(52) ыыы, естественно я не пишу там «путь», просто как пример, зачем вам именно мой путь, у меня был такой «D:Задачи.xlsx»
(54) SinglCOOLer, файл в студию!
До сих пор для чтения Excel файлов пользовался Йокселем.
Чем лучше данная разработка, только Native технологией или еще чем-то?
(56)
VZhulanov, откуда я знаю? Я Йоксель в глаза не видал. К тому же чужими не пользуюсь, если свою написать могу.
Плагин к Total Commander для просмотра xls-файлов , дата публикации 24.02.2008.
ВК для 7.7 ,дата публикации 06.09.2008
Кроме того:
Так что XLS я без всяких Йокселей давным-давно читаю.
(58) Не пробовал ни разу, но теперь Embarcadero есть — надо будет попробовать. Но не обещаю, что это скоро будет
(59) во времена Borland у них была IDE Kylix, которая позволялf открывать CLX-проекты, созданный в виндах в дельфях, при условии что весь проект использует clx компоненты, вместо vcl.
Среди прочих, можно было доставить специальные clx-компоненты, которые позволяли нативно читать *.xls из под *nix’ов. Так что, если эмбаркодерщики не по прибивали это все, то скорее всего все это там уже есть. Я правда сейчас совсем не в курсе, какой аналог Kylix есть в текущей студии, и как с этим всем работать. Раньше все было просто. Сидишь в винде, лабаешь на clx. Переоткрылся в kylix в *nix’ах, скомпилировал проект и вуаля! Единственный минус всех этих танцев: для создания инсталлятора нужен отдельный человек, т.к. все взаимосвязи библиотек Kylix, знал похоже сам великий г-н Кайликс 🙂 По факту, методом проб и ошибок, включая/исключая разные версии файлов, собирался этот самый инстялятор. Все сорцы я не дельфи-киндоме выкладывал в свое время. Не знаю вообще, живо ли это все.
Хотя слышал в последней студии, можно приложения под андрюшку собирать 😉
Ув. разработчик!
Скачала dll
Пробую открыть маленький xls (5 строк 5 колонок) — все работает.
Пробую открыть файл xls, где 77000 строк — валится с дампом.
Платформа 8.2.17.169.
Подскажите, что еще можно попробовать, чтобы прочитать файл xls (не xlsx) с кол-вом строк 77000..
Excel не установлен (политика фирмы такова, что на сервер Офис не ставят). А мне нужно читать xls регламентно, т.е. с пом. регл. заданий, выполнение будет идти в модулях с директивой &наСервере.
варианты:
1) Microsoft.ACE.OLEDB через COMОбъект
2) с пом. «excel.reader» не подошли:(
(61) Hany, компонент для чтения xls «заточен» под максимальное количество строк (Excel 97-2003) 65 536.
(62)
Спасибо, так и думала.
А что посоветуете?:)
(63) Hany, а в xlsx его пересохранить нельзя? он частоменяемый?
(64)
файл апдейтится/меняется раз в сутки какой-то программой, написанной 100 лет назад, и которая вне моих должностных обязанностей.
Поэтому, как обычно, в таких случаях, гнем 1С, а не ее (стороннюю программу).
В xlsx сохранить, конечно, можно, но это ж ручная работа, а я хочу, чтобы все автоматом по регл. заданию делалось, терпеть не могу «ручную поддержку» бизнес-процессов:)
Спасибо.
(59) разве дельфя поддерживает линухи в качестве целевых систем?
(61) Hany, читайте через adodb
(67) andrewks,
с помощью …Provider=Microsoft.Jet.OLEDB.4.0;… ?
Собстенно, сам excel не установлен. И как-то этот способ тоже не помог.
(68) Hany, эксель и не нужен. выкладывал пример в веткеhttp://forum.infostart.ru/forum26/topic75363/ 5-й пост
(68) Hany, всё, что могу пообещать, попробовать покопаться в «родном» коде компонента…
Но есть у меня подозрение: если прога написана «100 лет назад», может там и «неправильный» xls, а построенный на чем-то вроде:
|<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 формировали как раз для больших размеров
Спасибо автору классная компонента.
картинки обрабатываются в ячейках?
(70)
да, скорее всего вы правы, там xls видимо корявый.
И никакие способы его «не берут», т.к. видимо формат подгулял. Хотя COMObject родного MS OFFICE читает его на ура и даже спасибо говорит:)
Но увы, я COMОбъект(«Excel.Application») использовать не могу, т.к. на сервере его нет:(
Пробовала ставить OpenOffice, тоже не взяло подключение к нему через COMОбъект.
4andrewks : Microsoft.Jet.OLEDB.4.0 увы, тоже не «осилил» мой корявый многотысячный xls ….
Поэтому нашла в компании php программера, который написал регламентную переброску этого xls в базу MySQL…А далее дело техники.
Спасибо огромное за вашу ВК, буду ее использовать для pure xls :)))))
(73)
serezhick, проблем приделать нет, но это уже как спец-заказ будет
Однозначный плюс за старание и знание технологии ВК.
(77) Eugeneer, которую я качал — там ничего не было насчет платности. было это давным-давно.
И не компонентЫ, а одна компонента
______________________________________
Твой «напарник, который прогит на дельфи и питон» как-то плохо тебе объяснил, что такое компонента в Дельфи. Это кусок кода на той же Дельфи. И платной там является возможность разработчика использовать этот кусок в своих разработках. Даже если бы использовался платный вариант компоненты, откуда ты можешь быть уверен, что компилировалось не в среде, где эти компоненты честно куплены и установлены?
(66) andrewks, делфя только вроде научилась поддерживать мак, а с линухом пока что lazarus, kylix не предлагать.
(79) quick, у меня такие же сведения. потому и удивился
я для дофигищастрочных таблиц использовалhttp://sm-software.com/txlsfile.htm — замечательно работает.
(81) MMF, спасибо за наколку 😉 не встречал раньше
(82) Eugeneer,
DLL с кнопкой — это круто :)))
Кстати, как ты там говорил: не фиг читать ячейки в цикле, надо считывать весь лист?
Спроси напарника как он загоняет лист в память, у будешь шибко удивлен, когда он тебе скажет, что внутри ВК он как раз и считывает «поячеесто» в циклах и загоняет их в память. Только на фига столько в памяти держать?
(84) передача данных из ВК в 1С в виде двумерного массива все-таки принесет выигрыш в быстродействии — сократив тысячи вызовов FindMethod+CallAsFunction (вспомним про TurboMD.dll), поскольку в типовом шаблоне ВК FindMethod — это тупо сравнение всех вариантов написания всех методов компоненты с переданным через ILanguageExtender названием.
Конечно, выигрыш будет невелик, сравнительно с передачей range-ами при обмене данными с Excell по ОЛЕ.
(83) обрати внимание на платность компоненты
(85) MMF,
А ты глянь, ради интереса вот этоСоздание внешних компонент 1С для начинающих
У меня там нигде не используются FindMethod и CallAsFunction. Причем, я всегда так компоненты писал.
P.S. А вызвать метод по аглицки — руки не отвалятся 😉
(87)
У меня там нигде не используются FindMethod и CallAsFunction. Причем, я всегда так компоненты писал.
м-м-м… какая-то профанация. там же COM, а не NativeAPI
(87)Ну я про COM и говорил… Какой к 77 Native может быть? Там-то тоже «по фирме» и FindMethod, и CallAsFunction.
А насчет скорострельности — тут же, на картинке матрица 5000х9 за три секунды.
Куда спешить? 😉 В моей практике ёксели больше 10 тыс. строк и не встречались…
Потестю ради интереса на 65 тыс. строк, посмотрим за сколько. Причем, не вывод в ТЗ на форме, а просто загрузку в ТЗ
(90) Eugeneer, пришли, тестанем. Ради интереса… Только данная не возьмет больше 65 тыс. строк. Но принцип (ячейки или лист в память) можно и на xlsx проверить, если не возражаешь.
(85),(90) Результаты тестирования на моём достаточно слабом компе
Операционная система: Windows 7 Ultimate
Оперативная память, MB: 2146
Матрица 65 тыс. строк х 50 колонок (что равносильно 650 тыс. строк х 5 колонок) — чуть меньше 5-ти минут.
(93) Eugeneer, я вспомнил молодость, когда в НИИ делал расшифровку неметрических зубчатых колес (по замерам, чертежей фиг). Там многоступенчатые формулы с коэффициентами, быстро освоил Basic и на нем слепил. Плюс расчет профиля фрез неметрических под их изготовление.
А наш математик Саня Пинкин взялся ее на Fortran переводить.
— Раз в 10 быстрее считать будет.
— Слушай, она сейчас считает 5 секунд, а на ввод всевозмонжных параметров у меня уходит 30 секунд. Ладно, твоя будет считать 0.5 сек, но я же за 3 сек. вводить не смогу! :)))
P.S. Так он, кстати, и не сделал, ибо образование ущербное — математическое, а не нормальный инженер-механик, как я 😉
(86) MMF,
Распаковал xf40_unr_d7.exe в папку, потом содержимое папок …xf40_unr_d7UNREG_D7Bpl и
…xf40_unr_d7UNREG_D7DCU перекинул в …Delphi 7ProjectsBpl и все заработало 😉
Заметь! НИЧЕГО НЕ ЛОМАЛ!!! ;))) Но, похоже, это только в Delphi прокатит.
Доступа к исходникам, естественно, — фиг.
(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С для начинающих» вобще банить нужно, как вредителя
(96) MMF,
Это из каких же соображений? Из тех, что все мои COM-компоненты работают безотказно?
MiracleV8: Расширенная версия имеет рейтинг
Из тех, что
240 и более 2 тыс. скачиваний?
И все написаны по принципу, изложенному в статье. Мне надо было достучаться до «ЗагрузитьВнешнююКомпоненту», я и достучался. А дальше зачем мне их ТСВК?
(0) Abadonna если выполнить метод ЗначениеЯчейки() то при чтении листа который не существует 1С (8.2.18.109) вылетает в с дампом. А можно чтобы просто ругалось и не читало?
(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;
У тебя на какой версии падает?
(99)У меня версия 1.0.0.2 из файла ExcellNative.zip, кто-же знал какая там версия. А зачем выкладывать 2 файла причем один не подписывать?
(100) CaSH_2004,
Описание разработки:
» Версия 1.0.0.4
Добавлены проверки на правильность параметров НомерЛиста, НомерСтроки, НомерКолонки
По просьбе StepByStep добавлено получение номера (индекса) листа по его имени, метод ИндексЛистаПоИмени»
______________________
че-то кнопка цитаты не работает
(100) CaSH_2004, а не подписан (возможно) второй, я просто случайно директиву компилятора {$R *.res} закомментил
(101) Да все ясно когда залазиш и все проверяеш 🙂 Просто версию ДЛЛ видно только через свойства, а лезть туда не было причины пока ты не сказал, и пока не было проблем.
Спасибо за компоненту, не пробовал, но качнул в свой архив.
Обязательно потребуется! Плюсану.
Это, интересно, случайно номер публикации — из разряда золотых? Или спецом подбирал? Или по жизни так выпадает? ))
(105) O-Planet, для меня золотой ..66666 😉
Расширение функционала планируется? — Например, можно от чтения плавно перейти к записи…
(107) AVK_Alex, не вижу никакого смысла хоть плавно, хоть не плавно…
В движке есть возможность сохранить хоть в ёксель, хоть в pdf, хоть еще во что…
Именно поэтому и не стал делать.
Заметил такую ситуацию в версии 1.0.0.4 если не получить «КоличествоКолонок» то «ЗначениеЯчейки» возвращает пусто 🙂
(109) Кажись, догадываюсь почему. Там проверяются индексы ячейки, чтобы они не выпадали за КоличествоКолонок и КоличествоСтрок, а глобальные переменные инициализируются по одноименным методам.
Посмотрю, подправлю
____________
Версия 1.0.0.5 — подправил
(108)Abadonna,
Это да. Но потом часто приходится открывать и поправлять ориентацию страниц, высоту строк и пр.
У компоненты проблемы с чтением файлов, содержащих свыше 100 тыс. строк.
Смотрел на файле, в котором 111 тыс. строк.
КолЛистов = Excell.ОткрытьФайл(ВремПутьФайлаЭкселя); — выдает «0»
КолКолонок = Excell.КоличествоКолонок(1); — после этого окно приложения валится с ошибкой
(134) adminfo2002, я вообще-то и не рассчитывал, и не тестировал для строк больше 65 000.
xls точно не сожрет больше (там ограничение используемой компоненты Дельфи), про xlsx — просто ничего сказать не могу. Мне, в моей практике, вообще никогда не встречались больше эдак строк 20 000…
(135) через ComSafeArray 1c читает такие файлы экселя без проблем.
(136) adminfo2002, поясню свою позицию. Свои ВК я пишу для себя. Меня вполне устраивает чтение файлов в размере около 10 тыс. строчек. Нет у меня клиентов, которые грузят прайсы по 1 млн. строк.
Они их вообще, как правило, не грузят, т.к. это оптовики или производственники. А кто и что там грузит/не грузит — мне, по большому счету, безразлично. Возникнет у меня необходимость грузить 500 тыс. строк — буду решать проблему, не возникнет — пальцем не шевельну 😉
(144) Можно поподробнее о первым параметром поставить номер Листа=1 и поимел висняк. ? Пробовали открывать мою обработку она у вас на xlsx виснет? У меня она на xlsx виснет, а на .xls нет.
Спасибо, нужная обработка.
Только один момент все убивает:
почему-то, получаемые значения, где это возможно, компонента приводит к числу, т.е. выделенное желтым значение на скрине будет получено в виде числа без лидирующих нулей.
Хотя если получать значение через OLE (например, ExcelPage.Cells(3,5).Value), то все ок, и нули на месте.
Можно это починить?
+пара багов
1) если получать значение таким образом: xls.ЗначениеЯчейки(1,2,ТекКолонка.Значение),
где, ТекКолонка тип КлючИЗначение, и ТекКолонка.Значение = 3 (Число)
то вываливается ошибка {(1)}: Поле объекта недоступно для записи (Значение)
2) если попытаться прочитать пустую ячейку (т.е. номер строки(наверное и колонки) которой > чем есть в файле), то возвращается значение последней успешно считанной ячейки, вместо пустого или вызова исключения