Импорт файлов типов XLS, DBF, и TXT в табличное поле (Простой читальщик xls файлов)

Опубликовал Александр Шишкин (Шёпот теней) в раздел Программирование - Практика программирования

Отчёт предназначен для чтения файлов *.xls, *.dbf и *тхт с разделителями в табличное поле данного отчёта для последующей обработки.

В последнем отчёте (доработанном) реализованы следующие действия:

  1. Открытие, анализ и чтение файлов;
  2. Построчный вывод сначала в таблицу значений, в которой можно производить анализ по каждому значению, а затем в табличное поле формы;
  3. Сортировка табличного поля по колонкам;
  4. Удаление строк до или после текущей строки;
  5. Создание колонки с нумерацией строк, возможностью перенумеровать строки и удалению данной колонки;
  6. Именование колонок по текущей строке;
  7. Именование колонки по текущей ячейке;
  8. Произвольное именование колонки;
  9. Удаление колонок;
  10. Создание колонок.

По сравнению с предыдущими версиями в данном отчёте оптимизирован код, открытие и чтение файла с количеством 5…10 000 строк происходит за 1…5 секунд. Анализ документа производится по строкам с доступом к каждому значению, что позволяет анализировать документ ещё на стадии непосредственного чтения документа и сократить общее время на обработку документа.

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

Дополнительные функции позволяют вывести или сохранить документ в удобном виде, хотя аналогичные функции можно произвести и в широко распространённых программах электронных таблиц.

Буду благодарен всем, кто поможет улучшить данный продукт, даст совет, выразит критику и выскажет своё мнение.

Выражаю благодарность всем, кто рецензировал предыдущие версии данного отчёта, выражал своё мнение, давал советы...

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

Наименование Файл Версия Размер
ЧтениеЭкселя
.1200051633 9,09Kb
25.09.09
796
.1200051633 9,09Kb 796 Бесплатно
ТекстПроцедур
.1200052202 10,14Kb
25.09.09
336
.1200052202 10,14Kb 336 Бесплатно
ЧтениеЭкселя_01
.1200290800 9,66Kb
25.09.09
368
.1200290800 9,66Kb 368 Бесплатно
Чтение_XLS_TXT
.1200322299 14,20Kb
25.09.09
392
.1200322299 14,20Kb 392 Бесплатно
Импорт_XLS_DBF_TXT_файлов
.1201589470 21,05Kb
25.09.09
619
.1201589470 21,05Kb 619 Бесплатно

См. также

Добавить вознаграждение
Комментарии
1. VasilyKushnir (vasilykushnir) 11.01.08 14:52 Сейчас в теме
C почином, Санек. Поддержим коллегу!
2. Аркадий Кучер (Abadonna) 3652 11.01.08 16:01 Сейчас в теме
Кушнир-то фиг проверил, нет у него восьмерки, а я проверил ;)
Рабочая, как новичку- плюс
3. VasilyKushnir (vasilykushnir) 11.01.08 17:13 Сейчас в теме
А на каком фигу я ее проверю? Просто коллега по цеху смотрю пырвую обработку выложил - решил поддержать доброе начинание, дабы не заклевали новичка.
4. Александр (imsoftware) 173 12.01.08 18:38 Сейчас в теме
5. Аркадий Кучер (Abadonna) 3652 12.01.08 21:00 Сейчас в теме
Предусмотри и еще один режим на тот случай, если первая строчка ёкселя содержит заголовки колонок, в это случае создавать колонки не Колонка1...КолонкаX, например, Наименование-Количество-Цена. Будет юзабельнее
6. Александр Шишкин (Шёпот теней) 1678 14.01.08 08:00 Сейчас в теме
(5) Спасибо, Abadonna!

У меня так и работает. Да! Если это ещё кому то нужно, обязательно вставлю... Просто хотелось максимальной простоты, понятности и универсальности... Особенно для новичков... Когда месяц назад стал изучать 8-ку был в ужасе... теперь ничего...

Спасибо, ещё раз... Удачи!
7. Александр Шишкин (Шёпот теней) 1678 14.01.08 09:18 Сейчас в теме
(5) По совету "Abadonna" дополнил отчёт перенаименованием колонок табличного поля по выбранной строке или по выбранной ячейки см. файл и описание к файлу "ЧтениеЭкселя_01"

Спасибо всем кто выразил своё мнение в комментариях и/или скачиваниях данного отчёта.

Всем удачи и успехов!
8. Сергей Генералов (serg1c) 20 14.01.08 11:59 Сейчас в теме
Ну вообще-то обработкой текстовый файл можно назвать только с натяжкой!
А файлы .efd вообще как обработка не котируются.
Я не понял. Или убрали с сайта .ert или так и было?
9. Сергей Генералов (serg1c) 20 14.01.08 12:18 Сейчас в теме
Я видать не понял.
Это для 8-ки что-ли?
10. Александр Шишкин (Шёпот теней) 1678 14.01.08 18:04 Сейчас в теме
Спасибо магнтогорцам за советы и общение...

Всем удачи!
11. Аркадий Кучер (Abadonna) 3652 14.01.08 18:10 Сейчас в теме
(8,9) А фигли понимать?
Вверху четко написано, хоть и мелкими буквами: "Внешняя компонента для 1С: Предприятие 8.0"
Правда она не внешняя, но для 8.0 - точно ;)
12. Роман Петров (PeRom) 51 25.09.08 11:00 Сейчас в теме
>открытие и чтение файла с количеством 5…10 000 строк происходит за 1…5 секунд
Как этого добился? Что используешь?
Последнюю обработку скачать не могу, а в текстовых тот-же принцип, что и у меня:
Код
Файл = Новый COMОбъект("Excel.Application");
Файл.DisplayAlerts = 0;                   //не задавать вопросы
Файл.Application.AutomationSecurity = 3;  //уровень безопасности
Книга = Файл.Workbooks.Open(ФайлХЛ);//строка выполняется 5-6 минут, какая альтернатива?
Лист = Книга.Worksheets(2);
Пока (НЕ ПустаяСтрока(Строка(Лист.Cells(строкаXL,1).Value))) или
   (НЕ ПустаяСтрока(Строка(Лист.Cells(строкаXL,2).Value))) Цикл
   строкаXL = строкаXL+1;
КонецЦикла;                                       
COMSafeArrayМассив = Лист.range(Лист.Cells(1,1),Лист.Cells(строкаXL,249)).Value;
Книга.Close();
Показать полностью

открываю файл с несколькими листами, макросами и паролем. Как ещё можно считать из него инфу и желательно без ВК?
13. Алексей Воронин (Dirk Diggler) 08.01.10 04:15 Сейчас в теме
Отличная обработка. Пару идей выскажу. Лично мне не хватает:

  • возможности редактировать содержимое таблицы
  • загрузки нескольких листов по выбору
  • Удаления столбцов и строк
  • переноса в выбранную табличную часть
14. uri1978 uri1978 (uri1978) 100 18.01.10 12:58 Сейчас в теме
Спасибо. Буду использовать как пример для написания своей обработки.
То что нужно!
;)
15. Александр Шишкин (Шёпот теней) 1678 18.01.10 15:05 Сейчас в теме
(13) загрузка из листов реализовано здесь: http://infostart.ru/public/22279/ ... думаю что реализовать загрузку из нескольких листов в одну ТЗ труда не составит ...
16. Александр Шишкин (Шёпот теней) 1678 18.01.10 15:13 Сейчас в теме
(14) ... и вам спасибо ...

по поводу любой работы с XLS все ноги растут так или иначе от господина Душелова ... и эта разработка была написана на основе чтения его обработок ... и пользуясь случаем хочется выразить ему багодарность ...

быстрота чтения из Ексель достигается чтением листа не по ячейкам, хотя и это иногда нужно, а сразу весь лист оператором UsedRange.Value ... а при записи использовать в ексель файл использовать запись всей ТЗ используя МассивКОМ = Новый COMSafeArray("VT_VARIANT", ВсегоКолонок, ВсегоСтрок);
...

всё это есть в обработке: http://infostart.ru/public/22279/ ...

... вот ...
17. Александр Шишкин (Шёпот теней) 1678 19.01.10 08:09 Сейчас в теме
для uri1978 ... и кому интересно ... есть интересный сайт http://www.citforum.ru/programming/windows/ ... тут можно найти некоторые ответы ...

на вопрос:как при использовании UsedRange.Value избежать автоматического перевода текста "0100100" в число (100100) прямого ответа у меня нет ...

КТО знает подскажите ... ?

я делаю так ... в ексель при помощи функции "СЦЕПИТЬ" добавляю к явному текстовому полю знак апострофа ... а потом его удаляю ...

п.с. видимо надо копировать надо не UsedRange.Value а другим оператором копирования колонок с заданным форматом ...

дополнительные операторы можно посмотреть тут : http://msdn.microsoft.com/en-us/library/aa215923(office.11).aspx

... вот ...
18. Борис Скворцов (gaglo) 19.01.10 10:57 Сейчас в теме
(17) Заинтересовался... ибо вопрос сформулирован несколько расплывчато. Что есть "явное текстовое поле"? Ячейкам в Экселе задан формат "текстовый"? Последующее упоминание апострофов наводит на мысль, что формат всё-таки "общий", и тогда поле "явно текстовое" только для человеков.
По результатам моих экспериментов для чтения через Value выводы таковы:
- если ячейке Экселя явно задан формат "текстовый", то в 1С попадает значение как строка;
- если задан формат "числовой", то в 1С попадет число;
- если формат ячеек (по умолчанию) "общий", то по дороге неизбежно происходит то самое автоматическое преобразование: значения становятся числами, если только их возможно полностью преобразовать в число, иначе становятся строками (.10 будет числом, .10.24 - станет строкой);
- формат ячеек Экселя должен быть установлен до ввода значений в них!! иначе придется "обновить" значения в ячейках с измененным форматом, хотя бы банальным F2-Enter, чем я иногда и занимаюсь (с помощью кнопки и макроса).
Насчет другого оператора копирования колонок сильно сомневаюсь; можно попробовать забирать UsedRange.Text, тогда все ячейки превратятся в строки; поможет ли это в деле последующего разбора? Пока непонятно...
PS Тут же и попробовал - UsedRange.Text как массив не берется (не то что Value), а по одной ячейке неинтересно ;-[
Шёпот теней; +1 Ответить 1
19. Александр Шишкин (Шёпот теней) 1678 19.01.10 12:58 Сейчас в теме
(18) ... нууу... просто СПАСИБО ... и не ПРОСТО то же... ВОТ ...

хм... проблема в том, что если в Екселе стоит формат.общий и там стоит "001" то если колонку с данной ячейкой сделат формат.текстовое то ексель делает "001" как (1) ... приходится копировать колонку и вставлять её как текст что не всегда получится ... ))) ... поэтому делаю как в (17) ...

полностью согласен поячеечное чтение не "фонтан"...
мне больше нравится сохранять данные из 1С в 1С через mxl или ЗначениеВФайл/ЗначениеИзФайла ...

... вот ...
20. Eugeneer (Eugeneer) 19.01.10 13:14 Сейчас в теме
А чем отличается от всех описанных механизмов от стадартной типовой обработки с диска ИТС. которая все это делает. Загружает все из разных форматов, да и загружает все что угодно в справочники и документы.
21. Eugeneer (Eugeneer) 19.01.10 13:16 Сейчас в теме
Вы видели модуль типовой обработки? там очень красиво все сделано. и загрузка из экселя, и текста и ДБФ.
Почему то вообще не увидел никакой разницы, помимо основного недостатка - намного меньшим функционалом чем типовая обработка.
22. Eugeneer (Eugeneer) 19.01.10 13:22 Сейчас в теме
В заголовке написано ", DBF, и TXT" что несоответствует разработке. у вас только чтение экселевских файлов.
Честно говоря не понял в чем достижение публикации. Обычная загрузка экселевских файлов?

=======
ПС. вот и моя разработка, правда коммерческая, с готовым функционалом для конкретных задач и не только http://infostart.ru/public/21810/
23. Александр Шишкин (Шёпот теней) 1678 19.01.10 14:11 Сейчас в теме
(22) ... всё стало понятно ... оказывается то была реклама...)))

сначало чем не устраивает поячеечное чтение обработки с диска ИТС ... а потом купите у меня ... моя лучше... ))))

... вотоднаковот ...


п.с. Eugeneer - не перебАрщивай с манией ...
24. Eugeneer (Eugeneer) 19.01.10 14:53 Сейчас в теме
(22) ну вот .....
теперь каждую разработку будем рекламой называть?)....
Зато изщобретать и публиковать... велосепиды.... очень выгодно....типа бах и рейтинга нарубил...за то что уже годами на ИТС лежит...
Взял... изобрел веласипед.... разместил.... и как будто супер пупер новое.... :)) так?...
25. Eugeneer (Eugeneer) 19.01.10 14:58 Сейчас в теме
...ведь как то реально....новой идеи нет...нового чего то чего нет у других тоже...
пол кода ... видимость кнопок описана...
...оставшаяся часть - почти 90 процентов почти полная копия того что уже давно есть и доступно всем...
да еще и название публикации не соответствует.....
.... если моя - реклама... то чтоже ваше?... старое выдать за новое?... типа мол 2010 год... пора обновить циферку в годе...
26. Eugeneer (Eugeneer) 19.01.10 15:01 Сейчас в теме
по поводу ячеистого чтения....открою великую тайну.....цыц всем.....
в 1с ...вся экселевская таблица.....полностью загружается в таблицу значений 1С......ОДНИМ методом.....
может это самое...стоит синтакс помощник почитать?.....
27. Александр Шишкин (Шёпот теней) 1678 19.01.10 15:09 Сейчас в теме
(26) ... вместо цыц ... взял бы и научил бы нас как в 1С ... "в 1с ...вся экселевская таблица.....полностью загружается в таблицу значений 1С......ОДНИМ методом..... " ...

все бы тебе были благодарны ... а то, что ты умный мы и так знаем ...

... вОт ...

п.с. по поводу 2010 года... это была моя самая первая обработка написаннная в 2007 году на 1С 8.0 ... и прекрасно помню как с БОЛЬШИМ интересом читал подобные обработки ...
28. Александр Шишкин (Шёпот теней) 1678 19.01.10 16:59 Сейчас в теме
жаль... жаль... что Eugeneer так и не научил нас : ... "в 1с ...вся экселевская таблица.....полностью загружается в таблицу значений 1С......ОДНИМ методом..... " ...

видимо умность и жадность рядом ходят .... хм... или на одной шеи сидят ...

... ВОТведьВОТ ...
29. Eugeneer (Eugeneer) 19.01.10 17:27 Сейчас в теме
...хватит умничать и...кроликов разводить...у тебя загрузка итак этим методом загружает таблицу.... всего один метод.
остальное все вода в разработке...
30. Eugeneer (Eugeneer) 19.01.10 17:38 Сейчас в теме
а ответа почему ", DBF, и TXT" ...так и нет....как и собственно разработки с указанным функционалом не видно....
31. Александр Шишкин (Шёпот теней) 1678 20.01.10 08:39 Сейчас в теме
(30) ... Eugeneer ! ... у вас ко мне мания ...

... данная обработка и txt - загружает, и dbf - грузит (хотя и dbf лучше открывать как xls - меньше проблем с кодовыми страницами) ...

... воообщем НЕпонятно чтоТО или чтоТО не о ТОМ ...

... вотВобщемТАКвот ...
32. larissa builova (larisab) 157 20.01.10 08:44 Сейчас в теме
(24) И это при том что сабж 2008 года :o
33. Борис Скворцов (gaglo) 20.01.10 13:06 Сейчас в теме
(19) Мы вдвоем взаимно согласны друг с другом!
Но теперь мне непонятно: как можно сделать в Экселе формат общий и значение 001? Руками не получается, даже если я набираю клавишами 001; стоит нажать Enter, и в ячейке остается и значение 1, и видимое представление "1", но без всяких нулей. Речь идет, что ли, о табличке -продукте быстрой выгрузки из 1С?
34. Александр Шишкин (Шёпот теней) 1678 20.01.10 14:22 Сейчас в теме
(33) ... правила - ОБЩИЕ ... применение - "ЧАСТНОЕ" ...

форматОбщий не даст сделать "001" ... либо текствоый либо какой-нибудь придумать форматСпециальный ...

... наверное ...

если сохранять методами 1С "вывести" и "сохранить копию" там то же будет куча вопросов ... т.к. формат подберЁтся весьма странный ... вОООбщем теория всегда Общая а практика всегда - Частная ...

... ВОТ ...
35. Игорь Исхаков (Ish_2) 957 24.01.10 11:36 Сейчас в теме
Шепот , ты не поверишь !
Искать , заморачиваться было некогда .Нужно было быстро,"с ходу" загрузить некий xls именно в ТЗ как самый удобный формат для дальнейшей обработки.
Воспользовался.
ilya.don; Шёпот теней; +2 Ответить
36. Александр Полушин (aleks_pro) 27.10.11 16:38 Сейчас в теме
Выдает ошибочку. Будем смотреть
Шёпот теней; +1 Ответить
37. Stepan Shipitsyn (Stepan_1c) 13.12.11 04:59 Сейчас в теме
Спасибо за работу=)
Шёпот теней; +1 Ответить
38. Ершова Ольга (lushka) 8 27.12.11 11:03 Сейчас в теме
Спасибо, очень выручили :)
39. Виталий Фантич (Boudybuilder) 50 22.03.12 14:42 Сейчас в теме
Спасибо за работу. Будем смотреть что за зверь такой.
Ато я тут парюсь со своей разработкой.
Хотелось чтоб скачивать значения из прайса можно было в регистр НоменклатураКонтрагентов , а потом уже загружать из разных фирм прасов цены , вот так чтоб каждый день свеженькую информацию иметь .
Да и кстати прайсы то у всех с разными структурами колонок. Один тут такой хитрый прайс есть , не знаю пока как его обрабатывать , та характеристика в отдельной колонке, но не в отдельных строках , а по одной номенкдлатуре все характеристики збиты в одну яейку через запятую , а вот это уже мне не нравится...
Другое дело когда товар сразной характеристикой разложен отдкльно по строках , да еще и колонка с кодом товара есть. Но ниче. Нет ничего невозможного , будем пробовать делать.
40. Виталий Фантич (Boudybuilder) 50 22.03.12 14:42 Сейчас в теме
(Спасибо за работу. Будем смотреть что за зверь такой.
Ато я тут парюсь со своей разработкой.
Хотелось чтоб скачивать значения из прайса можно было в регистр НоменклатураКонтрагентов , а потом уже загружать из разных фирм прасов цены , вот так чтоб каждый день свеженькую информацию иметь .
Да и кстати прайсы то у всех с разными структурами колонок. Один тут такой хитрый прайс есть , не знаю пока как его обрабатывать , та характеристика в отдельной колонке, но не в отдельных строках , а по одной номенкдлатуре все характеристики збиты в одну яейку через запятую , а вот это уже мне не нравится...
Другое дело когда товар сразной характеристикой разложен отдкльно по строках , да еще и колонка с кодом товара есть. Но ниче. Нет ничего невозможного , будем пробовать делать
Шёпот теней; +1 Ответить 1
41. Александр Шишкин (Шёпот теней) 1678 22.03.12 22:54 Сейчас в теме
42. Семён Павлюков (7OH) 29 03.12.13 18:31 Сейчас в теме
А не подскажете пример, такой же, но с возможностью редактировать загруженное.
Загрузить на чтение у меня и так получилось.
При программном создании колонки - получается только читать.
43. Александр Шишкин (Шёпот теней) 1678 04.12.13 09:00 Сейчас в теме
(42) для возможности непосредственного редактирования надо указать ТИП колонок таблицы ... вот ...